annotate level1/modules/boot_wd1002.asm @ 2254:254f75634e96

Use IntMasks instead of $50
author boisy
date Sun, 27 Dec 2009 03:34:22 +0000
parents d669aab7d6d8
children e0614e08fa5e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1187
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
1 ********************************************************************
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
2 * Boot - Eliminator WD1002-05 Boot Module
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
3 *
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
4 * $Id$
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
5 *
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
6 * WD 1002-05 OS-9 Boot Subroutine (called by OS9p1)
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
7 * Copyright 1988, 1989 Bruce Isted
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
8 * All Rights Reserved
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
9 *
1287
10957d54bf16 Made all modules rev 0
boisy
parents: 1187
diff changeset
10 * Edt/Rev YYYY/MM/DD Modified by
10957d54bf16 Made all modules rev 0
boisy
parents: 1187
diff changeset
11 * Comment
1187
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
12 * ------------------------------------------------------------------
1287
10957d54bf16 Made all modules rev 0
boisy
parents: 1187
diff changeset
13 * 2 ????/??/?? Bruce Isted
10957d54bf16 Made all modules rev 0
boisy
parents: 1187
diff changeset
14 * Created.
1187
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
15
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
16 nam Boot
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
17 ttl Eliminator WD1002-05 Boot Module
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
18
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
19 * These equates should be set before assembly:
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
20 FDStep equ $09 see Step Rate Table
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
21 HDStep equ $0F see step rate table
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
22
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
23 *Step Rate Table:
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
24 *+------------------+------------------+------------------+------------------+
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
25 *! Value=FD/HD Rate ! Value=FD/HD Rate ! Value=FD/HD Rate ! Value=FD/HD Rate !
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
26 *+------------------+------------------+------------------+------------------+
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
27 *! $00=40mS/7.5mS ! $04=16mS/5.5mS ! $08=08mS/3.5mS ! $0C=03mS/1.5mS !
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
28 *! $01=25mS/7.0mS ! $05=14mS/5.0mS ! $09=06mS/3.0mS ! $0D=02mS/1.0mS !
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
29 *! $02=20mS/6.5mS ! $06=12mS/4.5mS ! $0A=05mS/2.5mS ! $0E=01mS/0.5mS !
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
30 *! $03=18mS/6.0mS ! $07=10mS/4.0mS ! $0B=04mS/2.0mS ! $0F=15uS/ 35uS !
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
31 *+------------------+------------------+------------------+------------------+
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
32
1287
10957d54bf16 Made all modules rev 0
boisy
parents: 1187
diff changeset
33 IFP1
1187
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
34 use defsfile
1287
10957d54bf16 Made all modules rev 0
boisy
parents: 1187
diff changeset
35 ENDC
1187
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
36
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
37 * These equates should not have to be changed:
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
38 BEdtn equ 2
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
39 BVrsn equ 1
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
40 MaxCyls equ 1024 maximum cylinders supported
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
41 MaxHeads equ 16 maximum heads supported
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
42 MaxSctrs equ 64 maximum sectors per track supported
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
43 PhysDrv0 equ %10000000 SDH register mask for HD0
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
44 PhysDrv1 equ %10001000 SDH register mask for HD1
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
45 PhysDrv2 equ %10010000 SDH register mask for HD2
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
46 PhysDrv3 equ %00011000 SDH register mask for FD0
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
47 PhysDrv4 equ %00011010 SDH register mask for FD1
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
48 PhysDrv5 equ %00011100 SDH register mask for FD2
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
49 PhysDrv6 equ %00011110 SDH register mask for FD3
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
50 ReadSctr equ %00100000 read sector command
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
51 Restore equ %00010000 base restore command
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
52 SelfTest equ %10010000 WD 1002-05 diagnostic test command
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
53
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
54 * HCA memory map:
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
55 org 0
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
56 WDData rmb 2 WD 1002-05 sector buffer/task files
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
57 rmb 2 reserved - do not use
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
58 PA equ . PIA PA offset
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
59 DDRA rmb 1 PIA DDRA offset
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
60 CRA rmb 1 PIA CRA offset
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
61 PB equ . PIA PB offset
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
62 DDRB rmb 1 PIA DDRB offset
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
63 CRB rmb 1 PIA CRB offset
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
64
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
65 * WD 1002-05 register definitions:
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
66 org 0
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
67 WDBuff rmb 1 WD 1002-05 sector buffer address
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
68 ErrReg equ . error register address (read)
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
69 WPCReg rmb 1 write precomp register address (write)
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
70 SctrCnt rmb 1 sector count register address
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
71 SctrReg rmb 1 sector number register address
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
72 CylLow rmb 1 cylinder LSB register address
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
73 CylHigh rmb 1 cylinder MSB register address
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
74 SDHReg rmb 1 Size/Drive/Head register address
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
75 StatReg equ . status register address (read)
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
76 CmdReg rmb 1 command register address (write)
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
77
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
78 org 0
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
79 U.BSZ rmb 2 boot file size
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
80 U.BSct rmb 1 number of sectors in boot file
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
81 U.BT rmb 3 boot file start LSN
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
82 U.BtStrt rmb 2 boot file start address
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
83 U.CrtCyl rmb 2 current cylinder number
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
84 U.CrtSct rmb 1 current sector number
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
85 U.CrtSid rmb 1 current side (head) number
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
86 U.Restor rmb 1 restore command incl. step rate code
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
87 U.SDH rmb 1 base WD Size/Drive/Head register copy
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
88 U.Sides rmb 1 number of disk sides (heads)
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
89 U.SPC rmb 2 sectors per cylinder
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
90 U.SPT rmb 2 sectors per track
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
91 U.StSctr rmb 1 start sector number (HD=0, FD=1)
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
92 BootMem equ .
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
93
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
94 mod BEnd,BNam,Systm+Objct,ReEnt+BVrsn,BExec,$00
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
95 BNam fcs "Boot"
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
96 fcb BEdtn edition number
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
97
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
98 * base SDH register table
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
99 SDHTable equ *
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
100 fcb PhysDrv0,PhysDrv1,PhysDrv2 base SDH for hard drives
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
101 fcb PhysDrv3,PhysDrv4,PhysDrv5,PhysDrv6 base SDH for floppys
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
102 ***
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
103 * Boot subroutine module
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
104 *
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
105 * INPUT: none
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
106 *
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
107 * OUTPUT: [D]=size of bootstrap file
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
108 * [X]=start address of bootstrap file in memory
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
109 * y,u registers altered
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
110 *
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
111 * ERROR OUTPUT: [CC]=carry set
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
112 * [B]=error code
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
113 BExec ldy <D.WDAddr get HCA base address (set by auto-boot EPROM)
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
114 cmpy #$FF40 base address too low?
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
115 blo UnitErr yes, go report error...
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
116 cmpy #$FF7F base address too high?
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
117 bhi UnitErr yes, go report error...
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
118 lda <D.WDBtDr get boot drive number (set by auto-boot EPROM
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
119 cmpa #$07 legal drive number?
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
120 blo InitPIA yes, go initialize PIA...
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
121 UnitErr ldb #E$Unit
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
122 coma
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
123 rts
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
124
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
125 DumpRead clr PB,y set WD address to sector buffer
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
126 DumpR0 lda WDData,y get a byte from WD sector buffer
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
127 decb done yet?
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
128 bne DumpR0 no, go dump another byte
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
129 rts
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
130 LSN0Info ldb #DD.FMT load number of bytes to dump
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
131 bsr DumpRead go dump LSN0 up to DD.FMT
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
132 lda WDData,y get DD.FMT (disk density, sides)
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
133 anda #$01 mask out all but disk sides bit
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
134 inca correction to bit coding
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
135 sta U.Sides,u save disk sides (not valid if HD > 2 heads)
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
136 ldd WDData,y get DD.SPT (sectors per track)
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
137 std U.SPT,u
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
138 ldb #DD.BT-DD.RES load number of bytes to dump
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
139 bsr DumpRead go dump LSN0 from DD.RES to DD.BT
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
140 lda WDData,y get DD.BT (boot file start LSN) MSB
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
141 sta U.BT,u
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
142 ldd WDData,y get DD.BT (boot file start LSN) LSBs
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
143 std U.BT+1,u
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
144 ldd WDData,y get DD.BSZ (boot file size)
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
145 std U.BSZ,u
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
146 ldb U.StSctr,u floppy drive? (start sector = 1)
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
147 bne GotInfo yes, sides info OK, go return
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
148 ldb #DD.OPT+(PD.SID-PD.OPT)-DD.DAT load number of bytes to dump
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
149 bsr DumpRead go dump LSN0 from DD.DAT to number of sides in option table
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
150 lda WDData,y get number of sides from DD.OPT section
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
151 sta U.Sides,u
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
152 GotInfo rts
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
153
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
154 InitPIA clr CRA,y enable PIA DDRA
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
155 ldd #$033E [A]=DDRA: PA bits 7-2 = inputs, bits 1-0 = outputs
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
156 std DDRA,y [B]=CRA: PIA CA2 out high, PA slct, CA1 low to high, no IRQs
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
157 clr CRB,y enable PIA DDRB
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
158 lda #$FF [A]=DDRB: PB bits 7-0 all outputs
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
159 std DDRB,y [B]=CRB: PIA CB2 out high, PB slct, CB1 low to high, no IRQs
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
160 leas -BootMem,s open up some space for variables
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
161 leau ,s point [U] to start of variables
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
162 ldb #BootMem number of bytes to clear
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
163 leax ,u point [X] to start of variables
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
164 ClrLoop clr ,x+ initialize a byte to 0
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
165 decb done yet?
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
166 bne ClrLoop no, go clear another byte
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
167 lda #SelfTest WD 1002-05 internal diagnostic command
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
168 lbsr CmdUpdat go issue WD command, ensure everything is ready...
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
169 bcs ReadErr error, go report it...
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
170 lda #Restore!($0F&^HDStep) default to Restore with HD step rate
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
171 ldb <D.WDBtDr get boot drive number
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
172 cmpb #$03 hard drive?
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
173 blo SaveRstr yes, go save HD Restore command...
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
174 inc U.StSctr,u set start sector to 1 for floppy disks
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
175 lda #Restore!($0F&^FDStep) get Restore with FD step rate
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
176 SaveRstr sta U.Restor,u
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
177 leax SDHTable,pc
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
178 lda b,x get base SDH register
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
179 sta U.SDH,u save it...
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
180 * restore head to track 0
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
181 lbsr SetupTF go update WD task files (except command)
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
182 lda U.Restor,u load WD restore command code
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
183 lbsr CmdUpdat go issue WD command
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
184 bcs ReadErr error, go report it...
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
185 * read cylinder 0, head 0, first sector
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
186 lbsr GetSctr go set up, issue read command
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
187 bcs ReadErr error, go report it...
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
188 bsr LSN0Info go get disk info from LSN0
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
189 ldd U.BSZ,u get boot file size/cylinder offset number
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
190 bne ChkInfo must be boot file size, go check other LSN0 info...
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
191 ldd U.BT+1,u get offset cylinder number
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
192 beq ReadErr must not be boot disk, go report error...
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
193 cmpd #MaxCyls offset cylinder number OK?
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
194 bhs ReadErr no, go return error...
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
195 std U.CrtCyl,u save offset cylinder
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
196 * read offset cylinder, head 0, first sector
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
197 lbsr GetSctr go set up, issue read command
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
198 bcs ReadErr error, go exit...
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
199 lbsr LSN0Info go get disk info from offset LSN0
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
200 ldd U.BSZ,u get boot file size
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
201 beq ReadErr must not be boot disk, go report error...
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
202 * check LSN0 info
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
203 ChkInfo ldd U.SPT,u get sectors per track
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
204 beq ReadErr 0 sectors per track, go return error
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
205 cmpd #MaxSctrs sectors per track OK?
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
206 bhi ReadErr no, go return error
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
207 lda U.Sides,u get disk sides (heads)
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
208 beq ReadErr 0 sides, go return error
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
209 cmpa #MaxHeads number of heads OK?
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
210 bhi ReadErr no, go return error
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
211 mul calculate sectors per cylinder
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
212 std U.SPC,u save sectors per cylinder
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
213 ldd U.BSZ,u get boot file size
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
214 addd #$00FF round up to even sector...
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
215 sta U.BSct,u save number of sectors in boot file
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
216 * calculate boot file start cylinder, head, & sector
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
217 ldd U.BT+1,u get boot file LSN LSBs
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
218 ldx U.CrtCyl,u get current (offset) cylinder number
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
219 CylLoop subd U.SPC,u subtract sectors/cylinder
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
220 blo ChkBtMSB [D] underflow, go check boot file LSN MSB
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
221 CylLoop0 leax 1,x increment current cylinder number
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
222 bne CylLoop no overflow, go do another subtraction
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
223 ReadErr ldb #E$Read
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
224 coma set Carry for error
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
225 leas BootMem,s restore stack pointer
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
226 rts
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
227 ChkBtMSB tst U.BT,u boot file LSN MSB = 0?
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
228 beq GotCyl yes, go determine head number
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
229 dec U.BT,u decrement boot file LSN MSB
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
230 bra CylLoop0 go on...
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
231 GotCyl addd U.SPC,u restore sector number
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
232 stx U.CrtCyl,u save current cylinder number
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
233 TrkLoop subd U.SPT,u subtract sectors/track
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
234 blo GotSide [D] underflow, go save current sector number
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
235 inc U.CrtSid,u increment current side number
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
236 bra TrkLoop go do another subtraction
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
237 GotSide addd U.SPT,u restore sector number
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
238 stb U.CrtSct,u save it
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
239 * request boot file memory
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
240 pshs u save data pointer
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
241 ldd U.BSZ,u get boot file size
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
242 os9 F$SRqMem
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
243 tfr u,x move start address into [X]
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
244 puls u recover data pointer
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
245 bcs BtExit0 go return F$SRqMem error
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
246 stx U.BtStrt,u save boot file start address
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
247 ldd U.CrtCyl,u get cylinder number
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
248 bra ChkCyl go check cylinder & get first sector
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
249
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
250 * load boot file into memory
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
251 BootLoad inc U.CrtSct,u move on to next sector
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
252 lda U.SPT+1,u get sectors per track LSB (MSB is always 0)
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
253 cmpa U.CrtSct,u done track?
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
254 bhi LoadSctr no, go get sector
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
255 clr U.CrtSct,u reset current sector number to 0
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
256 inc U.CrtSid,u move on to next side
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
257 lda U.CrtSid,u get side number
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
258 cmpa U.Sides,u done cylinder?
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
259 blo LoadSctr no, go get sector
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
260 clr U.CrtSid,u reset side number to 0
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
261 ldd U.CrtCyl,u get cylinder number
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
262 addd #1 move on to next cylinder
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
263 std U.CrtCyl,u save cylinder number
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
264 ChkCyl cmpd #MaxCyls cylinder number OK?
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
265 bhs ReadErr no, go return error
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
266 LoadSctr bsr GetSctr go get current sector from WD 1002-05
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
267 bcs ReadErr error, go exit
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
268 clrb transfer 256 bytes
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
269 stb PB,y set WD sector buffer address
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
270 ReadLoop lda WDData,y get byte from WD 1002-05
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
271 sta ,x+ save byte to buffer
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
272 decb done yet?
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
273 bne ReadLoop no, go get another byte
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
274 dec U.BSct,u count down boot file sectors remaining
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
275 bne BootLoad
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
276 clrb clear carry
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
277 ldd U.BSZ,u get boot file size
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
278 ldx U.BtStrt,u get boot file start address
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
279 BtExit0 leas BootMem,s restore stack pointer
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
280 rts
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
281
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
282 GetSctr bsr SetupTF go set up WD task files (except command)
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
283 lda #ReadSctr load WD read sector command code
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
284 CmdUpdat ldb #CmdReg load WD command register address
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
285 bsr TFUpdat go issue command...
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
286 BusyWait ldb #StatReg
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
287 stb PB,y set WD status register address
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
288 BusyW0 ldb WDData,y get WD 1002-05 status
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
289 bitb #%00000010 valid data? (WD 1002-05 powered & connected?)
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
290 bne BWErr no, go report error...
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
291 tstb ensure [CC] sign flag is current
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
292 bmi BusyW0 yes, go check again
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
293 ldb WDData,y get valid controller status
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
294 rorb rotate error bit into carry
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
295 bcc NoError
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
296 ldb #ErrReg
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
297 stb PB,y set WD error register address
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
298 ldb WDData,y get error register contents
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
299 bne BWErr
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
300 NoError clrb
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
301 rts
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
302 BWErr comb error, set [CC] Carry...
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
303 rts
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
304
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
305 SetupTF ldd #$01*256+SctrCnt single sector commands only
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
306 bsr TFUpdat
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
307 lda U.CrtCyl,u get current cylinder number MSB
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
308 ldb #CylHigh
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
309 bsr TFUpdat
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
310 lda U.CrtCyl+1,u get current cylinder number LSB
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
311 ldb #CylLow
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
312 bsr TFUpdat
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
313 lda U.CrtSct,u get current sector number
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
314 adda U.StSctr,u add offset...
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
315 ldb #SctrReg
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
316 bsr TFUpdat
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
317 clrb default extended head disabled
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
318 lda U.CrtSid,u get current side (head) number
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
319 cmpa #$08 extended head?
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
320 blo StdHead no, go on...
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
321 incb set enable code
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
322 anda #$07 mask out all but standard head number
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
323 StdHead stb PA,y set extended head enable/disable
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
324 ora U.SDH,u mask in base SDH copy
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
325 ldb #SDHReg
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
326 TfUpdat stb PB,y set WD register address
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
327 sta WDData,y write data to WD 1002-05
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
328 rts
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
329
1287
10957d54bf16 Made all modules rev 0
boisy
parents: 1187
diff changeset
330 IFGT Level-1
10957d54bf16 Made all modules rev 0
boisy
parents: 1187
diff changeset
331 * Pad Boot module out to $01D0 exactly
1187
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
332 Pad fill $39,$1D0-3-*
1287
10957d54bf16 Made all modules rev 0
boisy
parents: 1187
diff changeset
333 ENDC
1187
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
334
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
335 emod
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
336 BEnd equ *
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
337 end
df263e490f85 New booters added (moved from 3rdparty/booters)
boisy
parents:
diff changeset
338