I was on the road again and missed this thread the last few days. Yes, I have implemented an "extended attributes file" for Pi1MHz that holds all the mode page details. It will also identify discs correctly and allow for different variable sectors per track. The FileStore doesn't use the fixed 33 sectors per track as in BeebEm. Below is an example for the R0652 drive. The format also allows for other Mode pages to be added.
All the code works and it recognises discs correctly. Writing to the extended attributes file through the page select command isn't quite finished.
The are some limitations with the code from the oddy website. It appears to be based on some very early Pi1MHz firmware (pre-GitHub versions) and is very difficult to integrate with the current release. The filestore utils won't work fully with it as not all the extra SCSI commands have been implemented. It's also hard coded for 33 sectors per track.
The filestore E01 is also running the 1MHz Bus at 2MHz and I found I had to overclock a Pi2Zero for it to communicate, although there were still some dropouts with some commands. Dominic has implemented some changes which should solve this but I haven't been able to test it yet and I'm away from the hardware for the next 2 weeks. I can however check the GitHub repo and make the fork public or invite people when requested.
All the code works and it recognises discs correctly. Writing to the extended attributes file through the page select command isn't quite finished.
Code:
# Hard Drive extended attibutes file for BeebSCSI# Max line length 256## Mode Parameter Pages can be added and removed. They must take the format MPAGEnn# These will be picked up by 1MHz BeebSCSI and BeebEm########################################################################################### RODIME RO652 TYPE 2 21MB (Acorn FileStore E20)########################################################################################## Cylinders 306, Heads 4 = 1,224 Tracks# Sec/Track 61, Byte/Sec 256, Interleave 8 = Total 74,664 Sectors, 19 113 984 bytes total # # includes (C)ACORN in user pages 37 and 38########################################################################################### useful reference documents# Seagate - SCSI Command Reference Manual. https://www.seagate.com/files/staticfiles/support/docs/manual/Interface%20manuals/100293068j.pdf# American National Standard for information systems - SMALL COMPUTER SYSTEM INTERFACE (SCSI). Document Number ANSI X3.131-1986 (X3T9/84-40 Rev. 1B) (X3T9.2/82-2 Rev. 17B)# Adaptec ACB-4000 User's Manual. https://archive.org/details/400003-00a_acb4000um_oct85/page/n49/mode/2up#BETA VERSION v0.01################################################################################################### INQUIRY Data# 00 07|8 15|6 31|2 35|6 43|4 55| | 58 73|4 95|6 # | |R O D I M E |R O 6 5 2 |5 . 4 6| | | | | Version descriptors | Vendor Specific Parameters |Inquiry=0000000031202020524F44494D452020524F3635322020202020202020202020352E34360000009B0D242401208580180703850000FF8810DAA003A9FF4828B16C0849C3289903320849C3D91832F0032008057456512500074C00002085748810DAA003A9# | | | | | | | | | | | | | | | | | | | | |MSB# | | | | | | | | | | | | | | | | | | | | \Copyright Notice (MSB - LSB)# | | | | | | | | | | | | | | | | | | | \Reserved 74 -> 95# | | | | | | | | | | | | | | | | | | \Version Descriptor 8 (MSB, LSB)# | | | | | | | | | | | | | | | | | \Version Descriptor 7 (MSB, LSB)# | | | | | | | | | | | | | | | | \Version Descriptor 6 (MSB, LSB)# | | | | | | | | | | | | | | | \Version Descriptor 5 (MSB, LSB)# | | | | | | | | | | | | | | \Version Descriptor 4 (MSB, LSB)# | | | | | | | | | | | | | \Version Descriptor 3 (MSB, LSB)# | | | | | | | | | | | | \Version Descriptor 2 (MSB, LSB)# | | | | | | | | | | | \Version Descriptor 1 (MSB, LSB)# | | | | | | | | | | \Reserved# | | | | | | | | | \Reserved# | | | | | | | | \Vendor Unique # | | | | | | | \Drive Serial Number# | | | | | | \ Product Revision Level# | | | | | \Product Identification# | | | | \Vendor Identification# | | | \Additional Length# | | \ISO Version | ECMA Version | ANSI Version# | \Removable Media Bit | Device-Type Qualifier# \Peripheral Device Type################################################################################################### MODE PARAMETER Headers## Mode Parameter Header Mode6 - 4 bytesModeParamHeader=10000008# | | | |# | | | \LBA Block Descriptor length# | | | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |# | | \Write Protect | Rsvd | DPOFUA | Reserved |# | \Medium type# \Mode Data length of(MPHeader + LBA BLOCK + Mode Page) -1# e.g. 4bytes +6bytes +[Page1]5bytes -1 = 16bytes (0x10)# This is automatically calculated and overwritten in BeebSCSI# LBA mode parameter block descriptor Mode6 - 8 bytes## | | | 256LBADescriptor=0000000000000100# | | | # | | \Logical Block length (MSB-LSB)# | \Reserved# \Number of Blocks (MSB-LSB)################################################################################################### MODE PARAMETER Pages## PAGE 0x01## /Mode Page - 01 Error Correction Status Parameters# |ModePage1=0103200405# | | | | |# | | | | \Error correction bit span# | | | \Error Recovery retries# | | \| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |# | | | | |TB |RC |EER|PER|DTE|DCR|# | \Page Length# | | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |# \ | PS|SPF| Page Code |# PAGE 0x03## /Mode Page - 03 Format Device Parameters # |ModePage3=03130132013200060006003D010000080000000080# | | | | | | | | | | | | # | | | | | | | | | | | | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |# | | | | | | | | | | | \SSEC | HSEC | RMB | SURF | Drive Type | # | | | | | | | | | | \Cylinder Skew factor (MSB, LSB)# | | | | | | | | | \Track Skew factor (MSB, LSB)# | | | | | | | | \Interleave (MSB, LSB)# | | | | | | | \Data bytes per Physical sector (MSB, LSB)# | | | | | | \Sectors per Track (MSB, LSB)# | | | | | \Alternate Tracks per Volume (MSB, LSB)# | | | | \Alternate Tracks per Zone (MSB, LSB)# | | | \Alternate Sectors per Zone (MSB, LSB)# | | \Tracks per Zone (MSB, LSB)# | \Page Length# | | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |# \ | PS|SPF| Page Code |# PAGE 0x04## /Mode Page - 04 Rigid Drive Geometry Parameters# |ModePage4=040400013204# | | | |# | | | \Number of Heads# | | \Number of Cylinders (MSB-LSB)# | \Page Length# | | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |# \ | PS|SPF| Page Code |# PAGE 0x20## /Mode Page - 32 Serial Number # | |6 2 0 8 1 9 3 3ModePage32=20083632303831393333# | | |# | | \Serial Number# | \Page Length# \Page Code# PAGE 0x21## /Mode Page - 33 Manufacture# | 871013 2 3ModePage33=2106570A0D0286030# | | | | | | |# | | | | | | \Option No# | | | | | \unknown # | | | | \Type # | | | \Build Level # | | \Manufacture Date and Build Level# | \Page Length# \Page Code# PAGE 0x23## /Mode Page - 35 System Flags# |ModePage35=230100# | | |# | | \System Flags# | \Page Length# \Page Code# PAGE 0x24## /Mode Page - 36 Unknown# |ModePage36=24020000# | | # | | # | \Page Length# \Page Code# PAGE 0x25## /Mode Page - 37 User Page 1# | ( C ) AModePage37=250428432941# | | |# | | \Copyright# | \Page Length# \Page Code# PAGE 0x26## /Mode Page - 38 User Page 2 # | c o r nModePage38=2604636F726E# | | |# | | \Copyright# | \Page Length# \Page Code
The filestore E01 is also running the 1MHz Bus at 2MHz and I found I had to overclock a Pi2Zero for it to communicate, although there were still some dropouts with some commands. Dominic has implemented some changes which should solve this but I haven't been able to test it yet and I'm away from the hardware for the next 2 weeks. I can however check the GitHub repo and make the fork public or invite people when requested.
Statistics: Posted by markusher — Sun Dec 22, 2024 1:06 pm