Determine 8" Disk Format

All questions regarding the dumping of media go here.
Post Reply
nauseous
Posts: 4
Joined: Thu May 27, 2021 10:47 pm

Determine 8" Disk Format

Post by nauseous »

Hi All,

I have an old S100 machine with lots of 5" and 8" media to be dumped. The drive I am using for 8" media is a Mitsubishi M2896. Again I am unsure on the current status of this drive and if it is operational.

Successful in getting a dump from the drive, but not able to make any sense of the raw image file. Can't find any FM or MFM encoding being used so far.

From the manual I'm using the below command. I have tried changing value for Sector Size with no luck yet.
dtc -p -f<dumpdir/<dumpfile> -i0 -f<dumpdir/dumpfile>.img -v360 -z0 -g0 -i3 -e76 -l8

Output file can be found here (first 2 tracks): https://www.dropbox.com/s/5qquqnb0wwgn0 ... s.zip?dl=0

Do the attached tracks show signs of data?

Thanks again,
Nauseous
brightcaster
Posts: 433
Joined: Fri Nov 08, 2013 10:48 pm

Re: Determine 8" Disk Format

Post by brightcaster »

It's only noise on the tracks you submitted....

David
SomeGuy
Posts: 333
Joined: Wed Feb 18, 2015 8:18 pm

Re: Determine 8" Disk Format

Post by SomeGuy »

I've also got an M2896, it has worked well for me.

At a glance, that dump looks like 100% noise. Check that the drive heads are clean, and that the head is engaging when the drive is activated. Hopefully your disks have not been degaussed.

Until the issue is resolved, I'd recommend using the GUI tool to make preservation stream dumps, and watching the histogram. That will visually show you if you are getting "something" or just noise.
nauseous
Posts: 4
Joined: Thu May 27, 2021 10:47 pm

Re: Determine 8" Disk Format

Post by nauseous »

Hi Someguy,

I have 2 of these 8" drives. One is reading maxtrack = 79, the other maxtrack = 41. Would you mind confirming what you are seeing with your drive? I suspect the unit with lower value is at fault.
SomeGuy
Posts: 333
Joined: Wed Feb 18, 2015 8:18 pm

Re: Determine 8" Disk Format

Post by SomeGuy »

I don't have mine hooked up at the moment. As I recall it would step to 79 or 80.

But 8" drives are all officially 77 track drives. Anything past that is just extra because the drive's microcontroller or physical stop hasn't stopped the head from moving. If I recall correctly, the Kryoflux calibration tool is only designed to detect 40 and 80 track drives, so it does not always work right on 8" drives. Instead you have to feed the max track value 77 in to the DTC GUI. If you are concerned about the head moving correctly, you will have to physically watch it as it steps over all tracks. (If it starts banging the head when the software says it is only on track 39 or so then double stepping is incorrectly turned on).

This model of drive has enough jumper options, you WILL need to consult the tecnical manual to make sure they are set appropriately.
nauseous
Posts: 4
Joined: Thu May 27, 2021 10:47 pm

Re: Determine 8" Disk Format

Post by nauseous »

OK I have the drive working and have managed to dump a couple of disks to preservation streams. The drive head solenoid was not engaging due to being stuck in place.. I have attached the first disk image which could possibly be from a Burroughs S1000 machine. It has 4bytes of CRC at the end of each sector...?

Hoping someone might be able to have a look at this image for me and see how we might be able to extract data and possibly files from the image.
https://www.dropbox.com/s/5yv2n71j7lo1o ... w.zip?dl=0

Cheers
brightcaster
Posts: 433
Joined: Fri Nov 08, 2013 10:48 pm

Re: Determine 8" Disk Format

Post by brightcaster »

The Floppy contains some mbasic sourcecode for DOS68D v5.1 on this machine:

http://www.computercloset.org/SmokeSignalChieftain.htm

David
brightcaster
Posts: 433
Joined: Fri Nov 08, 2013 10:48 pm

Re: Determine 8" Disk Format

Post by brightcaster »

You can dump it to an FM sector image with 26 sectors, 128 byte each, 77 tracks, double sided. But I can't find any details on the filesystem DOS68 used. So no tool for getting the files of that image so far. But you can look at the image with a hex/ascii editor as I did.

