From f5eef54df683b1970fdfe4f3aa0eee6448f43044 Mon Sep 17 00:00:00 2001 From: FeralChild64 Date: Thu, 26 Dec 2019 16:05:54 +0100 Subject: [PATCH] added DolphinDOS optimized LOAD loop --- CONFIG.md | 6 +++ STATUS.md | 2 +- bin/basic_generic.rom | Bin 8192 -> 8192 bytes bin/basic_testing.rom | Bin 8192 -> 8192 bytes bin/basic_ultimate64.rom | Bin 8192 -> 8192 bytes bin/kernal_generic.rom | Bin 8192 -> 8192 bytes bin/kernal_testing.rom | Bin 8192 -> 8192 bytes bin/kernal_ultimate64.rom | Bin 8192 -> 8192 bytes bin/mega65.rom | Bin 131072 -> 131072 bytes c64/,,config_custom.s | 2 +- c64/,,config_generic.s | 1 + c64/,,config_testing.s | 1 + c64/,,config_ultimate64.s | 1 + c64/kernal/iec/load_iec.s | 5 +-- c64/kernal/iec_fast/dolphindos_detect.s | 2 - c64/kernal/iec_fast/load_dolphindos.s | 53 +++++++++++++++++++++++- 16 files changed, 65 insertions(+), 8 deletions(-) diff --git a/CONFIG.md b/CONFIG.md index e0badbbf..5de6e5b2 100644 --- a/CONFIG.md +++ b/CONFIG.md @@ -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. diff --git a/STATUS.md b/STATUS.md index 31ed9acc..be9e1b84 100644 --- a/STATUS.md +++ b/STATUS.md @@ -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 diff --git a/bin/basic_generic.rom b/bin/basic_generic.rom index 67d6d76139175c96d00e68361bec8caf4a94f8e6..a96065976fc5ec749161b2ccf62e7fbfca701bce 100644 GIT binary patch delta 178 zcmZp0XmFU|p}FeyN_&M%|1(x8%wMap{`De7AidP;_}Y<{y@lAVhYq(ha%hM8&o>&eO7K|t>0?c7g6 u)I1&?5Os#f5=61{nt&)<-Zr4h%}04>3bL8$xjE|@PEL`p0?9m(R{#KlAW&fd delta 178 zcmZp0XmFU|q1p3hrM<$X{~4Ks7)#xs|P-wf&7x=iAMa>|Bf>9jY8Q%uEyCOitzw0&*vB=Y9&J t=JDu&s53m4Ac~#W1Vq{LwgFXcKFT{&kj+HT%~{WAa*BKvNalgO0szcpPAvcc diff --git a/bin/basic_testing.rom b/bin/basic_testing.rom index 30d6963d3f70f99e61627009a856b665133560e7..5bba54115f639738d6d38d6d4dca37f4c644aa61 100644 GIT binary patch delta 73 zcmZp0XmHrz$HKDUjZeYkAQl~_rEfMju&6Qv>B-C44Y*|9FWsOZ^IieSeaP+vl2zph XX93Z5JP(A}%=Fxx^$aJc$j<=)F>@So delta 73 zcmZp0XmHrz$HJoW*5}3KAQl}a@#mWxSX7yT^yKC223#%gmu^sKd9MKEK4f6LM9t&T0a0goEI|}IuL+2< C8Bb3D delta 187 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 UaE8x)UF9T>`*ZNtkHX;p0PI+{T>t<8 diff --git a/bin/kernal_testing.rom b/bin/kernal_testing.rom index 4ee9d0c3295488a984d2e3469616a7e1a747a65e..34730d2b1312dcf4b5a2a0d2fc86e904a5b707dd 100644 GIT binary patch delta 3014 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 UKTh?#Zix)fFt3Mh|Bt)(e<+4_l>h($ diff --git a/bin/kernal_ultimate64.rom b/bin/kernal_ultimate64.rom index 0851f5247b5780ac69349b1adf730397ef81df96..6e0565b3a8546a979f3ba15caf9f7317092c4059 100644 GIT binary patch delta 4076 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 HnKJ$d6b2{u delta 2071 zcmX|Ce@q+K9Y5cJ&5u${N;0Q`>nS)MXp0UK5l}6QN6bZKlNtqG&-Y zh$h2oF(EX`j2_h>RW`@DLoriUBcvs6g+fC{IGRdFNGN3SO50%!O_pa2-1&_0zK5IL zANRiR{NDS%@8|RVeC%+fIUH%eJp%ikxq&L-$t}iRJAVGt9c2T*z4puPzYA!4_p!Tw z_Uj#`FP4^-C4XTUp2x@C46ciIcyeYkJB`N%Epe2zT=7LnE5MD zcHmw}HlA%`u`M!YUWB*L)H=~Ni3&7fqIZ%@%d-ByHzM6x+0Fy&o4K! zQkGndW`ig{j^=~nxKk2uJI7Ex8J@SY`El}a{<$>Bp1GbqZ^4#duSk34j7$CF5~3VX z;(jg}q8}`y`hhnWHW)k2Dcgpxe^y=s0GMOECvld!&qG`iXAbP5K(M40dSr#5!!s6%XQiA-K!T$~?H#l$N`dKe? zrc-YZuR~rDFG>cP!;LYVH`i=W($s9nhczk9Ws*`{oU{!{#5B%`BQjf_&O`N;HBdOI z3h&JHQDM?Q&6qjlBOT#=hAkuzw(Z-a;FU0@Ay{`(>p+{7fsG0OA(m#M?}y1&lf+HL z*I@4KX|`Kg>NU&CPEgwep8^KU#NIKj7wDpeWpOgJzmavj;|EEXi7OMirIO%kkC!d?f(7j zKd(aFhqNIE?~MrELm4g(zpjZ_d-k*9M?HsF(cg1~9c}FvKhkgAHt=rbc|*%d4W^}G zl9_>pprzK~Vr#Eqx`_W06tBQ(Z)@m}L0EBQ-uJ+3KyO5SvuG*on@N6}_P&vnmn?qb z6f9_uB3@69C_m_C`iGN~uZK}lP!7W$8d~4z{c?R9Xp-z){s5%&>2iVLBzd&_tl<*b zu<|QIJvqG6T3n!s&_v#Zg)jFqJQRP62ZC7$ZUWcnttb@Opry~?I+CTJf(sNK4xv_{`6{D8hsbHh)BN0g5hR#{sKMFUYeIue!Xiu#SZd*PgB2$L7IB10*u(W=UO zrzi(D-#a0jg-KdEGKuOH@vd_M7eycvCT`rNPq&ZukGFS@kM>8}J0qhv?#hqAiwa{_ zFzZ)in_IxFnX^a^nd2TKj0-XanEn%M0>gC~(J2Ze3g}krG07(JBIVE(RTN%v3O*xv zEv}B~3_`!anhSKy{IBYDkj!agvRa~p3>Y=RiSH?uz%#&S`=SrAb7z@=*p-g@7RZn1 zw&$GI^j6W4wx8K3gOL*{c5NeU5d~Xz-{9Np0j=!qLMO=i)$-gK))WRnm@4_5}-5}N3;RnP!BrtdvKb|?04KA_-ZbNF-|e?xJeikB2{LwsZ&H;{iM bY*}B?dMj67%+-I7!v*g?Nc{Oh!jStvLvb>< diff --git a/c64/,,config_custom.s b/c64/,,config_custom.s index 3ab327ae..c6eb3fa8 100644 --- a/c64/,,config_custom.s +++ b/c64/,,config_custom.s @@ -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 diff --git a/c64/,,config_generic.s b/c64/,,config_generic.s index 8049f2c2..b2a02c59 100644 --- a/c64/,,config_generic.s +++ b/c64/,,config_generic.s @@ -43,6 +43,7 @@ #define CONFIG_IEC #define CONFIG_IEC_BLANK_SCREEN +#define CONFIG_IEC_DOLPHINDOS #define CONFIG_IEC_JIFFYDOS #define CONFIG_TAPE_NORMAL diff --git a/c64/,,config_testing.s b/c64/,,config_testing.s index 2134a928..07823cc3 100644 --- a/c64/,,config_testing.s +++ b/c64/,,config_testing.s @@ -43,6 +43,7 @@ #define CONFIG_IEC // #define CONFIG_IEC_BLANK_SCREEN +#define CONFIG_IEC_DOLPHINDOS #define CONFIG_IEC_JIFFYDOS // #define CONFIG_TAPE_NORMAL diff --git a/c64/,,config_ultimate64.s b/c64/,,config_ultimate64.s index 4295ccdd..5a0e5923 100644 --- a/c64/,,config_ultimate64.s +++ b/c64/,,config_ultimate64.s @@ -43,6 +43,7 @@ #define CONFIG_IEC #define CONFIG_IEC_BLANK_SCREEN +#define CONFIG_IEC_DOLPHINDOS #define CONFIG_IEC_JIFFYDOS #define CONFIG_TAPE_NORMAL diff --git a/c64/kernal/iec/load_iec.s b/c64/kernal/iec/load_iec.s index 92c983a1..cf5e5995 100644 --- a/c64/kernal/iec/load_iec.s +++ b/c64/kernal/iec/load_iec.s @@ -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 diff --git a/c64/kernal/iec_fast/dolphindos_detect.s b/c64/kernal/iec_fast/dolphindos_detect.s index b8cb278d..dbdafab7 100644 --- a/c64/kernal/iec_fast/dolphindos_detect.s +++ b/c64/kernal/iec_fast/dolphindos_detect.s @@ -54,8 +54,6 @@ dolphindos_detect_loop: dolphindos_detect_fail: - panic #$00 - rts dolphindos_detect_success: diff --git a/c64/kernal/iec_fast/load_dolphindos.s b/c64/kernal/iec_fast/load_dolphindos.s index a80eba8e..27258a14 100644 --- a/c64/kernal/iec_fast/load_dolphindos.s +++ b/c64/kernal/iec_fast/load_dolphindos.s @@ -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