@@ -38,6 +38,7 @@ static always_inline void drive_change_pin(
38
38
struct drive * drv , uint8_t pin , bool_t assert );
39
39
static always_inline void drive_change_output (
40
40
struct drive * drv , uint8_t outp , bool_t assert );
41
+ static void disk_inserted_output (uint8_t outp , bool_t assert );
41
42
42
43
#include "floppy_generic.c"
43
44
@@ -130,6 +131,18 @@ static void drive_change_output(
130
131
drive_change_pin (drv , pin , assert );
131
132
}
132
133
134
+ static void disk_inserted_output (uint8_t outp , bool_t assert )
135
+ {
136
+ if (pin02 == outp ) {
137
+ GPIO gpio = pin_02 < 16 ? gpiob : gpioa ;
138
+ gpio_write_pin (gpio , pin_02 & 15 , assert ^ pin02_inverted );
139
+ }
140
+ if (pin34 == outp ) {
141
+ GPIO gpio = pin_34 < 16 ? gpiob : gpioa ;
142
+ gpio_write_pin (gpio , pin_34 & 15 , assert ^ pin34_inverted );
143
+ }
144
+ }
145
+
133
146
static void update_amiga_id (struct drive * drv , bool_t amiga_hd_id )
134
147
{
135
148
/* JC and pin 34 are overridden only for the Amiga interface. */
@@ -210,6 +223,7 @@ void floppy_cancel(void)
210
223
barrier ();
211
224
drive_change_output (drv , outp_index , FALSE);
212
225
drive_change_output (drv , outp_dskchg , TRUE);
226
+ disk_inserted_output (outp_in , TRUE);
213
227
}
214
228
215
229
void floppy_set_fintf_mode (void )
@@ -223,6 +237,7 @@ void floppy_set_fintf_mode(void)
223
237
[FINTF_AMIGA ] = "Amiga"
224
238
};
225
239
static const char * const outp_name [] = {
240
+ [outp_in ] = "in" ,
226
241
[outp_dskchg ] = "chg" ,
227
242
[outp_rdy ] = "rdy" ,
228
243
[outp_hden ] = "dens" ,
@@ -320,6 +335,7 @@ void floppy_init(void)
320
335
drive_change_output (drv , outp_dskchg , TRUE);
321
336
drive_change_output (drv , outp_wrprot , TRUE);
322
337
drive_change_output (drv , outp_trk0 , TRUE);
338
+ disk_inserted_output (outp_in , TRUE);
323
339
324
340
floppy_init_irqs ();
325
341
@@ -352,6 +368,7 @@ void floppy_insert(unsigned int unit, struct slot *slot)
352
368
update_amiga_id (drv , im -> stk_per_rev > stk_ms (300 ));
353
369
if (!(slot -> attributes & AM_RDO ))
354
370
drive_change_output (drv , outp_wrprot , FALSE);
371
+ disk_inserted_output (outp_in , FALSE);
355
372
barrier ();
356
373
drv -> inserted = TRUE;
357
374
motor_chgrst_update_status (drv ); /* update RDY + motor state */
0 commit comments