David
ZrX
Posts: 658
Joined: Tue Dec 06, 2011 9:09 pm

Re: Determine 8" Disk Format

Post by ZrX »

Disk format is pretty simple. There are 128 byte directory sectors that contain references to the next and previous sectors (all the file sectors also follow this format) and then 5 file entries. Next are the 5 files, and after the 5 files there's a next directory sector, and so on.

Code: Select all

0001 REM CHEQUE.BAS 160680
0010 GOSUB 9600
0020 GOTO 1000
0200 PRINT #P1,CHR$(27);"=";CHR$(31+P8);CHR$(31+P9);:RET.
0204 PRINT #P1,CHR$(27);CHR$(34);:RET.
0208 REM 'RETURN' TO DISALLOW KEYBOARD DISABLE
0209 PRINT #P1,CHR$(27);"#";:RET.
0210 PRINT #P1,CHR$(7);
0212 GOSUB 200:P.#P1,CHR$(27);"T";:RET.
0214 GOSUB 200:GOSUB204:IN.#P1,P$:GOS.208:RET.
0220 GOSUB 200:P.#P1,P$;:RET.
0222 GOSUB 200:P.#P1,P;:RET.
0224 GOSUB 200:P.#P1,CHR$(27);"Y";:RET.
0226 GOSUB 214:P=1:IFASC(P$)=45P=-1:P$=MID$(P$,2,10)
0227 IF ASC(P$)=69T.230
0229 LET P=P*VAL("0"+P$):IFP>=P6IFP<=P7RET.
0230 GOSUB 210:G.226
0232 GOSUB 214:IFLEN(P$)>=P6IFLEN(P$)<=P7RET.
0234 GOSUB 210:G.232
0238 PRINT #P1,CHR$(27);"*";:RET.
0242 LET P8=24:P9=75
0243 LET P6=1:P7=1:GOS.232:IFP$="Y"P=1:RET.
0244 IF P$="N"P=0:RET.
0246 GOSUB 210:T.243
0900 LET X=P8
0902 READ #1,P8:RE.#1,P9:RE.#1,P$:IFSTA.#1=6CL.#1:P8=X:RET.
0903 GOSUB 212:GOS.220:T.902
1000 LET I$="CHQ1.MEN"
1001 OPEN #1,I$
1002 GOSUB 238:P.#P1,CHR$(27);")";
1003 GOSUB 9624:GOS.900:P.#P1,CHR$(27);"(";CHR$(27);"&";
2010 GOSUB 224:P6=1:P7=6:P8=10:P9=20:GOS.226
2011 LET P9=21:GOS.224:GOS.220
2012 IF P=3 GOS.204:GOS.3000:T.2010
2014 IF P=1 GOS.204:GOS.3500:T.2010
2016 IF P=2 GOS.4000:T.2010
2017 IF P=6T.2200
2018 IF P=4T.2300
2020 IF P=5 GOS.3400:T.2010
2090 LET P$=P$+" "+"Not Implemented":GOS.220:WAIT10
2100 GOTO 2010
2200 CLOSE #11
2202 CHAIN AMASTE.BAS
2300 LET V(1)=3:V(2)=3:V(15)=3
2302 GOSUB 2400
2310 GOTO 2010
2400 SET RECNO#11=1
2402 PUT #11,V(1),V(2),V(3),V(4),V(5),V(6),V(7),V(8),V(9),V(10),V(11),V(12),V(13),V(14),V(15)
2404 RETURN 
3000 LET P6=0:P7=1000
3002 LET P8=6:P9=72:GOS.226:V0(1)=P*2+1:IFV0(1)>=V(3)T.3002
3003 IF V0(1)<3T.3002
3004 LET P6=0:P7=999999:P8=7:P9=72:GOS.226:V0(2)=P
3006 LET P8=8:P9=72:GOS.243:IFP=0T.3006
3007 LET P9=P9+3:GOS.220
3009 GOSUB 204
3010 LET I3=0:I4=0:I0=V0(1):T4=1:T5=10
3012 IF I0>=V(1) RET.
3020 IF PEEK(P4)=P5RET.
3022 RECNO #11=I0
3024 GET #11,I1,I$(1)
3026 IF I1<>100T.3040
3028 LET I0=I0+1:RECNO#11=I0:GET#11,I2,I$(2)
3030 IF I2<>100.1P.#P1,"Fatal Error in Cheque Audit Trail":STOP
3032 GOSUB 3100
3040 LET I0=I0+1:IFI0<V(1)T.3020
3042 RETURN 
3100 LET I3=I3+1:I$(3)=D$:DIGITS=0:RJUST=0
3102 LET I$(4)=STR$(V0(2)):V0(2)=V0(2)+1
3104 LET I$(5)=MID$(I$(1),1,6)
3105 LET I$(6)=MID$(I$(1),7,6)
3106 LET I$(7)=MID$(I$(1),27,14)
3107 LET I=VAL(MID$(I$(1),19,8)):DIGITS=2:RJUST=0:I$(11)=STR$(I/100) 
3110 LET I4=I4+I:I$(14)=STR$(I4/100)
3112 DIGITS= 0:I$(13)=STR$(I3)
3120 LET K=0:F.I=1TO3:S=ASC(MID$(I$(2),4-I,1))-48:I$(7+I)=MID$(I$(2),4+K,S):K=K+S:N.I
3121 DIGITS= 0:RJUST=0
3122 LET I$=I$(11):GOS.3200:I$(12)=J$:GOS.3300:RET.
3200 LET I=VAL(I$)*100:I=INT(ABS(I)):J0=INT(I/100):J1=I-J0*100:I$=RIGHT$("000000"+STR$(J0),6)
3201 LET M$="þZEROýONEýTWO THREEþFOURþFIVEýSIX SEVEN EIGHTþNINEýTEN"
3210 LET K0=0:J$="":F.I=1TO6:L$=MID$(I$,I,1):L=VAL(L$):IFL<>0K0=1
3212 LET K$=MID$(M$,6*L+1,6):IFK0=0 K$="þ****"
3214 LET J$=J$+K$:N.I
3216 LET J$=J$+"þ"+RIGHT$("00"+STR$(J1),2)
3220 RETURN 
3300 LET T4=1:T5=10
3302 LET T6=1:GOS.7120:P.#P2,TAB(5);I$(3);TAB(15);I$(4);TAB(25);I$(12);TAB(75);I$(11);TAB(100);I$(8);TAB(120);I$(5);:GOS.7100
3304 LET T6=4:GOS.7120:P.#P2,TAB(15);I$(8);TAB(100);I$(3);TAB(110);I$(4);TAB(120);I$(11);:GOS.7100
3306 LET T6=5:GOS.7120:P.#P2,TAB(15);I$(9);TAB(100);I$(6);TAB(110);I$(7);:GOS.7100
3308 LET T6=6:GOS.7120:P.#P2,TAB(15);I$(10);TAB(100);I$(13);TAB(110);I$(14);:GOS.7100
3318 GOSUB 7130:RET.
3400 FOR I=1TO14:I$(I)="******":N.I
3402 LET I$(12)="þ****þ****þ****þ****þ****þ****þ**"
3406 GOSUB 3300:RET.
3500 LET I3=0:I4=0:I0=V(2):S4=1
3502 IF V(2)>=V(1) RET.
3504 GOSUB 7000
3510 IF PEEK(P4)=P5 RET.
3512 SET RECNO#11=I0
3514 GET #11,I1,I$(1)
3516 IF I1<>100 T.3600
3518 LET I0=I0+1:RECNO#11=I0
3520 GET #11,I2,I$(2)
3522 IF I2<>100.1 P.#P2,"FATAL ERROR":STOP
3524 LET I3=I3+1:DIGITS=0:RJUST=0
3525 LET K=0:I$(3)=""
3526 FOR I=1TO3:J=ASC(MID$(I$(2),4-I,1))-48:J$=MID$(I$(2),4+K,J):I$(3)=I$(3)+J$+" ":K=K+J:N.I
3530 LET I=INT((I0-1)/2)
3532 PRINT #P2,I;TAB(7);MID$(I$(1),1,12);TAB(19);MID$(I$(1),27,14);TAB(35);MID$(I$(3),1,73);
3534 LET I=VAL(MID$(I$(1),19,8)):I4=I4+I:DIGITS=2:RJUST=7
3536 PRINT #P2,TAB(110);I/100;:GOS.7050
3600 LET I0=I0+1:IFI0<V(1)T.3512
3610 RJUST= 0:DIGITS=0:P.#P2,TAB(110);"----------";:GOS.7050
3612 PRINT #P2,"Total Number of Cheques ";I3;
3614 RJUST= 7:DIGITS=2:P.#P2,TAB(110);I4/100;:GOS.7050
3620 GOSUB 7070:RET.
3625 LET K=0:I$(3)=""
4000 LET P8=17:P9=1:GOS.224:I0=V(2):I1=I0:I2=0
4002 LET P6=0:P8=17:P9=1:P7=3:GOS.232:IFP$="?"OP.#1,"CHQ2.MEN":P8=20:P9=1:GOS.900:T.4002
4010 IF P$="E"RET.
4020 IF P$="N" I1=V(1):F.I=3TO9:I$(I)="":N.I:T.4100
4022 IF P$=""I1=I0:T.4030
4024 IF P$="D"IFI2=1T.4080
4025 IF P$="C"IFI2=1 I0=I0-2:I1=I0:T.4102
4028 LET P=INT(VAL("0"+P$)):P=2*P+1:IFP>=3IFP<=V(1) I1=P:I0=P:T.4030
4029 LET P9=1:P$="Sequence Number Out of Range":GOS.224:GOS.220:WAIT10:T.4000
4030 RECNO #11=I0:GET#11,I3,I$(1):I0=I0+1:IFI0>=V(1)P9=1:P$="End Cheque File":GOS.224:GOS.220:WAIT10:T.4000
4032 IF I3<>100 T.4030
4034 RECNO #11=I0:GET#11,I4,I$(2):I0=I0+1:IFI4<>100.1 T.4030
4040 LET I$(3)=MID$(I$(1),1,6)
4041 LET I$(4)=MID$(I$(1),7,6)
4042 LET I$(5)=MID$(I$(1),27,14)
4043 DIGITS= 2:RJUST=0:I=VAL(MID$(I$(1),19,8)):I$(9)=STR$(I/100)
4050 LET K=0:F.I=1TO3:S=ASC(MID$(I$(2),4-I,1))-48:I$(5+I)=MID$(I$(2),4+K,S):K=K+S:N.I
4060 LET K0=I0-2:GOS.4600
4070 LET I2=1:T.4002
4080 RECNO #11=I0-2:PUT#11,0,I$(1):P8=17:P9=1:GOS.224:I2=0:T.4002
4100 LET P8=17:P=INT((I1-1)/2):P9=4:GOS.224:GOS.222:T.4110
4102 LET K0=I1:GOS.4600:P8=17
4110 LET P8=17
4111 LET P9=8:I$=I$(3):P6=0:P7=6:GOS.4200:I$(3)=I$
4112 LET P6=0:P7=5:P9=16:I$=I$(4):GOS.4200:I$(4)=I$
4114 LET P6=0:P7=14:P9=26:I$=I$(5):GOS.4200:I$(5)=I$
4116 LET P6=0:P7=25:P9=41:I$=I$(6):GOS.4200:I$(6)=I$
4118 LET P6=0:P7=25:P8=18:P9=41:I$=I$(7):GOS.4200:I$(7)=I$
4120 LET P6=0:P7=25:P8=19:P9=41:I$=I$(8):GOS.4200:I$(8)=I$
4122 LET P6=0:P7=10:P8=17:P9=68:I$=I$(9):GOS.4200:IFP$="E"T.4122
4124 LET P=VAL("0"+I$):IFP=0T.4122
4125 LET P=INT(P*100)/100
4126 LET I$(9)=STR$(P)
4158 LET K0=I1:GOS.4600:P8=17
4160 GOSUB 242:IFP=0T.4110
4162 LET I$(1)=MID$(I$(3)+"ú",1,6)+MID$(I$(4)+"ú",1,6)+MID$(D$+"ú",1,6)
4164 LET I=VAL("0"+I$(9)):I$=STR$(INT(I*100))
4166 LET I$(1)=I$(1)+MID$(I$+"ø",1,8)+MID$(I$(5)+"ì",1,20)
4170 LET I$(2)="":F.I=1TO3:I$(2)=CHR$(LEN(I$(5+I))+48)+I$(2)+I$(5+I):N.I
4172 LET I2=1:I0=I1+2
4174 RECNO #11=I1:PUT#11,100,I$(1):RECNO#11=I1+1:PUT#11,100.1,I$(2):IFI1<V(1)T.4002
4176 LET V(1)=V(1)+2:V(15)=V(1):GOS.2400:T.4002
4200 LET I=P9:P9=I-2
4201 GOSUB 232:IFP$<>""I$=P$:RET.
4202 IF I$=""T.4201
4204 RETURN 
4600 DIGITS= 0:RJUST=0:P=INT((K0-1)/2):P9=4:GOS.224:GOS.222
4602 LET P9=9:P$=I$(3):GOS.220
4603 LET P9=18:P$=I$(4):GOS.220
4604 LET P9=28:P$=I$(5):GOS.220
4605 LET P9=43:P$=I$(6):GOS.220
4606 LET P9=70:P$=I$(9):GOS.220
4607 LET P8=18:P9=1:GOS.224:P9=43:P$=I$(7):GOS.220
4608 LET P8=19:P9=1:GOS.224:P9=43:P$=I$(8):GOS.220
4610 RETURN 
7000 LET S5=S5+1:X=66-LEN(M$)*.5
7002 PRINT #P2,"Cheque Report":TAB(X);M$;TAB(105);"Date ";D$;TAB(120);"Page ";S5;:GOS.7050
7003 GOSUB 7050
7004 PRINT #P2,"Sequ";TAB(7);"Accnt";TAB(13);"Ref";TAB(19);"Details";TAB(35);"Name & Address";TAB(114);"Amount";:GOS.7050
7005 PRINT #P2,"No";TAB(7);"No";TAB(13);"No";:GOS.7050
7010 RETURN 
7050 PRINT #P2:S4=S4+1:IFS4<=S1-S6RET.
7052 FOR S4=1TOS6þ:P.#P2:N.S4
7054 LET S4=1:GOS.7000:RET.
7070 IF S4=1RET.
7072 FOR J=S4TOS1:P.#P2 :N.J:S4=1:RET.
7100 PRINT #P2:T4=T4+1:IFT4>T5 T4=T4-T5
7102 RETURN 
7120 IF T4=T6 RET.
7122 GOSUB 7100:T.7120
7130 IF T4=1 RET.
7132 FOR T2=T4TOT5:P.#P2:N.T2:T4=1:RET.
9600 DLM=OFF :LIN.0:RJ.0:DIG.0
9602 PRINT #5,CHR$(6);:I.#5,X:I.#5,X:I.#5,P1:I.#5,P2:I.#5,X:I.#5,L1:I.#5,L2
9604 INPUT #5,X:I.#5,X:I.#5,P4:I.#5,P5:I.#5,S2:I.#5,F8:P.#5,CHR$(6);
9606 STRING= F8:I.#5,X:I.#5,D$
9608 FOR J=1TO14:I.#5,N$:N.J:I.#5,M$
9610 INPUT #5,Q:DIMQ1(Q),Q0(Q):F.J=1TOQ:I.#5,Q0(J):I.#5,Q1(J):N.J
9612 DIM A(9):F.J=1TO9:I.#5,A(J):N.J:P.#5,CHR$(6);
9618 LET S6=L1-L2:S1=L1:S4=1
9619 DIM V(15),I$(14)
9620 LET N$="CHEQUE.BAT"
9622 LET X=40-LEN(M$)*.5:P.#P1,CHR$(27);"*"
9623 GOSUB 9624:T.9660
9624 PRINT #P1,"Process Cheques";TAB(X);M$;TAB(66);"Date ";D$:P.#P1:RET.
9660 IF FCHKN$=0T.9666
9662 PRINT #P1,"Cheque Audit Trail not found"
9664 PRINT #P1,"Restart system with correct disk":G.9999
9666 OPEN #11,N$
9667 READ #11,V(1),V(2),V(3),V(4),V(5),V(6),V(7),V(8),V(9),V(10),V(11),V(12),V(13),V(14),V(15)
9668 IF V(1)=V(15)T.9680
9669 PRINT #P1,"Cheque Audit Trail inconsistency"
9670 PRINT #P1,"Reenter all data since last successful run"
9672 GOTO 9999
9680 RETURN 
9999 END 
Post Reply