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.
|
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`
|
### `CONFIG_IEC_JIFFYDOS`
|
||||||
|
|
||||||
Adds support for JiffyDOS fast protocol to the IEC bus.
|
Adds support for JiffyDOS fast protocol to the IEC bus.
|
||||||
|
|||||||
@@ -61,7 +61,7 @@ The following ROM features are currently missing:
|
|||||||
| :-----------: | :------: | :------------------------------------------------: |
|
| :-----------: | :------: | :------------------------------------------------: |
|
||||||
| standard | DONE | |
|
| standard | DONE | |
|
||||||
| JiffyDOS | DONE | |
|
| JiffyDOS | DONE | |
|
||||||
| DolphinDOS | NOT DONE | |
|
| DolphinDOS | PARTIAL | for now only LOAD is accelerated |
|
||||||
| CIA burst mod | NOT DONE | |
|
| CIA burst mod | NOT DONE | |
|
||||||
|
|
||||||
## RS-232
|
## 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
|
||||||
#define CONFIG_IEC_BLANK_SCREEN
|
#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_IEC_JIFFYDOS
|
||||||
|
|
||||||
#define CONFIG_TAPE_NORMAL
|
#define CONFIG_TAPE_NORMAL
|
||||||
|
|||||||
@@ -43,6 +43,7 @@
|
|||||||
|
|
||||||
#define CONFIG_IEC
|
#define CONFIG_IEC
|
||||||
#define CONFIG_IEC_BLANK_SCREEN
|
#define CONFIG_IEC_BLANK_SCREEN
|
||||||
|
#define CONFIG_IEC_DOLPHINDOS
|
||||||
#define CONFIG_IEC_JIFFYDOS
|
#define CONFIG_IEC_JIFFYDOS
|
||||||
|
|
||||||
#define CONFIG_TAPE_NORMAL
|
#define CONFIG_TAPE_NORMAL
|
||||||
|
|||||||
@@ -43,6 +43,7 @@
|
|||||||
|
|
||||||
#define CONFIG_IEC
|
#define CONFIG_IEC
|
||||||
// #define CONFIG_IEC_BLANK_SCREEN
|
// #define CONFIG_IEC_BLANK_SCREEN
|
||||||
|
#define CONFIG_IEC_DOLPHINDOS
|
||||||
#define CONFIG_IEC_JIFFYDOS
|
#define CONFIG_IEC_JIFFYDOS
|
||||||
|
|
||||||
// #define CONFIG_TAPE_NORMAL
|
// #define CONFIG_TAPE_NORMAL
|
||||||
|
|||||||
@@ -43,6 +43,7 @@
|
|||||||
|
|
||||||
#define CONFIG_IEC
|
#define CONFIG_IEC
|
||||||
#define CONFIG_IEC_BLANK_SCREEN
|
#define CONFIG_IEC_BLANK_SCREEN
|
||||||
|
#define CONFIG_IEC_DOLPHINDOS
|
||||||
#define CONFIG_IEC_JIFFYDOS
|
#define CONFIG_IEC_JIFFYDOS
|
||||||
|
|
||||||
#define CONFIG_TAPE_NORMAL
|
#define CONFIG_TAPE_NORMAL
|
||||||
|
|||||||
@@ -107,9 +107,8 @@ load_iec:
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if CONFIG_IEC_DOLPHINDOS
|
#if CONFIG_IEC_DOLPHINDOS
|
||||||
// XXX enable when finished
|
cmp #$02
|
||||||
// cmp #$02
|
beq_far load_dolphindos // branch if DolphinDOS
|
||||||
// beq_far load_dolphindos // branch if JiffyDOS
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -54,8 +54,6 @@ dolphindos_detect_loop:
|
|||||||
|
|
||||||
dolphindos_detect_fail:
|
dolphindos_detect_fail:
|
||||||
|
|
||||||
panic #$00
|
|
||||||
|
|
||||||
rts
|
rts
|
||||||
|
|
||||||
dolphindos_detect_success:
|
dolphindos_detect_success:
|
||||||
|
|||||||
@@ -19,9 +19,60 @@ load_dolphindos:
|
|||||||
|
|
||||||
load_dolphindos_loop:
|
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
|
#endif // CONFIG_IEC_DOLPHINDOS and not CONFIG_MEMORY_MODEL_60K
|
||||||
Reference in new issue
Block a user