added DolphinDOS optimized LOAD loop

This commit is contained in:
FeralChild64 committed 2019-12-26 16:05:54 +01:00
1 parent 3784d7e518
commit f5eef54df6
16 files changed
+65 -8

No files matched your search

+1 -1
View File
@@ -46,7 +46,7 @@
#define CONFIG_IEC
#define CONFIG_IEC_BLANK_SCREEN
#define CONFIG_IEC_DOLPHINDOS // not finished yet
#define CONFIG_IEC_DOLPHINDOS // not finished yet, but LOAD works
#define CONFIG_IEC_JIFFYDOS
#define CONFIG_TAPE_NORMAL
+1
View File
@@ -43,6 +43,7 @@
#define CONFIG_IEC
#define CONFIG_IEC_BLANK_SCREEN
#define CONFIG_IEC_DOLPHINDOS
#define CONFIG_IEC_JIFFYDOS
#define CONFIG_TAPE_NORMAL
+1
View File
@@ -43,6 +43,7 @@
#define CONFIG_IEC
// #define CONFIG_IEC_BLANK_SCREEN
#define CONFIG_IEC_DOLPHINDOS
#define CONFIG_IEC_JIFFYDOS
// #define CONFIG_TAPE_NORMAL
+1
View File
@@ -43,6 +43,7 @@
#define CONFIG_IEC
#define CONFIG_IEC_BLANK_SCREEN
#define CONFIG_IEC_DOLPHINDOS
#define CONFIG_IEC_JIFFYDOS
#define CONFIG_TAPE_NORMAL
+2 -3
View File
@@ -107,9 +107,8 @@ load_iec:
#endif
#if CONFIG_IEC_DOLPHINDOS
// XXX enable when finished
// cmp #$02
// beq_far load_dolphindos // branch if JiffyDOS
cmp #$02
beq_far load_dolphindos // branch if DolphinDOS
#endif
#endif
-2
View File
@@ -54,8 +54,6 @@ dolphindos_detect_loop:
dolphindos_detect_fail:
panic #$00
rts
dolphindos_detect_success:
+52 -1
View File
@@ -19,9 +19,60 @@ load_dolphindos:
load_dolphindos_loop:
// Check if this was EOI
lda IOSTATUS
and #K_STS_EOI
bne load_dolphindos_end
// Wait for the talker to release the CLK line
!:
bit CIA2_PRA
bvc !-
panic #$00 // XXX this routine is not finished yet
// Release the DATA to signal we are ready
lda CIA2_PRA
and #$FF - BIT_CIA2_PRA_DAT_OUT // release
sta CIA2_PRA
// Wait till data line is released (someone else might be holding it)
!:
lda CIA2_PRA
bpl !-
// Check if EOI - routine can damage .Y, so store it in safe place
sty TBTCNT
jsr iec_rx_check_eoi
ldy TBTCNT
// Retrieve and store byte
lda CIA2_PRB
iny
sta (EAL),y
// Pull DATA to acknowledge
lda CIA2_PRA
ora #BIT_CIA2_PRA_DAT_OUT
sta CIA2_PRA
// Handle EAL
cpy #$FF
bne load_dolphindos_loop
inc EAL+1
jmp load_dolphindos_loop
load_dolphindos_end:
// Update EAL - XXX deduplicate with JiffyDOS counterpart
tya
sec
adc EAL+0
sta EAL+0
bcc !+
inc EAL+1
!:
// End of load loop
jmp load_iec_loop_end
#endif // CONFIG_IEC_DOLPHINDOS and not CONFIG_MEMORY_MODEL_60K