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

+6
View File
@@ -113,6 +113,12 @@ Needs over 1000 bytes in KERNAL segment. If unsure - enable.
Causes screen blanking during some IEC operations (currently only JiffyDOS file loading) to increase the data transfer performance.
### `CONFIG_IEC_DOLPHINDOS`
Adds support for DolphinDOS fast protocol to the IEC bus, using UserPort cable.
Needs some space in KERNAL segment. If unsure - enable.
### `CONFIG_IEC_JIFFYDOS`
Adds support for JiffyDOS fast protocol to the IEC bus.
+1 -1
View File
@@ -61,7 +61,7 @@ The following ROM features are currently missing:
| :-----------: | :------: | :------------------------------------------------: |
| standard | DONE | |
| JiffyDOS | DONE | |
| DolphinDOS | NOT DONE | |
| DolphinDOS | PARTIAL | for now only LOAD is accelerated |
| CIA burst mod | NOT DONE | |
## RS-232
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
View File
Binary file not shown.
+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