Buffer Logical Sector
Physical ! Logical sector Physical
(True Apple
IIe)
! (Applewin)
$B600 : T$00 S$0E
T$00 S$02 ! T$00 S$07 T$00 S$01
$B700 : T$00 S$0D
T$00 S$04 ! T$00 S$0E T$00 S$02
$B800 : T$00 S$0C
T$00 S$06 ! T$00 S$06 T$00 S$03
$B900 : T$00 S$0B
T$00 S$08 ! T$00 S$0D T$00 S$04
$BA00 : T$00 S$0A
T$00 S$0A ! T$00 S$05 T$00 S$05
$BB00 : T$00 S$09
T$00 S$0C ! T$00 S$0C T$00 S$06
$BC00 : T$00 S$08
T$00 S$0E ! T$00 S$04 T$00 S$07
$BD00 : T$00 S$00
T$00 S$00 ! T$00 S$0B T$00 S$08
->pas de
2
->pas de 1
Addressing |Mnemonics |Opc|Sz | n
------------|-----------|---|---|---
Zero Page,X |DOP arg,X |$54| 2 | 4
|
|
|
|
|
|
|
|
|
File: Demo_Flobynoid_Src.dsk
Disk: DOS 3.3 Volume 254 (140KB)
Name
Type Auxtyp Modified
Format Length
------------------------------------------------------------------------------
DISK*
BAS $0801 [No
Date]
DOS 119
T.FLOBYDEMO.BOOT1.NEW
TXT $0000 [No
Date]
DOS 2466
FLOBYDEMO.BOOT1.NEW
BIN $0800 [No
Date]
DOS 256
INSTALL.SPEEDY
BAS $0801 [No
Date]
DOS 1560
BOOT1.ORIG
BIN $0800 [No
Date]
DOS 256
BOOT2.ORIG
BIN $B600 [No
Date]
DOS 2048
BOOT1
BIN $0800 [No
Date]
DOS 256
T.BOOT1
TXT $0000 [No
Date]
DOS 3627
T.BOOT2
TXT $0000 [No
Date]
DOS 12049
BOOT2
BIN $B600 [No
Date]
DOS 2048
DRIVER.ORIG
BIN $BF00 [No
Date]
DOS 256
T.DRIVER
TXT $0000 [No
Date]
DOS 3046
DRIVER
BIN $BF00 [No
Date]
DOS 256
------------------------------------------------------------------------------
Lien | Référence | Source |
Boot 1 original. | ACS. | |
Boot 2 original (Fast Load). | ACS. | |
Driver original. | ACS. | |
Nouveau boot 1. | Deckard. |
:asm
1
2
; LST OFF
3
ORG $0800
4
5 ********************************
6
*
*
7 * BOOT 1 FLOBYNOID
DEMO *
8 *
(C)1987 SSS *
9 * SOURCE BY
DECKARD *
10
*
*
11 ********************************
12
13 * Une fois de plus ACS/SSS a utilisé le softswitch
14 * $C080 au lieu de $C08C pour remplir le latch.
15 * C'est quasiment une seconde signature!!!
16
17 * Sur un vrai Apple II, ce n'est pas génant de
skipper
18 * la recherche du champ addresse au niveau du boot1.
19 * Voila ce qui se passe:
20 *
21 * Chargement de 8 secteurs.
22 *
23 * Buffer T/S
logique T/S physique
24 * $B600-$B6FF : T$00 S$0E T$00 S$02
25 * $B700-$B7FF : T$00 S$0D T$00 S$04
26 * $B800-$B8FF : T$00 S$0C T$00 S$06
27 * $B900-$B9FF : T$00 S$0B T$00 S$08
28 * $BA00-$BAFF : T$00 S$0A T$00 S$0A
29 * $BB00-$BBFF : T$00 S$09 T$00 S$0C
30 * $BC00-$BCFF : T$00 S$08 T$00 S$0E
31 * $BD00-$BDFF : T$00 S$00 T$00 S$00
32 *
33 * Mais avec un émulateur, c'est la catastrophe
car il
34 * n'y a pas un pas de 2 pour les secteurs physiques.
35 * Bref, on charge différement et
évidemment il y a un crash.
36
37 *-------------------------------
38
39
BUFL
EQU $26 ; buffer
low chargement
40
BUFH
EQU $27 ; buffer
high chargement
41
42 H02D6
= $02D6
43 H0300
= $0300
44 RESET
= $03F2
45 H03F3
= $03F3
46 H03F4
= $03F4
47 H08FF
= $08FF
48
KEY
= $C000
49 HC00C
= $C00C
50 HC080
= $C080
51
INIT
= $FB2F
52
HOME
= $FC58
53
WAIT
= $FCA8
54 SETKBD
= $FE89
55 SETVID
= $FE93
56
57 *-------------------------------
58
0800: 01
59
DFB 1
; 1 secteur à charger
60
61 *-------------------------------
62
0801: E0 60
63
CPX #$60 ; slot*16
0803: F0 03
64
BEQ H0808 ; ok en slot 6
65
0805: 4C D1 08
66
JMP H08D1 ; msg must boot
from slot 6 et fin
67
0808: A9 B6 68
H0808
LDA #>$B600
080A: 85 27
69
STA BUFH
70
71 *-------------------------------
72 * Routine de chargement secteur
73
080C: BD 80 C0 74
H080C
LDA HC080,X ; 1er nibble header champ data
080F: 10 FB
75
BPL H080C
76
0811: 49 D5 77
H0811
EOR #$D5
0813: D0 F7
78
BNE H080C
79
0815: BD 80 C0 80
H0815
LDA HC080,X ; 2nd nibble header champ data
0818: 10 FB
81
BPL H0815
82
081A: C9 AA
83
CMP #$AA
081C: D0 F3
84
BNE H0811
85
081E: BD 80 C0 86
H081E
LDA HC080,X ; 3eme nibble header champ
data
0821: 10 FB
87
BPL H081E
88
0823: C9 AD
89
CMP #$AD
0825: D0 EA
90
BNE H0811
91
0827: A9 00
92
LDA #$00 ;
décodage 6-2
0829: A0 56
93
LDY #$56
082B: 84 3C 94
H082B
STY $3C
082D: BC 80 C0 95
H082D
LDY HC080,X ; lecture nibble data
0830: 10 FB
96
BPL H082D
97
0832: 59 D6 02
98
EOR H02D6,Y
0835: A4 3C
99
LDY $3C
0837: 88
100
DEY
0838: 99 00 03
101
STA H0300,Y
083B: D0 EE
102
BNE H082B
103
083D: 84 3C 104
H083D
STY $3C
083F: BC 80 C0 105
H083F
LDY HC080,X ; lecture nibble data
0842: 10 FB
106
BPL H083F
107
0844: 59 D6 02
108
EOR H02D6,Y
0847: A4 3C
109
LDY $3C
0849: 91 26
110
STA (BUFL),Y
084B: C8
111
INY
084C: D0 EF
112
BNE H083D
113
084E: BC 80 C0 114
H084E
LDY HC080,X ; lecture nibble checksum
0851: 10 FB
115
BPL H084E
116
0853: 59 D6 02
117
EOR H02D6,Y
0856: D0 48
118
BNE H089F+1 ; crash si différent
de 0
119
0858: A0 00
120
LDY #$00 ; integre les
2 bits dans chaque octet
085A: A2 56 121
H085A
LDX #$56
085C: CA 122
H085C
DEX
085D: 30 FB
123
BMI H085A
124
085F: B1 26
125
LDA (BUFL),Y
0861: 5E 00 03
126
LSR H0300,X
0864: 2A
127
ROL
0865: 5E 00 03
128
LSR H0300,X
0868: 2A
129
ROL
0869: EA
130
NOP
086A: EA
131
NOP
086B: 91 26
132
STA (BUFL),Y ; et rempli le buffer
résultat
086D: C8
133
INY
086E: D0 EC
134
BNE H085C
135
136 *-------------------------------
137
0870: E6 27
138
INC BUFH ; page suivante
0872: A2 60
139
LDX #$60
0874: CE FF 08
140
DEC H08FF ; un secteur de -
à charger
0877: D0 93
141
BNE H080C ; pas fini
142
143 *-------------------------------
144
0879: 20 C4 08
145
JSR H08C4 ; inits
087C: 20 2F FB
146
JSR INIT
147
087F: A9 59
148
LDA #$59 ; protection
reset disable
0881: 2C F2 03
149
BIT RESET
0884: A9 FF
150
LDA #$FF
0886: 2C F3 03
151
BIT H03F3
0889: 49 A5
152
EOR #$A5
088B: 2C F4 03
153
BIT H03F4
154
155 * Signature FLOBYNOID
156
088E: 20 58 FC
157
JSR HOME
0891: A9 DF
158
LDA #$DF
0893: A0 00
159
LDY #$00
0895: 99 0E 04 160
H0895
STA $040E,Y
0898: C8
161
INY
0899: C0 0B
162
CPY #$0B
089B: D0 F8
163
BNE H0895
164
089D: A0 00
165
LDY #$00
089F: B9 B2 08 166
H089F
LDA H08B2,Y
08A2: 99 8C 04
167
STA $048C,Y
08A5: C8
168
INY
08A6: C0 0F
169
CPY #$0F
08A8: D0 F5
170
BNE H089F
08AA: A9 00
171
LDA #$00
08AC: 20 A8 FC
172
JSR WAIT
08AF: 4C 00 B6
173
JMP $B600 ; lance boot2
174
175 *-------------------------------
176
177 * Signature
178
08B2: A8 BA 179
H08B2
ASC "(:"
08B4: 20
180
ASC ' '
08B5: 06 0C 0F
181
INV 'FLOBYNOID'
08B8: 02 19 0E 0F 09 04
08BE: 20
182
ASC ' '
08BF: BA A9
183
ASC ":)"
08C1: 00 00 00
184
HEX 000000
185
186 *-------------------------------
187
188 * Inits
189
08C4: 20 93 FE 190
H08C4
JSR SETVID
08C7: 20 89 FE
191
JSR SETKBD
08CA: 8D 00 C0
192
STA KEY
08CD: 8D 0C C0
193
STA HC00C
08D0: 60
194
RTS
195
196 *-------------------------------
197
198 * Message bloquant si pas boot depuis slot 6
199
08D1: 20 2F FB 200
H08D1
JSR INIT
08D4: 20 58 FC
201
JSR HOME
08D7: A0 00
202
LDY #$00
08D9: B9 E6 08 203
H08D9
LDA H08E6,Y
08DC: 99 00 04
204
STA $0400,Y
08DF: C8
205
INY
08E0: C0 18
206
CPY #$18
08E2: D0 F5
207
BNE H08D9
08E4: D0 FE 208
H08E4
BNE H08E4
209
08E6: A0 210
H08E6
ASC " "
08E7: 0D
211
INV 'M'
08E8: D5 D3 D4
212
ASC "UST "
08EB: A0
08EC: 02
213
INV 'B'
08ED: CF CF D4
214
ASC "OOT "
08F0: A0
08F1: 06
215
INV 'F'
08F2: D2 CF CD
216
ASC "ROM "
08F5: A0
08F6: 13
217
INV 'S'
08F7: CC CF D4
218
ASC "LOT "
08FA: A0
08FB: 13
219
INV 'S'
08FC: C9 D8 AE
220
ASC "IX."
221
222 *-------------------------------
223
08FF: 08
224
DFB 8
; nbr de secteurs à charger
225
226
SAV BOOT1
Object saved as BOOT1,A$0800,L$0100
--End assembly, 256 bytes, Errors: 0
Symbol table - alphabetical order:
BUFH
=$27
BUFL
=$26
H02D6
=$02D6
H0300 =$0300
H03F3
=$03F3
H03F4
=$03F4
H0808
=$0808
H080C =$080C
H0811
=$0811
H0815
=$0815
H081E
=$081E
H082B =$082B
H082D
=$082D
H083D
=$083D
H083F
=$083F
H084E =$084E
H085A
=$085A
H085C
=$085C
H0895
=$0895
H089F =$089F
H08B2
=$08B2
H08C4
=$08C4
H08D1
=$08D1
H08D9 =$08D9
H08E4
=$08E4
H08E6
=$08E6
H08FF
=$08FF
HC00C =$C00C
HC080
=$C080
HOME
=$FC58
INIT
=$FB2F
KEY =$C000
RESET
=$03F2
SETKBD
=$FE89
SETVID
=$FE93
WAIT =$FCA8
Symbol table - numerical order:
BUFL
=$26
BUFH
=$27
H02D6
=$02D6
H0300 =$0300
RESET
=$03F2
H03F3
=$03F3
H03F4
=$03F4
H0808 =$0808
H080C
=$080C
H0811
=$0811
H0815
=$0815
H081E =$081E
H082B
=$082B
H082D
=$082D
H083D
=$083D
H083F =$083F
H084E
=$084E
H085A
=$085A
H085C
=$085C
H0895 =$0895
H089F
=$089F
H08B2
=$08B2
H08C4
=$08C4
H08D1 =$08D1
H08D9
=$08D9
H08E4
=$08E4
H08E6
=$08E6
H08FF =$08FF
KEY
=$C000
HC00C
=$C00C
HC080
=$C080
INIT =$FB2F
HOME
=$FC58
WAIT
=$FCA8
SETKBD
=$FE89
SETVID =$FE93
:asm
1
2
; LST OFF
3
ORG $B600
4
5 ********************************
6
*
*
7 * BOOT 2 FLOBYNOID
DEMO *
8 *
(C)1987 SSS *
9 * SOURCE BY
DECKARD *
10
*
*
11 ********************************
12
13 * Adresses page 0
14
15 PTR_BUFF
EQU $00 ; et $01
: pointeur sur BUFFER
16 SLOT16
EQU $2B
17 FOUND_TRK EQU
$2D
18 H002C
EQU $002C ; store address
field
19
20 * Adresses ram
21
22 H02FF
EQU $02FF ; byte check disk
T$00 S$00
23 H0800
EQU $0800
24 H11FF
EQU $11FF
25 H1F03
EQU $1F03 ; entry point demo
26 H3D00
EQU $3D00
27 H67B0
EQU $67B0
28
29 * Adresses driver
30
31 _SAV_HGRSTAT EQU
$BF18
32 _SET_GRAPHIC EQU
$BF25
33 _SAV_BUFFER EQU
$BF45
34 _BLOADER_CHK EQU
$BF90
35 _BLOADER
EQU $BF9A
36 _BLOADERD EQU
$BF9D
37 _TXT_FLOBYA EQU
$BFE0
38 _SET_BUFFER EQU
$BFF8 ; acc=high, Y=low
39
40 * Adresses ROM
41
42
KEY
EQU $C000
43 STROBE
EQU $C010
44 BUTTN0
EQU $C061
45 BUTTN1
EQU $C062
46 HC080
EQU $C080
47 HC081
EQU $C081
48 HC089
EQU $C089
49 HC08C
EQU $C08C
50 HC08E
EQU $C08E
51 HC0E9
EQU $C0E9
52 HC0EC
EQU $C0EC ; $C08C slot 6
53
INIT
EQU $FB2F
54
HOME
EQU $FC58
55
WAIT
EQU $FCA8
56
57 *-------------------------------
58
B600: A9 00 59
HB600
LDA #$00 ; charge
driver T$00 S$0F dans $BF00
B602: 8D 4B BA
60
STA TRACK_START
B605: A9 00
61
LDA #<$BF00
B607: 8D 4D BA
62
STA BUFFERL
B60A: A9 0F
63
LDA #$0F
B60C: 8D 4C BA
64
STA SECTOR_START
B60F: A9 01
65
LDA #$01
B611: 8D 4F BA
66
STA NB_SECT
B614: A9 BF
67
LDA #>$BF00
B616: 8D 4E BA
68
STA BUFFERH
B619: A2 60
69
LDX #$60 ; slot*16
B61B: AD E9 C0
70
LDA HC0E9 ; motor on
B61E: 20 6D B6
71
JSR BLOADER0
72
B621: EA
73
NOP
B622: EA
74
NOP
B623: EA
75
NOP
76
B624: 20 01 BB
77
JSR CHECK_DISK0 ; met le bon disk
78
B627: A9 1A
79
LDA #>$1A00 ; charge la suite via le
driver
B629: A0 00
80
LDY #<$1A00
B62B: 20 F8 BF
81
JSR _SET_BUFFER
82
; image SSS + musique
B62E: A9 09
83
LDA #$09
B630: A0 0A
84
LDY #$0A
B632: A2 51
85
LDX #$51 ; secteurs
B634: 20 90 BF
86
JSR _BLOADER_CHK
87
B637: 4C 03 1F
88
JMP H1F03 ; run demo
89
B63A: 00 00 00
90
DS 8,0
B63D: 00 00 00 00 00
91
92 *-------------------------------
93
B642: A0 00 94
CLR_LINE LDY
#0
B644: A9 A0
95
LDA #" "
B646: 99 A0 05 96
HB646
STA $05A0,Y
B649: C8
97
INY
B64A: C0 29
98
CPY #41
B64C: D0 F8
99
BNE HB646
100
B64E: A9 00
101
LDA #$00
B650: 8D FF 02
102
STA H02FF
B653: 60
103
RTS
104
B654: 00 00 00
105
DS 25,0
B657: 00 00 00 00 00 00 00 00
B65F: 00 00 00 00 00 00 00 00
B667: 00 00 00 00 00 00
106
107 *===============================
108 * Chargement d'un objet
109 *===============================
110
B66D: AD 4B BA 111 BLOADER0
LDA TRACK_START
B670: C9 23
112
CMP #$23
B672: D0 05
113
BNE HB679 ; standard
114
115
; boucle jusqu'à repartir à la piste 0
B674: EE 4B BA
116
INC TRACK_START
B677: D0 F4
117
BNE BLOADER0
118
B679: 8D 51 BA 119
HB679
STA TRACK_END ; par defaut
B67C: AD 4D BA
120
LDA BUFFERL
B67F: 85 00
121
STA PTR_BUFF
B681: AD 4E BA
122
LDA BUFFERH
B684: 85 01
123
STA PTR_BUFF+1
124
B686: AD 4C BA
125
LDA SECTOR_START ; [$00,$0F]
B689: 8D 49 BA
126
STA HBA49 ; secteur
début et secteur fin sur meme piste?
B68C: 18
127
CLC
B68D: 49 0F
128
EOR #$0F
B68F: 69 01
129
ADC #$01
B691: CD 4F BA
130
CMP NB_SECT
B694: 90 10
131
BCC HB6A6 ; non
132
B696: AD 4C BA
133
LDA SECTOR_START ; on reste sur la meme piste
(TRACK_END dft)
B699: 18
134
CLC
B69A: 6D 4F BA
135
ADC NB_SECT
B69D: 38
136
SEC
B69E: E9 01
137
SBC #$01
B6A0: 8D 4A BA
138
STA SECTOR_END
B6A3: 4C D3 B9
139
JMP FLOAD_TRK
140
B6A6: A9 0F 141
HB6A6
LDA #$0F
B6A8: 8D 4A BA
142
STA SECTOR_END
B6AB: 38
143
SEC
B6AC: ED 49 BA
144
SBC HBA49
B6AF: 18
145
CLC
B6B0: 69 01
146
ADC #$01
B6B2: 18
147
CLC
B6B3: 8D 50 BA
148
STA HBA50
B6B6: 6D 4E BA
149
ADC BUFFERH
B6B9: 8D 4E BA
150
STA BUFFERH
151
B6BC: AD 4F BA
152
LDA NB_SECT
B6BF: 38
153
SEC
B6C0: ED 50 BA
154
SBC HBA50
B6C3: 8D 4F BA
155
STA NB_SECT
B6C6: 20 D3 B9
156
JSR FLOAD_TRK
157
B6C9: EE 4B BA
158
INC TRACK_START
B6CC: A9 00
159
LDA #$00
B6CE: 8D 4C BA
160
STA SECTOR_START
B6D1: F0 9A
161
BEQ BLOADER0 ; toujours
162
B6D3: 38 163
HB6D3
SEC
B6D4: 60
164
RTS
165
166 *===============================
167 * Lecture champ data+denibblizing
168 *===============================
169
B6D5: A5 00 170
RDSECDTA LDA
PTR_BUFF
B6D7: A4 01
171
LDY PTR_BUFF+1
B6D9: 8D 73 B7
172
STA HB772+1
B6DC: 8C 74 B7
173
STY HB772+2
B6DF: 38
174
SEC
B6E0: E9 54
175
SBC #$54
B6E2: B0 02
176
BCS HB6E6
177
B6E4: 88
178
DEY
179
B6E5: 38
180
SEC
B6E6: 8D 5B B7 181
HB6E6
STA HB75A+1
B6E9: 8C 5C B7
182
STY HB75A+2
B6EC: E9 57
183
SBC #$57
B6EE: B0 01
184
BCS HB6F1
185
B6F0: 88
186
DEY
B6F1: 8D 34 B7 187
HB6F1
STA HB733+1
B6F4: 8C 35 B7
188
STY HB733+2
B6F7: A0 20
189
LDY #$20
B6F9: 88 190
HB6F9
DEY
B6FA: F0 D7
191
BEQ HB6D3
192
193 *-------------------------------
194 * Lecture champ data
195
B6FC: AD EC C0 196
HB6FC
LDA HC0EC ; 1er header champ
data
B6FF: 10 FB
197
BPL HB6FC
198
B701: 49 D5 199
HB701
EOR #$D5
B703: D0 F4
200
BNE HB6F9
201
B705: EA
202
NOP
203
B706: AD EC C0 204
HB706
LDA HC0EC ; 2nd header champ
data
B709: 10 FB
205
BPL HB706
206
B70B: C9 AA
207
CMP #$AA
B70D: D0 F2
208
BNE HB701
209
B70F: EA
210
NOP
211
B710: AD EC C0 212
HB710
LDA HC0EC ; 3eme header champ
data
B713: 10 FB
213
BPL HB710
214
B715: C9 AD
215
CMP #$AD
B717: D0 E8
216
BNE HB701
217
218 * Lecture groupe nibbles (complement 6-2)
219
B719: A0 AA
220
LDY #$AA ; Y [$AA,$FF]
B71B: A9 00
221
LDA #$00 ; init checksum
B71D: 85 26 222
HB71D
STA $26
223
B71F: AE EC C0 224
HB71F
LDX HC0EC ; lecture nibble
data
B722: 10 FB
225
BPL HB71F
226
; X [$96,$FF]
B724: BD D3 B7
227
LDA HB869-$96,X
B727: 99 00 BD
228
STA HBD00,Y
B72A: 45 26
229
EOR $26
B72C: C8
230
INY
B72D: D0 EE
231
BNE HB71D
232
233 * Lecture groupe nibbles (part 1)
234
B72F: A0 AA
235
LDY #$AA
B731: D0 03
236
BNE HB736
237
B733: 99 FF FF 238
HB733
STA $FFFF,Y
239
B736: AE EC C0 240
HB736
LDX HC0EC ; lecture nibble
data
B739: 10 FB
241
BPL HB736
242
B73B: 5D D3 B7
243
EOR HB869-$96,X
B73E: BE 00 BD
244
LDX HBD00,Y
B741: 5D D3 B8
245
EOR HB8D3,X
B744: C8
246
INY
B745: D0 EC
247
BNE HB733
248
B747: 48
249
PHA
; on finira plus tard (timing problem)
B748: 29 FC
250
AND #$FC
251
252 * Lecture groupe nibble (part 2)
253
B74A: A0 AA
254
LDY #$AA
255
B74C: AE EC C0 256
HB74C
LDX HC0EC ; lecture nibble
data
B74F: 10 FB
257
BPL HB74C
258
B751: 5D D3 B7
259
EOR HB869-$96,X
B754: BE 00 BD
260
LDX HBD00,Y
B757: 5D D4 B8
261
EOR HB8D3+1,X
B75A: 99 FF FF 262
HB75A
STA $FFFF,Y
B75D: C8
263
INY
B75E: D0 EC
264
BNE HB74C
265
266 * Lecture groupe nibble (part 3)
267
B760: AE EC C0 268
HB760
LDX HC0EC
B763: 10 FB
269
BPL HB760
270
B765: 29 FC
271
AND #$FC
272
B767: A0 AC
273
LDY #$AC
B769: 5D D3 B7 274
HB769
EOR HB869-$96,X
B76C: BE FE BC
275
LDX HBCFE,Y
B76F: 5D D5 B8
276
EOR HB8D3+2,X
B772: 99 FF FF 277
HB772
STA $FFFF,Y
278
B775: AE EC C0 279
HB775
LDX HC0EC
B778: 10 FB
280
BPL HB775
281
B77A: C8
282
INY
B77B: D0 EC
283
BNE HB769
284
; last read=checksum
B77D: 29 FC
285
AND #$FC
B77F: 5D D3 B7
286
EOR HB869-$96,X
B782: A6 2B
287
LDX SLOT16
B784: A8
288
TAY
B785: D0 09
289
BNE HB790 ; err checksum
290
B787: AD EC C0 291
HB787
LDA HC0EC ; 1er trailer champ
data
B78A: 10 FB
292
BPL HB787
293
B78C: C9 DE
294
CMP #$DE
B78E: F0 02
295
BEQ HB792
296
B790: 38 297
HB790
SEC
; err
B791: 24
298
DFB $24 ; BIT
B792: 18 299
HB792
CLC
; no err
300
B793: 68
301
PLA
; sauve octet laissé en plan faute de timing
B794: A0 55
302
LDY #$55
B796: 91 00
303
STA (PTR_BUFF),Y
B798: 60
304
RTS
305
306 *-------------------------------
307
B799: 00 308
CURR_HTRACK DFB
0 ; current half track
B79A: 00 309
CPT_ERR DFB
0 ; compteur err track
310
311 *===============================
312 * Avance ou recule le bras du drive
313 *===============================
314
315 * In : acc = wanted dos 3.3 track
316
B79B: 0A 317
MOVE_ARM
ASL
; *2 pour half-track
B79C: 85 26
318
STA $26
B79E: AD 99 B7 319
HB79E
LDA CURR_HTRACK
B7A1: 85 27
320
STA $27
B7A3: 38
321
SEC
B7A4: E5 26
322
SBC $26
B7A6: F0 2F
323
BEQ HB7D7 ; on est
déja sur la bonne piste
324
B7A8: B0 05
325
BCS HB7AF ; il faut avancer
326
B7AA: EE 99 B7
327
INC CURR_HTRACK
B7AD: 90 03
328
BCC HB7B2
329
B7AF: CE 99 B7 330
HB7AF
DEC CURR_HTRACK
331
B7B2: 20 CB B7 332
HB7B2
JSR HB7CB ; first part
B7B5: 20 D8 B7
333
JSR HB7D8 ; delai
334
B7B8: A5 27
335
LDA $27
B7BA: 29 03
336
AND #$03
B7BC: 0A
337
ASL
B7BD: 09 60
338
ORA #$60
B7BF: A8
339
TAY
B7C0: B9 80 C0
340
LDA HC080,Y
B7C3: 20 D8 B7
341
JSR HB7D8 ; delai
B7C6: F0 D6
342
BEQ HB79E
343
B7C8: 20 D8 B7
344
JSR HB7D8 ; delai
345
346
; second part
B7CB: AD 99 B7 347
HB7CB
LDA CURR_HTRACK
B7CE: 29 03
348
AND #$03
B7D0: 0A
349
ASL
B7D1: 09 60
350
ORA #$60
B7D3: A8
351
TAY
B7D4: B9 81 C0
352
LDA HC081,Y
B7D7: 60 353
HB7D7
RTS
354
355 * Délai attente déplacement bras
356
B7D8: A9 28 357
HB7D8
LDA #$28
B7DA: 38
358
SEC
B7DB: 48 359
HB7DB
PHA
B7DC: E9 01 360
HB7DC
SBC #$01
B7DE: D0 FC
361
BNE HB7DC
362
B7E0: 68
363
PLA
B7E1: E9 01
364
SBC #$01
B7E3: D0 F6
365
BNE HB7DB
B7E5: 60
366
RTS
367
368 *-------------------------------
369 * Erreur: impossible de trouver champ adresse
370
B7E6: 38 371
HB7E6
SEC
B7E7: 60
372
RTS
373
374 *===============================
375 * Recherche champ adresse
376 *===============================
377
378 * Out: carry = 1 champ adresse introuvable
379 *
380 * carry = 0 no err
381 * $2C = volume lu
382 * $2D = track lue
383 * $2E = secteur lu
384 * $2F = checksum lu
385
B7E8: A0 FC 386
RDADDRF LDY
#$FC ; init nbr d'essai
B7EA: 84 26
387
STY $26
B7EC: C8 388
HB7EC
INY
B7ED: D0 04
389
BNE HB7F3
390
B7EF: E6 26
391
INC $26
B7F1: F0 F3
392
BEQ HB7E6
393
394 *-------------------------------
395 * Lecture champ adresse
396
B7F3: AD EC C0 397
HB7F3
LDA HC0EC ; 1er header champ
adresse
B7F6: 10 FB
398
BPL HB7F3
399
B7F8: C9 D5 400
HB7F8
CMP #$D5
B7FA: D0 F0
401
BNE HB7EC
402
B7FC: EA
403
NOP
404
B7FD: AD EC C0 405
HB7FD
LDA HC0EC ; 2nd header champ
adresse
B800: 10 FB
406
BPL HB7FD
407
B802: C9 AA
408
CMP #$AA
B804: D0 F2
409
BNE HB7F8
410
B806: A0 03
411
LDY #$03 ; lecture 2*4
nibbles en 4-4:
412
; volume/track/secteur/checksum
413
B808: AD EC C0 414
HB808
LDA HC0EC ; 3eme header champ
adresse
B80B: 10 FB
415
BPL HB808
416
B80D: C9 96
417
CMP #$96
B80F: D0 E7
418
BNE HB7F8
419
B811: A9 00
420
LDA #$00
B813: 85 27 421
HB813
STA $27
422
B815: AD EC C0 423
HB815
LDA HC0EC
B818: 10 FB
424
BPL HB815
425
B81A: 2A
426
ROL
B81B: 85 26
427
STA $26
428
B81D: AD EC C0 429
HB81D
LDA HC0EC
B820: 10 FB
430
BPL HB81D
431
B822: 25 26
432
AND $26
B824: 99 2C 00
433
STA H002C,Y ; $2C=volume, $2D=track,
$2E=sector
B827: 45 27
434
EOR $27 ;
$2f=checksum
B829: 88
435
DEY
B82A: 10 E7
436
BPL HB813
437
B82C: A8
438
TAY
B82D: D0 B7
439
BNE HB7E6
440
B82F: AD EC C0 441
HB82F
LDA HC0EC ; lecture 1er
trailer champ adresse
B832: 10 FB
442
BPL HB82F
443
B834: C9 DE
444
CMP #$DE
B836: D0 AE 445
HB836
BNE HB7E6 ; error
446
B838: EA
447
NOP
448
B839: AD EC C0 449
HB839
LDA HC0EC ; lecture 2nd
trailer champ adresse
B83C: 10 FB
450
BPL HB839
451
B83E: C9 AA
452
CMP #$AA
B840: D0 A4
453
BNE HB7E6 ; error
454
B842: 18
455
CLC
; ok found
B843: 60
456
RTS
457
458 *-------------------------------
459
460
HB844
B844: FF FF FF
461
HEX FFFFFFDFAAD5AAD5AAD5FFFFFFFFFF00
B847: DF AA D5 AA D5 AA D5 FF
B84F: FF FF FF FF 00
B854: 00 00 00
462
HEX 00000000000000000000000000000000
B857: 00 00 00 00 00 00 00 00
B85F: 00 00 00 00 00
B864: 00 00 00
463
HEX 0000000000
B867: 00 00
464
B869: 00 04 98 465
HB869
HEX 00049899080C9C101418A0A1A2A3A4A5
B86C: 99 08 0C 9C 10 14 18 A0
B874: A1 A2 A3 A4 A5
B879: 1C 20 A8
466
HEX 1C20A8A9AA24282C3034B0B1383C4044
B87C: A9 AA 24 28 2C 30 34 B0
B884: B1 38 3C 40 44
B889: 48 4C B8
467
HEX 484CB85054585C606468C0C1C2C3C4C5
B88C: 50 54 58 5C 60 64 68 C0
B894: C1 C2 C3 C4 C5
B899: C6 C7 C8
468
HEX C6C7C8C9CA6CCC707478D0D1D27CD4D5
B89C: C9 CA 6C CC 70 74 78 D0
B8A4: D1 D2 7C D4 D5
B8A9: 80 84 D8
469
HEX 8084D8888C9094989CA0E0E1E2E3E4A4
B8AC: 88 8C 90 94 98 9C A0 E0
B8B4: E1 E2 E3 E4 A4
B8B9: A8 AC E8
470
HEX A8ACE8B0B4B8BCC0C4C8F0
B8BC: B0 B4 B8 BC C0 C4 C8 F0
B8C4: F1 CC D0
471
HEX F1CCD0D4D8DCE0F8E4E8ECF0F4F8FC
B8C7: D4 D8 DC E0 F8 E4 E8 EC
B8CF: F0 F4 F8 FC
472
B8D3: 00 00 00 473
HB8D3
HEX 00000096020000970100009A0300009B
B8D6: 96 02 00 00 97 01 00 00
B8DE: 9A 03 00 00 9B
B8E3: 00 02 00
474
HEX 0002009D0202009E0102009F030200A6
B8E6: 9D 02 02 00 9E 01 02 00
B8EE: 9F 03 02 00 A6
B8F3: 00 01 00
475
HEX 000100A7020100AB010100AC030100AD
B8F6: A7 02 01 00 AB 01 01 00
B8FE: AC 03 01 00 AD
B903: 00 03 00
476
HEX 000300AE020300AF010300B2030300B3
B906: AE 02 03 00 AF 01 03 00
B90E: B2 03 03 00 B3
B913: 00 00 02
477
HEX 000002B4020002B5010002B6030002B7
B916: B4 02 00 02 B5 01 00 02
B91E: B6 03 00 02 B7
B923: 00 02 02
478
HEX 000202B9020202BA010202BB030202BC
B926: B9 02 02 02 BA 01 02 02
B92E: BB 03 02 02 BC
B933: 00 01 02
479
HEX 000102BD020102BE010102BF030102CB
B936: BD 02 01 02 BE 01 01 02
B93E: BF 03 01 02 CB
B943: 00 03 02
480
HEX 000302CD020302CE010302CF030302D3
B946: CD 02 03 02 CE 01 03 02
B94E: CF 03 03 02 D3
B953: 00 00 01
481
HEX 000001D6020001D7010001D9030001DA
B956: D6 02 00 01 D7 01 00 01
B95E: D9 03 00 01 DA
B963: 00 02 01
482
HEX 000201DB020201DC010201DD030201DE
B966: DB 02 02 01 DC 01 02 01
B96E: DD 03 02 01 DE
B973: 00 01 01
483
HEX 000101DF020101E5010101E6030101E7
B976: DF 02 01 01 E5 01 01 01
B97E: E6 03 01 01 E7
B983: 00 03 01
484
HEX 000301E9020301EA010301EB030301EC
B986: E9 02 03 01 EA 01 03 01
B98E: EB 03 03 01 EC
B993: 00 00 03
485
HEX 000003ED020003EE010003EF030003F2
B996: ED 02 00 03 EE 01 00 03
B99E: EF 03 00 03 F2
B9A3: 00 02 03
486
HEX 000203F3020203F4010203F5030203F6
B9A6: F3 02 02 03 F4 01 02 03
B9AE: F5 03 02 03 F6
B9B3: 00 01 03
487
HEX 000103F7020103F9010103FA030103FB
B9B6: F7 02 01 03 F9 01 01 03
B9BE: FA 03 01 03 FB
B9C3: 00 03 03
488
HEX 000303FC020303FD010303FE030303FF
B9C6: FC 02 03 03 FD 01 03 03
B9CE: FE 03 03 03 FF
489
490 *-------------------------------
491
B9D3: AD 51 BA 492 FLOAD_TRK
LDA TRACK_END
B9D6: 20 9B B7
493
JSR MOVE_ARM
494
B9D9: A5 01
495
LDA PTR_BUFF+1 ; calcule adresse implantation en mem
pour
B9DB: 38
496
SEC
; les secteurs à charger
B9DC: ED 49 BA
497
SBC HBA49
B9DF: 85 01
498
STA PTR_BUFF+1
499
B9E1: AC 49 BA
500
LDY HBA49
501
B9E4: 98 502
HB9E4
TYA
B9E5: 18
503
CLC
B9E6: 65 01
504
ADC PTR_BUFF+1
B9E8: BE 29 BA
505
LDX SKEWING,Y
B9EB: 9D 39 BA
506
STA LIST_ADR_BUF,X
B9EE: C8
507
INY
B9EF: CC 4A BA
508
CPY SECTOR_END
B9F2: F0 F0
509
BEQ HB9E4
B9F4: 90 EE
510
BCC HB9E4
511
B9F6: A6 2B
512
LDX SLOT16
B9F8: A9 60
513
LDA #$60 ; init nbr max
passage
B9FA: 85 02
514
STA $02
515
B9FC: C6 02 516
HB9FC
DEC $02
B9FE: F0 25
517
BEQ HBA25 ; probleme pour
tout charger dans cette piste
518
BA00: 20 E8 B7
519
JSR RDADDRF ; lecture champ adresse
BA03: B0 F7
520
BCS HB9FC ; error
521
BA05: A4 2D
522
LDY FOUND_TRK
BA07: B9 39 BA
523
LDA LIST_ADR_BUF,Y
BA0A: F0 F0
524
BEQ HB9FC ; déja
chargé: continue
525
BA0C: 85 01
526
STA PTR_BUFF+1
BA0E: 20 D5 B6
527
JSR RDSECDTA ; lecture champ data
BA11: B0 E9
528
BCS HB9FC ; err-> next
529
BA13: A4 2D
530
LDY FOUND_TRK
BA15: A9 00
531
LDA #$00 ; signale
chargement fait
BA17: 99 39 BA
532
STA LIST_ADR_BUF,Y
533
534 * Vérifie que tous les secteurs soient chargés
535
BA1A: A0 0F
536
LDY #$0F ; 16 secteurs
BA1C: B9 39 BA 537
HBA1C
LDA LIST_ADR_BUF,Y ; adr impl destroyed?
BA1F: D0 DB
538
BNE HB9FC ; non, secteur not
loaded:continue
539
BA21: 88
540
DEY
BA22: 10 F8
541
BPL HBA1C
BA24: 60
542
RTS
543
BA25: EE 9A B7 544
HBA25
INC CPT_ERR ; err piste
BA28: 60
545
RTS
546
547 *-------------------------------
548
BA29: 00 0D 0B 549
SKEWING HEX
000D0B09070503010E0C0A080604020F
BA2C: 09 07 05 03 01 0E 0C 0A
BA34: 08 06 04 02 0F
550
551 * Liste des 16 adresses possibles en ram pour load
BA39: 00 00 00 552 LIST_ADR_BUF
DS 16,0
BA3C: 00 00 00 00 00 00 00 00
BA44: 00 00 00 00 00
553
BA49: 00 554
HBA49
DFB 0
BA4A: 00 555
SECTOR_END DFB
0
BA4B: 01 556
TRACK_START DFB
1
BA4C: 00 557
SECTOR_START DFB
0
BA4D: 00 558
BUFFERL DFB
0
BA4E: 20 559
BUFFERH HEX
20
BA4F: 20 560
NB_SECT HEX
20
BA50: 00 561
HBA50
DFB 0
BA51: 00 562
TRACK_END DFB
0
563
564 *-------------------------------
565
BA52: A9 DD 566
HBA52
LDA #$DD
BA54: A0 FF 567
HBA54
LDY #$FF
BA56: 59 00 3F 568
HBA56
EOR $3F00,Y
BA59: 99 00 3F 569
HBA59
STA $3F00,Y
BA5C: 88
570
DEY
BA5D: C0 FF
571
CPY #$FF
BA5F: D0 F5
572
BNE HBA56
573
BA61: CE 58 BA
574
DEC HBA56+2
BA64: CE 6A BA
575
DEC HBA6A
BA67: AE 6A BA
576
LDX HBA6A
BA6A: E0 1F 577
HBA6A
CPX #$1F
BA6C: D0 E6
578
BNE HBA54
579
BA6E: A0 1F
580
LDY #$1F
BA70: 60
581
RTS
582
BA71: A9 DD
583
LDA #$DD
BA73: 8D 00 40
584
STA $4000
BA76: A0 00 585
HBA76
LDY #$00
BA78: B9 00 20 586
HBA78
LDA $2000,Y
BA7B: 59 01 20 587
HBA7B
EOR $2001,Y
BA7E: 99 00 20 588
HBA7E
STA $2000,Y
BA81: C8
589
INY
BA82: D0 F4
590
BNE HBA78
591
BA84: EE 7A BA
592
INC HBA78+2
BA87: EE 7D BA
593
INC HBA7B+2
BA8A: EE 80 BA
594
INC HBA7E+2
BA8D: AE 80 BA
595
LDX HBA7E+2
BA90: E0 40
596
CPX #$40
BA92: D0 E2
597
BNE HBA76
BA94: 60
598
RTS
599
BA95: A9 BA
600
LDA #$BA
BA97: 8D 5B BA
601
STA HBA59+2
BA9A: A9 B5
602
LDA #$B5
BA9C: 8D 6B BA
603
STA HBA6A+1
BA9F: A0 00
604
LDY #$00
BAA1: 98
605
TYA
BAA2: 59 00 08 606
HBAA2
EOR H0800,Y
BAA5: 88
607
DEY
BAA6: D0 FA
608
BNE HBAA2
609
BAA8: C9 31
610
CMP #$31
BAAA: D0 A6
611
BNE HBA52
BAAC: 60
612
RTS
613
614 *-------------------------------
615
616
HBAAD
BAAD: A0 FF 3B
617
HEX A0FF3B3A8200DB452404BA2260616263
BAB0: 3A 82 00 DB 45 24 04 BA
BAB8: 22 60 61 62 63
BABD: 64 65 66
618
HEX 6465666768696A6B6C6D6E6F70717273
BAC0: 67 68 69 6A 6B 6C 6D 6E
BAC8: 6F 70 71 72 73
BACD: 74 75 76
619
HEX 7475767778797A2B7A7A7A7A2200F545
BAD0: 77 78 79 7A 2B 7A 7A 7A
BAD8: 7A 22 00 F5 45
BADD: 28 04 B9
620
HEX 2804B93737322C32383ABAE728313829
BAE0: 37 37 32 2C 32 38 3A BA
BAE8: E7 28 31 38 29
BAED: 3B E7 28
621
HEX 3BE72833293B300006462904B933322C
BAF0: 33 29 3B 30 00 06 46 29
BAF8: 04 B9 33 32 2C
BAFD: 30 3A B9
622
HEX 303AB9
623
624 *-------------------------------
625
BB00: 08 626
HBB00
DFB 8
; nbr de secteurs
627
628 *===============================
629 * Check disk
630 *===============================
631
BB01: 20 18 BF 632 CHECK_DISK0
JSR _SAV_HGRSTAT
633
BB04: A9 02 634
CHECK_DISK LDA
#>$0200 ; buffer=$0200
BB06: A0 00
635
LDY #<$0200
BB08: 20 F8 BF
636
JSR _SET_BUFFER
BB0B: A9 00
637
LDA #$00 ; load 1
sector T$00 S$00
BB0D: A0 00
638
LDY #$00
BB0F: A2 01
639
LDX #$01
BB11: 20 9A BF
640
JSR _BLOADER
641
BB14: AD 00 BB
642
LDA HBB00 ; check nbr of
sectors (byte $FF)
BB17: CD FF 02
643
CMP H02FF
BB1A: D0 04
644
BNE HBB20 ; not the demo
645
BB1C: 20 25 BF
646
JSR _SET_GRAPHIC
BB1F: 60
647
RTS
648
BB20: 48 649
HBB20
PHA
BB21: 20 2F FB
650
JSR INIT
BB24: 2C 58 FC
651
BIT HOME
BB27: 68
652
PLA
BB28: C9 FF
653
CMP #$FF ; byte $FF =
$FF => disk utilisateur
BB2A: F0 0F
654
BEQ HBB3B
655
656
; sinon
BB2C: A0 00
657
LDY #0 ;
message: mettez flobynoid face A.
BB2E: B9 E0 BF 658
HBB2E
LDA _TXT_FLOBYA,Y
BB31: 99 B0 05
659
STA $05B0,Y
BB34: C8
660
INY
BB35: C0 18
661
CPY #$18
BB37: D0 F5
662
BNE HBB2E
BB39: F0 0D
663
BEQ HBB48
664
665 *-------------------------------
666
BB3B: A0 00 667
HBB3B
LDY #$00 ; message:
mettez votre disk tableau
BB3D: B9 5E BB 668
HBB3D
LDA HBB5E,Y
BB40: 99 AF 05
669
STA $05AF,Y
BB43: C8
670
INY
BB44: C0 1B
671
CPY #$1B
BB46: D0 F5
672
BNE HBB3D
673
BB48: A9 00 674
HBB48
LDA #$00 ; attente
insertion et touche
BB4A: 20 A8 FC
675
JSR WAIT
BB4D: 2C 10 C0
676
BIT STROBE
677
BB50: AD 00 C0 678
HBB50
LDA KEY
BB53: 0D 61 C0
679
ORA BUTTN0
BB56: 0D 62 C0
680
ORA BUTTN1
BB59: 10 F5
681
BPL HBB50
682
BB5B: 4C 04 BB
683
JMP CHECK_DISK
684
685 *-------------------------------
686
BB5E: 0D 687
HBB5E
INV 'M'
BB5F: E5 F4 F4
688
ASC "ettez "
BB62: E5 FA A0
BB65: 16
689
INV 'V'
BB66: EF F4 F2
690
ASC "otre "
BB69: E5 A0
BB6B: 04
691
INV 'D'
BB6C: E9 F3 EB
692
ASC "isk "
BB6F: A0
BB70: 14
693
INV 'T'
BB71: E1 E2 EC
694
ASC "ableau. "
BB74: E5 E1 F5 AE A0 A0 A0 A0
BB7C: A0
695
696 *-------------------------------
697
BB7D: A0 698
SAV_Y
ASC " "
BB7E: 00 699
SAV_X
DFB 0
BB7F: 00 700
SAV_A
DFB 0
701
702 *-------------------------------
703
BB80: 8D 7F BB
704
STA SAV_A
BB83: 8E 7E BB
705
STX SAV_X
BB86: 8C 7D BB
706
STY SAV_Y
707
BB89: AD 4D BA
708
LDA BUFFERL
BB8C: 8D 45 BF
709
STA _SAV_BUFFER
BB8F: AD 4E BA
710
LDA BUFFERH
BB92: 8D 46 BF
711
STA _SAV_BUFFER+1
712
BB95: 20 01 BB
713
JSR CHECK_DISK0
714
BB98: AD 46 BF
715
LDA _SAV_BUFFER+1
BB9B: 8D 4E BA
716
STA BUFFERH
BB9E: AD 45 BF
717
LDA _SAV_BUFFER
BBA1: 8D 4D BA
718
STA BUFFERL
719
BBA4: AD 7F BB
720
LDA SAV_A
BBA7: AE 7E BB
721
LDX SAV_X
BBAA: AC 7D BB
722
LDY SAV_Y
BBAD: 4C 9D BF
723
JMP _BLOADERD
724
BBB0: 00 00 00
725
DS 8,0
BBB3: 00 00 00 00 00
726
727 *-------------------------------
728
BBB8: 20 18 BF
729
JSR _SAV_HGRSTAT
BBBB: A9 6D 730
HBBBB
LDA #$6D
BBBD: A0 E8
731
LDY #$E8
BBBF: 20 00 3D
732
JSR H3D00
733
BBC2: EA
734
NOP
BBC3: EA
735
NOP
BBC4: EA
736
NOP
BBC5: EA
737
NOP
BBC6: EA
738
NOP
BBC7: EA
739
NOP
BBC8: EA
740
NOP
BBC9: EA
741
NOP
BBCA: EA
742
NOP
743
BBCB: AD FF 11
744
LDA H11FF
BBCE: C9 08
745
CMP #$08
BBD0: F0 03
746
BEQ HBBD5
747
BBD2: 4C 25 BF
748
JMP _SET_GRAPHIC
749
BBD5: 20 2F FB 750
HBBD5
JSR INIT
BBD8: 2C 58 FC
751
BIT HOME
BBDB: A0 00
752
LDY #$00
BBDD: B9 B0 67 753
HBBDD
LDA H67B0,Y
BBE0: 99 AE 05
754
STA $05AE,Y
BBE3: C8
755
INY
BBE4: C0 20
756
CPY #$20
BBE6: D0 F5
757
BNE HBBDD
758
BBE8: A9 00
759
LDA #$00
BBEA: 20 A8 FC
760
JSR WAIT
BBED: 2C 10 C0
761
BIT STROBE
762
BBF0: AD 00 C0 763
HBBF0
LDA KEY
BBF3: 0D 61 C0
764
ORA BUTTN0
BBF6: 0D 62 C0
765
ORA BUTTN1
BBF9: 10 F5
766
BPL HBBF0
BBFB: 4C BB BB
767
JMP HBBBB
768
BBFE: 00 00
769
DS 2,0
770
771 *-------------------------------
772
BC00: A9 08
773
LDA #$08
BC02: 85 00
774
STA PTR_BUFF
BC04: A2 60 775
HBC04
LDX #$60
BC06: A0 00
776
LDY #$00
BC08: BD 89 C0
777
LDA HC089,X
BC0B: A9 FF
778
LDA #$FF
BC0D: 20 A8 FC
779
JSR WAIT
BC10: A9 FF
780
LDA #$FF
BC12: 20 A8 FC
781
JSR WAIT
BC15: BD 8E C0
782
LDA HC08E,X
BC18: BD 8C C0 783
HBC18
LDA HC08C,X
BC1B: 10 FB
784
BPL HBC18
785
BC1D: C9 D5 786
HBC1D
CMP #$D5
BC1F: D0 F7
787
BNE HBC18
788
BC21: EA
789
NOP
790
BC22: BD 8C C0 791
HBC22
LDA HC08C,X
BC25: 10 FB
792
BPL HBC22
793
BC27: C9 AA
794
CMP #$AA
BC29: D0 F2
795
BNE HBC1D
796
BC2B: A0 03
797
LDY #$03
798
BC2D: BD 8C C0 799
HBC2D
LDA HC08C,X
BC30: 10 FB
800
BPL HBC2D
801
BC32: C9 96
802
CMP #$96
BC34: D0 E7
803
BNE HBC1D
804
BC36: A9 00
805
LDA #$00
BC38: 85 27 806
HBC38
STA $27
807
BC3A: BD 8C C0 808
HBC3A
LDA HC08C,X
BC3D: 10 FB
809
BPL HBC3A
810
BC3F: 2A
811
ROL
BC40: 85 26
812
STA $26
813
BC42: BD 8C C0 814
HBC42
LDA HC08C,X
BC45: 10 FB
815
BPL HBC42
816
BC47: 25 26
817
AND $26
BC49: 99 2C 00
818
STA H002C,Y
BC4C: 45 27
819
EOR $27
BC4E: 88
820
DEY
BC4F: 10 E7
821
BPL HBC38
822
BC51: A8
823
TAY
BC52: D0 C4
824
BNE HBC18
825
BC54: BD 8C C0 826
HBC54
LDA HC08C,X
BC57: 10 FB
827
BPL HBC54
828
BC59: C9 DE
829
CMP #$DE
BC5B: D0 BB
830
BNE HBC18
831
BC5D: EA
832
NOP
833
BC5E: BD 8C C0 834
HBC5E
LDA HC08C,X
BC61: 10 FB
835
BPL HBC5E
836
BC63: C9 AA
837
CMP #$AA
BC65: D0 B1
838
BNE HBC18
839
BC67: 18
840
CLC
BC68: A5 2D
841
LDA FOUND_TRK
BC6A: C9 00
842
CMP #$00
BC6C: F0 03
843
BEQ HBC71
844
BC6E: 4C 18 BC
845
JMP HBC18
846
BC71: BD 8C C0 847
HBC71
LDA HC08C,X
BC74: 10 FB
848
BPL HBC71
849
BC76: C9 C1
850
CMP #$C1
BC78: D0 01
851
BNE HBC7B
852
BC7A: 60
853
RTS
854
BC7B: C6 00 855
HBC7B
DEC PTR_BUFF
BC7D: D0 85
856
BNE HBC04
857
BC7F: D0 FE 858
HBC7F
BNE HBC7F
BC81: F0 FE 859
HBC81
BEQ HBC81
860
861 *-------------------------------
862
BC83: 00 00 00
863
DS 123,0
BC86: 00 00 00 00 00 00 00 00
...
BCFE: 00 00 864
HBCFE
DS 2,0
865
866 *-------------------------------
867
BD00: 00 00 00 868
HBD00
DS 256,0
...
BDFB: 00 00 00 00 00
869
870 *-------------------------------
871
872
SAV BOOT2
Object saved as BOOT2,A$B600,L$0800
--End assembly, 2048 bytes, Errors: 0
Symbol table - alphabetical order:
BLOADER0
=$B66D
BUFFERH
=$BA4E
BUFFERL
=$BA4D
BUTTN0 =$C061
BUTTN1
=$C062 CHECK_DISK
=$BB04 CHECK_DISK0
=$BB01 ? CLR_LINE =$B642
CPT_ERR
=$B79A CURR_HTRACK
=$B799 FLOAD_TRK
=$B9D3 FOUND_TRK =$2D
H002C
=$2C
H02FF
=$02FF
H0800
=$0800
H11FF =$11FF
H1F03
=$1F03
H3D00
=$3D00
H67B0 =$67B0
? HB600 =$B600
HB646
=$B646
HB679
=$B679
HB6A6
=$B6A6
HB6D3 =$B6D3
HB6E6
=$B6E6
HB6F1
=$B6F1
HB6F9
=$B6F9
HB6FC =$B6FC
HB701
=$B701
HB706
=$B706
HB710
=$B710
HB71D =$B71D
HB71F
=$B71F
HB733
=$B733
HB736
=$B736
HB74C =$B74C
HB75A
=$B75A
HB760
=$B760
HB769
=$B769
HB772 =$B772
HB775
=$B775
HB787
=$B787
HB790
=$B790
HB792 =$B792
HB79E
=$B79E
HB7AF
=$B7AF
HB7B2
=$B7B2
HB7CB =$B7CB
HB7D7
=$B7D7
HB7D8
=$B7D8
HB7DB
=$B7DB
HB7DC =$B7DC
HB7E6
=$B7E6
HB7EC
=$B7EC
HB7F3
=$B7F3
HB7F8 =$B7F8
HB7FD
=$B7FD
HB808
=$B808
HB813
=$B813
HB815 =$B815
HB81D
=$B81D
HB82F =$B82F
? HB836
=$B836
HB839 =$B839
? HB844
=$B844
HB869
=$B869
HB8D3
=$B8D3
HB9E4 =$B9E4
HB9FC
=$B9FC
HBA1C
=$BA1C
HBA25
=$BA25
HBA49 =$BA49
HBA50
=$BA50
HBA52
=$BA52
HBA54
=$BA54
HBA56 =$BA56
HBA59
=$BA59
HBA6A
=$BA6A
HBA76
=$BA76
HBA78 =$BA78
HBA7B
=$BA7B
HBA7E
=$BA7E
HBAA2 =$BAA2
? HBAAD =$BAAD
HBB00
=$BB00
HBB20
=$BB20
HBB2E
=$BB2E
HBB3B =$BB3B
HBB3D
=$BB3D
HBB48
=$BB48
HBB50
=$BB50
HBB5E =$BB5E
HBBBB
=$BBBB
HBBD5
=$BBD5
HBBDD
=$BBDD
HBBF0 =$BBF0
HBC04
=$BC04
HBC18
=$BC18
HBC1D
=$BC1D
HBC22 =$BC22
HBC2D
=$BC2D
HBC38
=$BC38
HBC3A
=$BC3A
HBC42 =$BC42
HBC54
=$BC54
HBC5E
=$BC5E
HBC71
=$BC71
HBC7B =$BC7B
HBC7F
=$BC7F
HBC81
=$BC81
HBCFE
=$BCFE
HBD00 =$BD00
HC080
=$C080
HC081
=$C081
HC089
=$C089
HC08C =$C08C
HC08E
=$C08E
HC0E9
=$C0E9
HC0EC
=$C0EC
HOME =$FC58
INIT
=$FB2F
KEY
=$C000 LIST_ADR_BUF
=$BA39 MOVE_ARM
=$B79B
NB_SECT
=$BA4F PTR_BUFF
=$00
RDADDRF
=$B7E8 RDSECDTA
=$B6D5
SAV_A
=$BB7F
SAV_X
=$BB7E
SAV_Y
=$BB7D SECTOR_END =$BA4A
SECTOR_START =$BA4C
SKEWING
=$BA29
SLOT16
=$2B
STROBE =$C010
TRACK_END
=$BA51 TRACK_START
=$BA4B
WAIT
=$FCA8 _BLOADER
=$BF9A
_BLOADERD
=$BF9D _BLOADER_CHK
=$BF90 _SAV_BUFFER
=$BF45 _SAV_HGRSTAT =$BF18
_SET_BUFFER =$BFF8
_SET_GRAPHIC =$BF25 _TXT_FLOBYA
=$BFE0
Symbol table - numerical order:
PTR_BUFF
=$00
SLOT16
=$2B
H002C
=$2C
FOUND_TRK =$2D
H02FF
=$02FF
H0800
=$0800
H11FF
=$11FF
H1F03 =$1F03
H3D00
=$3D00
H67B0 =$67B0
? HB600
=$B600 ? CLR_LINE =$B642
HB646
=$B646 BLOADER0
=$B66D
HB679
=$B679
HB6A6 =$B6A6
HB6D3
=$B6D3 RDSECDTA
=$B6D5
HB6E6
=$B6E6
HB6F1 =$B6F1
HB6F9
=$B6F9
HB6FC
=$B6FC
HB701
=$B701
HB706 =$B706
HB710
=$B710
HB71D
=$B71D
HB71F
=$B71F
HB733 =$B733
HB736
=$B736
HB74C
=$B74C
HB75A
=$B75A
HB760 =$B760
HB769
=$B769
HB772
=$B772
HB775
=$B775
HB787 =$B787
HB790
=$B790
HB792
=$B792 CURR_HTRACK
=$B799
CPT_ERR =$B79A
MOVE_ARM
=$B79B
HB79E
=$B79E
HB7AF
=$B7AF
HB7B2 =$B7B2
HB7CB
=$B7CB
HB7D7
=$B7D7
HB7D8
=$B7D8
HB7DB =$B7DB
HB7DC
=$B7DC
HB7E6
=$B7E6
RDADDRF
=$B7E8
HB7EC =$B7EC
HB7F3
=$B7F3
HB7F8
=$B7F8
HB7FD
=$B7FD
HB808 =$B808
HB813
=$B813
HB815
=$B815
HB81D
=$B81D
HB82F =$B82F
? HB836
=$B836
HB839 =$B839
? HB844
=$B844
HB869 =$B869
HB8D3
=$B8D3 FLOAD_TRK
=$B9D3
HB9E4
=$B9E4
HB9FC =$B9FC
HBA1C
=$BA1C
HBA25
=$BA25
SKEWING
=$BA29 LIST_ADR_BUF =$BA39
HBA49
=$BA49 SECTOR_END
=$BA4A TRACK_START
=$BA4B SECTOR_START =$BA4C
BUFFERL
=$BA4D
BUFFERH
=$BA4E
NB_SECT
=$BA4F
HBA50 =$BA50
TRACK_END
=$BA51
HBA52
=$BA52
HBA54
=$BA54
HBA56 =$BA56
HBA59
=$BA59
HBA6A
=$BA6A
HBA76
=$BA76
HBA78 =$BA78
HBA7B
=$BA7B
HBA7E
=$BA7E
HBAA2 =$BAA2
? HBAAD =$BAAD
HBB00
=$BB00 CHECK_DISK0
=$BB01 CHECK_DISK
=$BB04
HBB20 =$BB20
HBB2E
=$BB2E
HBB3B
=$BB3B
HBB3D
=$BB3D
HBB48 =$BB48
HBB50
=$BB50
HBB5E
=$BB5E
SAV_Y
=$BB7D
SAV_X =$BB7E
SAV_A
=$BB7F
HBBBB
=$BBBB
HBBD5
=$BBD5
HBBDD =$BBDD
HBBF0
=$BBF0
HBC04
=$BC04
HBC18
=$BC18
HBC1D =$BC1D
HBC22
=$BC22
HBC2D
=$BC2D
HBC38
=$BC38
HBC3A =$BC3A
HBC42
=$BC42
HBC54
=$BC54
HBC5E
=$BC5E
HBC71 =$BC71
HBC7B
=$BC7B
HBC7F
=$BC7F
HBC81
=$BC81
HBCFE =$BCFE
HBD00
=$BD00 _SAV_HGRSTAT
=$BF18 _SET_GRAPHIC
=$BF25 _SAV_BUFFER =$BF45
_BLOADER_CHK =$BF90
_BLOADER =$BF9A
_BLOADERD =$BF9D
_TXT_FLOBYA =$BFE0
_SET_BUFFER =$BFF8
KEY
=$C000
STROBE
=$C010
BUTTN0 =$C061
BUTTN1
=$C062
HC080
=$C080
HC081
=$C081
HC089 =$C089
HC08C
=$C08C
HC08E
=$C08E
HC0E9
=$C0E9
HC0EC =$C0EC
INIT
=$FB2F
HOME
=$FC58
WAIT =$FCA8
:asm
1
2
; LST OFF
3
ORG $BF00
4
5 ********************************
6
*
*
7 * DRIVER FLOBYNOID
DEMO *
8 *
(C)1987 SSS *
9 * SOURCE BY
DECKARD *
10
*
*
11 ********************************
12
13 * Adresse ram
14
15 H02FF
EQU $02FF
16
17 * Adresses BOOT2
18
19 CLR_LINE
EQU $B642
20 BLOADER0
EQU $B66D
21 TRACK_START EQU
$BA4B
22 SECTOR_START EQU
$BA4C
23 BUFFERL
EQU $BA4D
24 BUFFERH
EQU $BA4E
25 NB_SECT
EQU $BA4F
26
27 * Adresses rom
28
29
KEY
EQU $C000
30 STROBE
EQU $C010
31 RPAGE2
EQU $C01C ; lecture si page
HGR1 ou 2
32 RHIRES
EQU $C01D ; lecture si mode
HGR ou pas
33 TXTCLR
EQU $C050 ; graphic mode
34 LOWSCR
EQU $C054 ; HGR1
35 HISCR
EQU $C055 ; HGR2
36 HIRES
EQU $C057 ; mode HGR
37 BUTTN0
EQU $C061
38 BUTTN1
EQU $C062
39 HC0E8
EQU $C0E8 ; drive off slot 6
40 HC0E9
EQU $C0E9 ; drive on slot 6
41
INIT
EQU $FB2F
42
HOME
EQU $FC58
43
44 *===============================
45 * Attente d'une touche entre 2
46 * acces disk
47 *===============================
48
BF00: 8D E8 C0 49
_WAITKEY STA
HC0E8 ; stop drive
50
BF03: AD 00 C0 51
HBF03
LDA KEY ; attente
touche
BF06: 0D 61 C0
52
ORA BUTTN0
BF09: 0D 62 C0
53
ORA BUTTN1
BF0C: 10 F5
54
BPL HBF03
55
BF0E: 8D E9 C0
56
STA HC0E9 ; lance drive
BF11: EA
57
NOP
BF12: EA
58
NOP
BF13: 4C A8 BF
59
JMP _CHECK_DISK
60
61 *-------------------------------
62
BF16: 00 63
_PAGE_HGR DFB
0 ; HGR ($C054), HGR2
($C055)
BF17: 00 64
_MODE_HGR DFB
0 ; non ($C056),
oui ($C057)
65
66 *-------------------------------
67
BF18: AD 1C C0 68 _SAV_HGRSTAT
LDA RPAGE2
BF1B: 8D 16 BF
69
STA _PAGE_HGR
BF1E: AD 1D C0
70
LDA RHIRES
BF21: 8D 17 BF
71
STA _MODE_HGR
BF24: 60
72
RTS
73
74 *===============================
75 * Enclenche mode graphic
76 *===============================
77
BF25: 20 42 B6 78 _SET_GRAPHIC
JSR CLR_LINE
BF28: EA
79
NOP
BF29: EA
80
NOP
BF2A: AD 17 BF
81
LDA _MODE_HGR
BF2D: 10 10
82
BPL HBF3E+1 ; BUG!!!! must be $BF3D
83
BF2F: 8D 50 C0
84
STA TXTCLR ; graphic
BF32: 8D 57 C0
85
STA HIRES ; mode HGR
BF35: AD 16 BF
86
LDA _PAGE_HGR
BF38: 10 04
87
BPL HBF3E
88
BF3A: 8D 55 C0
89
STA HISCR ; HGR2
BF3D: 60 90
HBF3D
RTS
91
BF3E: 8D 54 C0 92
HBF3E
STA LOWSCR ; HGR1
BF41: 60
93
RTS
94
95 *-------------------------------
96
BF42: 00 97
_SAV_A DFB
0
BF43: 00 98
_SAV_X DFB
0
BF44: 00 99
_SAV_Y DFB
0
BF45: 00 00 100 _SAV_BUFFER
DFB 0,0
101
BF47: 00 00 00
102
DS 7,0
BF4A: 00 00 00 00
103
104 *-------------------------------
105
BF4E: 8D 42 BF 106 _CALLER_CHK
STA _SAV_A
BF51: 8E 43 BF
107
STX _SAV_X
BF54: 8C 44 BF
108
STY _SAV_Y
109
BF57: AD 4E BA
110
LDA BUFFERH
BF5A: 8D 45 BF
111
STA _SAV_BUFFER
BF5D: AD 4D BA
112
LDA BUFFERL
BF60: 8D 46 BF
113
STA _SAV_BUFFER+1
114
BF63: 20 A8 BF
115
JSR _CHECK_DISK
116
BF66: AD 46 BF
117
LDA _SAV_BUFFER+1
BF69: 8D 4D BA
118
STA BUFFERL
BF6C: AD 45 BF
119
LDA _SAV_BUFFER
BF6F: 8D 4E BA
120
STA BUFFERH
121
BF72: AC 44 BF
122
LDY _SAV_Y
BF75: AE 43 BF
123
LDX _SAV_X
BF78: AD 42 BF
124
LDA _SAV_A
BF7B: 20 7F BF
125
JSR _CALLER
BF7E: 60
126
RTS
127
128 *-------------------------------
129
BF7F: 8D 4B BA 130
_CALLER STA
TRACK_START
BF82: 8C 4C BA
131
STY SECTOR_START
BF85: 8E 4F BA
132
STX NB_SECT
BF88: A2 60
133
LDX #$60 ; slot16
BF8A: A9 06
134
LDA #$06
BF8C: 20 6D B6
135
JSR BLOADER0
BF8F: 60
136
RTS
137
138 *-------------------------------
139
BF90: 8D E9 C0 140 _BLOADER_CHK STA
HC0E9
BF93: 20 4E BF
141
JSR _CALLER_CHK
BF96: 8D E8 C0
142
STA HC0E8
BF99: 60
143
RTS
144
145 *-------------------------------
146
BF9A: 8D E9 C0 147 _BLOADER
STA HC0E9
BF9D: 20 7F BF 148 _BLOADERD
JSR _CALLER
BFA0: 8D E8 C0
149
STA HC0E8
BFA3: 60
150
RTS
151
152 *-------------------------------
153
BFA4: 00 00 00
154
DS 3,0
BFA7: FF
155
HEX FF
156
157 *-------------------------------
158
BFA8: A9 02 159 _CHECK_DISK
LDA #>$0200 ; load T$00 S$00 en $0200
BFAA: A0 00
160
LDY #<$0200
BFAC: 20 F8 BF
161
JSR _SET_BUFFER
BFAF: A9 00
162
LDA #$00
BFB1: A0 00
163
LDY #$00
BFB3: A2 01
164
LDX #$01
BFB5: 20 7F BF
165
JSR _CALLER
166
BFB8: AD FF 02
167
LDA H02FF ; check byte
BFBB: C9 08
168
CMP #$08 ; demo?
BFBD: F0 1D
169
BEQ HBFDC ; yes
170
BFBF: EA
171
NOP
172
BFC0: 20 18 BF
173
JSR _SAV_HGRSTAT
BFC3: 20 2F FB
174
JSR INIT
BFC6: 2C 58 FC
175
BIT HOME
BFC9: A0 00
176
LDY #0 ;
affiche ligne de commande
BFCB: B9 E0 BF 177
HBFCB
LDA _TXT_FLOBYA,Y
BFCE: 99 B0 05
178
STA $05B0,Y
BFD1: C8
179
INY
BFD2: C0 18
180
CPY #$18
BFD4: D0 F5
181
BNE HBFCB
182
BFD6: 2C 10 C0
183
BIT STROBE
BFD9: 4C 00 BF
184
JMP _WAITKEY
185
BFDC: 4C 25 BF 186
HBFDC
JMP _SET_GRAPHIC ; RTS inclus
187
BFDF: 55
188
HEX 55
189
190 *-------------------------------
191
BFE0: 0D 192
_TXT_FLOBYA INV 'M'
BFE1: E5 F4 F4
193
ASC "ettez "
BFE4: E5 FA A0
BFE7: 06
194
INV 'F'
BFE8: CC CF C2
195
ASC "LOBYNOID "
BFEB: D9 CE CF C9 C4 A0
BFF1: 06
196
INV 'F'
BFF2: E1 E3 E5
197
ASC "ace "
BFF5: A0
BFF6: 01
198
INV 'A'
BFF7: AE
199
ASC "."
200
201 *-------------------------------
202
BFF8: 8D 4E BA 203 _SET_BUFFER
STA BUFFERH
BFFB: 8C 4D BA
204
STY BUFFERL
BFFE: 60
205
RTS
206
BFFF: 00
207
DFB 0
208
209
SAV DRIVER
Object saved as DRIVER,A$BF00,L$0100
--End assembly, 256 bytes, Errors: 0
Symbol table - alphabetical order:
BLOADER0
=$B66D
BUFFERH
=$BA4E
BUFFERL
=$BA4D
BUTTN0 =$C061
BUTTN1
=$C062 CLR_LINE
=$B642
H02FF
=$02FF
HBF03 =$BF03
? HBF3D
=$BF3D
HBF3E
=$BF3E
HBFCB
=$BFCB
HBFDC =$BFDC
HC0E8
=$C0E8
HC0E9
=$C0E9
HIRES
=$C057
HISCR =$C055
HOME
=$FC58
INIT
=$FB2F
KEY
=$C000
LOWSCR =$C054
NB_SECT
=$BA4F
RHIRES
=$C01D
RPAGE2
=$C01C SECTOR_START =$BA4C
STROBE
=$C010 TRACK_START
=$BA4B
TXTCLR =$C050 ?
_BLOADER =$BF9A
? _BLOADERD =$BF9D ?
_BLOADER_CHK =$BF90
_CALLER
=$BF7F _CALLER_CHK =$BF4E
_CHECK_DISK =$BFA8
_MODE_HGR =$BF17
_PAGE_HGR =$BF16
_SAV_A =$BF42
_SAV_BUFFER =$BF45
_SAV_HGRSTAT =$BF18
_SAV_X
=$BF43
_SAV_Y =$BF44
_SET_BUFFER =$BFF8
_SET_GRAPHIC =$BF25 _TXT_FLOBYA
=$BFE0 _WAITKEY
=$BF00
Symbol table - numerical order:
H02FF
=$02FF CLR_LINE
=$B642 BLOADER0
=$B66D TRACK_START =$BA4B
SECTOR_START =$BA4C
BUFFERL
=$BA4D
BUFFERH
=$BA4E
NB_SECT =$BA4F
_WAITKEY
=$BF00
HBF03
=$BF03 _PAGE_HGR
=$BF16 _MODE_HGR =$BF17
_SAV_HGRSTAT =$BF18
_SET_GRAPHIC =$BF25 ?
HBF3D
=$BF3D
HBF3E =$BF3E
_SAV_A
=$BF42
_SAV_X
=$BF43
_SAV_Y
=$BF44 _SAV_BUFFER =$BF45
_CALLER_CHK =$BF4E
_CALLER =$BF7F ?
_BLOADER_CHK =$BF90 ?
_BLOADER =$BF9A
? _BLOADERD
=$BF9D _CHECK_DISK
=$BFA8
HBFCB
=$BFCB
HBFDC =$BFDC
_TXT_FLOBYA =$BFE0
_SET_BUFFER =$BFF8
KEY
=$C000
STROBE =$C010
RPAGE2
=$C01C
RHIRES
=$C01D
TXTCLR
=$C050
LOWSCR =$C054
HISCR
=$C055
HIRES
=$C057
BUTTN0
=$C061
BUTTN1 =$C062
HC0E8
=$C0E8
HC0E9
=$C0E9
INIT
=$FB2F
HOME =$FC58
:asm
1
2
; LST OFF
3
ORG $0800
4
5 ********************************
6
*
*
7 * Nouveau boot1 FLOBYNOID DEMO *
8 * (c)2007 by
Deckard *
9
*
*
10 ********************************
11
12 * Adresses page 0
13
14 BUFF_LOW
EQU $26
15 BUFF_HIGH EQU
$27
16 SECTOR
EQU $3D
17 TRACK
EQU $41 ; must be
0!
18 CUR_NBR
EQU $FE ; nbr de
secteur
19 CUR_SECT
EQU $FF ; secteur
en cours (current)
20
21 * Adresse rom
22
23 TXTSET
EQU $C051 ; mode text
24 HC65C
EQU $C65C ; routine load
sector
25
INIT
EQU $FB2F
26 SETNORM
EQU $FE84
27 SETKBD
EQU $FE89
28 SETVID
EQU $FE93
29
HOME
EQU $FC58
30
WAIT
EQU $FCA8
31
32 ********************************
33
0800: 01
34
DFB 1
; un seul secteur à charger
35
36 ********************************
37
38
FLOBY_BOOT1
0801: A9 60
39
LDA #$60 ; RTS
nécessaire car la routine de chargement
0803: 8D 01 08
40
STA FLOBY_BOOT1 ; utilisée ($C65C) finit par
un JMP $0801
41
0806: 20 2F FB
42
JSR INIT
0809: 20 84 FE
43
JSR SETNORM
080C: 20 93 FE
44
JSR SETVID
080F: 20 89 FE
45
JSR SETKBD
0812: 8D 00 C0
46
STA $C000
0815: 8D 0C C0
47
STA $C00C
48
0818: AD 51 C0
49
LDA TXTSET
081B: 20 58 FC
50
JSR HOME
51
52 * Chargement boot2
53
081E: A9 BD
54
LDA #>$BD00 ; implantation $B600-$BDFF
0820: 85 27
55
STA BUFF_HIGH
0822: A9 00
56
LDA #$00 ; piste $00
0824: A2 08
57
LDX #$08 ; secteurs
$08/$07/$06/$05/$04/$03/$02/$01
0826: A0 08
58
LDY #$08 ; 8 secteurs
décroissant
0828: 20 5C 08
59
JSR LOAD ; chargement
60
61 * Signature
62
082B: A9 DF
63
LDA #"_"
082D: A0 00
64
LDY #0
082F: 99 0E 04 65
:1
STA $040E,Y
0832: C8
66
INY
0833: C0 0B
67
CPY #$0B
0835: D0 F8
68
BNE :1
69
0837: A0 00
70
LDY #0
0839: B9 4C 08 71
:2
LDA SIGNATURE,Y
083C: 99 8C 04
72
STA $048C,Y
083F: C8
73
INY
0840: C0 0F
74
CPY #$0F
0842: D0 F5
75
BNE :2
76
0844: A9 00
77
LDA #0
0846: 20 A8 FC
78
JSR WAIT
0849: 4C 00 B6
79
JMP $B600
80
81
SIGNATURE
084C: A8 BA
82
ASC "(:"
084E: 20
83
ASC ' '
084F: 06 0C 0F
84
INV 'FLOBYNOID'
0852: 02 19 0E 0F 09 04
0858: 20
85
ASC ' '
0859: BA A9 00
86
ASC ":)"00
87
88
89 ********************************
90
*
*
91 * Charge des secteurs en T$00 *
92
*
*
93 ********************************
94
95 * In : ACC = piste à lire (TOUJOURS 0!)
96 * X = secteur
à lire en 1er
97 * Y = nbr de
secteurs à lire
98
085C: 85 41 99
LOAD
STA TRACK ; must be 0!
085E: 86 FF
100
STX CUR_SECT
0860: 84 FE
101
STY CUR_NBR
102
0862: A9 00 103
:1
LDA #$00
0864: 85 26
104
STA BUFF_LOW
105
0866: A4 FF
106
LDY CUR_SECT ; équivalence secteur
logique/physique
0868: B9 82 08
107
LDA SKEWING,Y
086B: 85 3D
108
STA SECTOR
109
086D: A2 60
110
LDX #$60 ; slot*16
086F: 20 5C C6
111
JSR HC65C ; routine LOAD de
la carte controleur
112
0872: C6 FF
113
DEC CUR_SECT ; passe au secteur
précédant
0874: 10 03
114
BPL :2 ; il
en reste encore sur cette piste
115
0876: 4C 69 FF
116
JMP $FF69 ; not allowed!
117
0879: C6 27 118
:2
DEC BUFF_HIGH ; revient sur l'adr high du secteur
qu'on
087B: C6 27
119
DEC BUFF_HIGH ; vient de charger et pointe sur le
précédant
120
; car la routine rom a fait adr high+1
087D: C6 FE
121
DEC CUR_NBR ; un secteur de moins
à charger
087F: D0 E1
122
BNE :1 ; il
en reste encore
0881: 60
123
RTS
; chargement fini
124
125 ********************************
126
127 * Table d'équivalence secteurs logiques et physiques
128
0882: 00 0D 0B 129
SKEWING HEX
000D0B09070503010E0C0A080604020F
0885: 09 07 05 03 01 0E 0C 0A
088D: 08 06 04 02 0F
130
131 ********************************
132
0892: 00 00 00
133
DS 102,0
...
08F5: 00 00 00
134
08F8: C4 C5 C3
135
ASC "DECKARD"
08FB: CB C1 D2 C4
08FF: 08
136
DFB 8
; checked
137
138
SAV FLOBYDEMO.BOOT1.NEW
Object saved as FLOBYDEMO.BOOT1.NEW,A$0800,L$0100
--End assembly, 256 bytes, Errors: 0
Symbol table - alphabetical order:
BUFF_HIGH
=$27
BUFF_LOW
=$26
CUR_NBR
=$FE
CUR_SECT =$FF
FLOBY_BOOT1 =$0801
HC65C
=$C65C
HOME
=$FC58
INIT =$FB2F
LOAD
=$085C
SECTOR
=$3D
SETKBD
=$FE89
SETNORM =$FE84
SETVID
=$FE93 SIGNATURE
=$084C
SKEWING
=$0882
TRACK =$41
TXTSET
=$C051
WAIT =$FCA8
Symbol table - numerical order:
BUFF_LOW
=$26
BUFF_HIGH
=$27
SECTOR
=$3D
TRACK =$41
CUR_NBR
=$FE
CUR_SECT
=$FF FLOBY_BOOT1
=$0801 SIGNATURE =$084C
LOAD
=$085C
SKEWING
=$0882
TXTSET
=$C051
HC65C =$C65C
INIT
=$FB2F
HOME
=$FC58
WAIT
=$FCA8
SETNORM =$FE84
SETKBD
=$FE89
SETVID =$FE93