This patch is a not quite working patch to add support for the Opus Discovery. To try the patch out, you will also need the opus-22 rom file from http://www.shadowmagic.org.uk/spectrum/roms.html in the roms directory, it should be named "opus.rom".
It was cobbled together based on the +D code in Fuse mixed with some of the Opus emulation code from EightyOne, and is only enabled for the 48k machine for now.
At the moment, when an opus disk is inserted and a CAT "m";1 command is issued, the drive spins up and there is disk activity, but the CAT never terminates and I am not sure why.
I am putting the patch up in the hope that someone else can have a look to see if they can take it further.
This patch fix some problems, so with this, CAT works.
1. Opus count sectors from 0 not 1 (disk.c)
2. There is a bug in wd_fdc.c about SEEK if spinup already done...
3. There is a bug in wd_fdc.c around status register RECORD TYPE/SPINUP bit
4. Opus need datarq (DRQ) for every transfered data byte
Here is the gzipped and uuencoded patch:
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
MFH<BPI4@1$R[$LQ@.AHYP5R0G!*123_:YL#N?Q<%2N%?H#R9L07!Y.$^YJW\ M`U6'LBX0(G.)&X.M4TQW31?/Y?1C3#MYSDQG")`*C_U/CHEW#_"PO,_/R94:
M&,"[-F2P`62^)^S#N7EQ?F8VKLSKF^MFDN,]#NG0B2;[1,U4&C5(J_%C7SF2
MQ#1_&O:L`-PPA,@`EQ3LQ5$<T4WE`!9/VNDVNDWS-Q#DQ4?EU(IF1?HY??K^
M?AVSTVRC`51M;*RQ5Z]+$C?5%.[=$/0=4E`Y2]N\NNG>M&^N63E9'RN"^7*2
M!Q(GV-LZ'EU7=K<-]1`23PI&%N:Q>VR3&?5Z?)2YA#"289`VFX]N-*0DHY24
M39AN`-I7KVJ;@!_DX(^FF$+)R5B-Z77XV*RA$C`8R%AR\":2>.":.\:LO@J>
MO0_)N1^8X+<<FZ"UM<JSH&"N5_%Z-%$OY$M23DM0^EO+R)Y`N5&`F3L/YB<P
M^<&3*$1FT<I"_?[^OF9LL\K^_J%F)/J8U\9Z,9;8<HJU;CNC=1?0>+@MM$[^
M@_[A*#*!6PX[952=P28T4#R4Q=^O^1AYU"Y^G?#:<SS[:EJ_]6HEI?_R!>2\ M`@10#0#)\(2$6'AW';/[\;:I<^R"&RNS,2$JB[]I=IK-]X3[%9L_R#QO7C8^
M2HPI]BL6O\C>.[>MZ[O;(M50/&Z,3;07$\75.KE;D==L4R`L*:83%^?F8&XW
M&^>"G\4#/K1;W29G1>657#>ZE>!_DEL92=,)JVL)>9')FU6[BZEZ,4T9;J`^
MF*Y+7%E]PM8Y*Z=N,M23L]C,%`GRQ:C3DIOID2K?25HY62TOJ6\MI[245IVG
MVVZ<O6=HO10+'QK\;*VNRPM@9$9B#G[TOTGWC+9.Q0[$6Y6C".@:C*S[4+BL
MR\8O=(&+\VZ!9WMWU_DH6;IH9U;-?@XC5;^"LC!Y$;Q2.8:M$7?LOC\%A&CG
M#&O>(6[3'`!V>S)_RK?$GK]AP_)L6P/W>"XF.&;]H(^Q06F@,1M^`E)"9S%>
M1*^)DTM^A5.O'^K)4;`BPL`IMNROW-55E/VOD,%"/1=N'YS)R!A<_J/#/(P7
M+/CX'#&AQ4"S(H29<<]V7<8]\&T:BB@+@5_Q<&75B(7^:2IX0?1"#!$'5%*J
M<J7'R?T`7=\]U';PHB\P/A4,?EN&+\?N!<RNU>83]O]:&E]GI')T:OK=$CF.
M74GCZH4Y7-$P5(^Z!GF"KNW7=U$S*L`U/O*(M7T(WSU@Z<`/V-#R[!%F?M'0
M895S%F?I))(S2`<#]WX8L5*_S/3#P\,M"/CW62>:6D&$I17["7Q%X("7[#^P
M*V?JN4Z@L5M(V]P)>^]XMC4::83K?.Q&P1/K6)X5N)[&SBT4$?P>1?P:`/M'
MRSX25$+."CX$YCK<JN]LZ7N0@ASM&$?ZSG_CQ2)[S/XA8+I#-\2JTGU@C1E\ MQ6M'+/0'T:,5.,?LR9^RON6!.0&SHL#M3<%CN50KK,'JQ[X-NRDA@L8I2#D@
M1@`/QB'S!_3CE^L[]HOC.8$U8K?3WLCMLTNW[WBP`5DP-[:$0P?=*R%"D`ND
MHB.H8!?@@D&903C'S`'-ADE@&R=A&7(2@5%C?D!82E:$Q`>,'U>5@>(G-K*B
M!+8Z@P/)0FV0)B$?^A#S1D-`":M\=$<CUG/`@IS!5,@&1C,\*;NYZ[+&]4?V
MH=%N-ZZ['X\96B+H"]DFX<(K[2Z@AI4%EA<]P0((Q56S??8KP#3>M2Y;W8^P
M#G;1ZEXW.QUV<=-F#7;;:'=;9W>7C3:[O6O?WG2:5<8Z#A+&E6T.GP<D*V`E
MKVR'<NT?0;PAT#>R09%A\PZ<O@/;-7H@K&0L(\&1[]T3+EPIC$Z8>0S^D7E^
M)*^01?Y<V6JLY?6KG)^[.@RSO`>P++`5```D%^X`)K@8^3X8R#L?RVX:NVJP
MNJ'K]2U]NZZSNTY#KJPQ!;X'>.TGLOH@-P]8,*9YCL0(;F-';$*?6^@6WH9#
MR_8?Q]:]VZ_ZP7UU^B`&<X,]8J'=0YM]ZT6C1S\8V=6^/\8AZ$656R$_T0VE
M^^KP--VLG*#G^E#KO!S(.DPPL:+,I1/AIK.MOCT=91OEU12EB>Y8\NLM2JN\ M-I!IGKJUJ9MI$W6O[$1T+@RMN,7@/@9ZA(IW[T0@AW'/%[9((90"^/=!O0;_
M"1VTV\X`EL;HZGVW_=$$P_BE6<)<,"RSDL!A.MYT#/J(@1=X<7DF3;>?(KS9
MX03W3JF,,9^!P?*?M$N]>@:XCEDTS<Y_E3$`7:M@(8_?\?@$!D57+R"T/U8[
M^.4/WKI6P6T8[";N=G%+-"=3B,.S_;R+]M%CE25TP>[Z[HI?O^HP0X'C(F&;
MA!N^'6=Z1'3.+^WAU_"/'+Z_5$)RESWX71]K_`?>8,%Z56HX71\3UX%`DTJT
MD*$5V/PW!0.YH<DU''G_K&B40R<HMAEZU@2<%>!6:<-6MDE_"Z$'@3]^)FCD
M/Q.0!V(DQC2@3?=L1E88F2(NTXA1F+^D`BG"M0DN*:`P3ESU$Q-Q.S?1IYE"
MFY0FT+A_<Z^5B$.+?R8L3]JR#$YZ4LQ+FA7&:#C55Z(.:5ZKT`"\!92YTYBV
M"?X<62[:!/6JPI3]</8016?BRXW*S%-OX=SUQ7//&%(TMR)\04)>JP49F"Z\ M3CU?$Q<R25ZYFW!@8WBW*G=9+==.=%/[<2$B?0:B7+M`I!.B&>M3DP_Q3*3T
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
MW_?OUQ4URFBB2`1@"]P1!!B34?&_%-:4]-Z#V>#[`?NW_(F*8N,WZ+T'
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
M0"H"H.DC,UN,%G?Q[XVJO!R2%<O#NHBF(KMMA5O-M)^K=4%,PT8)6!F(0T/\ M:$'(.\$092:^7]ZA8JPW[?/?)140;RS\::DS`6M4(<(%!V'/&:VV\H#SGCT;
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
M-KPRN'<B5<+"7EFS[)6*`(^SLJPI8H?HBO3`[>`LZA2WI#<M"HM:5'6M>QV\ M"9VS53D-6@.5-^%^-0AWA8R3Z36@?<<*0&K'JP+`AO]3ILM#'@!?"_-!#`>X
M59P6B[L.YCCQY8,4I3!:@4(]R.[W`>Y>_B+3M:L05._X\/RB\T[VY'\<UI<*
$?KD`````
`
end
Updated with Gergeley's fixes
Thanks very much for having a look at this. I've freshened the patch with your changes, but am not having any luck reproducing your success with CAT. This is what I have tried, what process is working for you?:
1) ./fuse --opus
2) Media->Disk->Opus->Disk 1->Insert New...
3) CAT 1
4) g Disk I/O error, 0:1
and
1) ./fuse --opus
2) Media->Disk->Opus>Disk 1->Insert... select sdcnlco.opd (from http://web.tiscali.it/spectrumnostalgia/sdcnl/sdcnlco.zip\)
3) CAT 1
4) g Disk I/O error, 0:1
Hmmm... CAT seems to work only first time. After some disk activity, it hangs up...
Corrected version of Gergely's fixed patch
I reapplied your patch and can get the same results as you - CAT works (for some files) and a lock up occurs.
Seems like we can get stuck in wd_fdc_event(), see stack trace below where we seem to be stuck with last_tstates == 41615 towards the end of a CAT of a big directory:
0x0004b272 in crc_fdc (crc=65535, data=195 '?') at crc.c:69
69 return ( ( crc << 8 ) ^ crc_fdc_table[( ( crc >> 8 ) ^ data ) & 0xff] ) &
(gdb) bt
#0 0x0004b272 in crc_fdc (crc=65535, data=195 '?') at crc.c:69
#1 0x0005b6d5 in crc_add (f=0x1f8c280, d=0xcfcb80) at wd_fdc.c:209
#2 0x0005b779 in read_id (f=0x1f8c280) at wd_fdc.c:232
#3 0x0005bf63 in wd_fdc_seek_verify_read_id (f=0x1f8c280) at wd_fdc.c:406
#4 0x0005c1ce in wd_fdc_seek_verify (f=0x1f8c280) at wd_fdc.c:458
#5 0x0005d251 in wd_fdc_event (last_tstates=41615, event=11, user_data=0x1f8c280) at wd_fdc.c:810
#6 0x00005f47 in event_do_events () at event.c:147
#7 0x000063b5 in main (argc=1, argv=0xbffff440) at fuse.c:171
(gdb) c
Continuing.
^C
Program received signal SIGINT, Interrupt.
0x00053fc8 in fdd_read_write_data (d=0xcfcb80, write=FDD_READ) at fdd.c:302
302 if( d->loaded && d->motoron ) { /* spin the disk */
(gdb) bt
#0 0x00053fc8 in fdd_read_write_data (d=0xcfcb80, write=FDD_READ) at fdd.c:302
#1 0x0005b74e in read_id (f=0x1f8c280) at wd_fdc.c:230
#2 0x0005bf63 in wd_fdc_seek_verify_read_id (f=0x1f8c280) at wd_fdc.c:406
#3 0x0005c1ce in wd_fdc_seek_verify (f=0x1f8c280) at wd_fdc.c:458
#4 0x0005d251 in wd_fdc_event (last_tstates=41615, event=11, user_data=0x1f8c280) at wd_fdc.c:810
#5 0x00005f47 in event_do_events () at event.c:147
#6 0x000063b5 in main (argc=1, argv=0xbffff440) at fuse.c:171
(gdb)
Version from the Opus development branch committed in revision 4060.
This Tracker item was closed automatically by the system. It was
previously set to a Pending status, and the original submitter
did not respond within 14 days (the time period specified by
the administrator of this Tracker).