added DolphinDOS optimized LOAD loop
This commit is contained in:
1 parent
3784d7e518
commit
f5eef54df6
16 files changed
+65
-8
No files matched your search
@@ -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.
|
||||
|
||||
@@ -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.
Binary file not shown.
@@ -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
|
||||
|
||||
@@ -43,6 +43,7 @@
|
||||
|
||||
#define CONFIG_IEC
|
||||
#define CONFIG_IEC_BLANK_SCREEN
|
||||
#define CONFIG_IEC_DOLPHINDOS
|
||||
#define CONFIG_IEC_JIFFYDOS
|
||||
|
||||
#define CONFIG_TAPE_NORMAL
|
||||
|
||||
@@ -43,6 +43,7 @@
|
||||
|
||||
#define CONFIG_IEC
|
||||
// #define CONFIG_IEC_BLANK_SCREEN
|
||||
#define CONFIG_IEC_DOLPHINDOS
|
||||
#define CONFIG_IEC_JIFFYDOS
|
||||
|
||||
// #define CONFIG_TAPE_NORMAL
|
||||
|
||||
@@ -43,6 +43,7 @@
|
||||
|
||||
#define CONFIG_IEC
|
||||
#define CONFIG_IEC_BLANK_SCREEN
|
||||
#define CONFIG_IEC_DOLPHINDOS
|
||||
#define CONFIG_IEC_JIFFYDOS
|
||||
|
||||
#define CONFIG_TAPE_NORMAL
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -54,8 +54,6 @@ dolphindos_detect_loop:
|
||||
|
||||
dolphindos_detect_fail:
|
||||
|
||||
panic #$00
|
||||
|
||||
rts
|
||||
|
||||
dolphindos_detect_success:
|
||||
|
||||
@@ -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
|
||||
Reference in new issue
Block a user