DataMuseum.dk

Presents historical artifacts from the history of:

CR80 Hard and Floppy Disks

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about CR80 Hard and Floppy Disks

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦7ec990d4c⟧ TextFile

    Length: 4896 (0x1320)
    Types: TextFile
    Names: »DISKDRVPARAMS.S«

Derivation

└─⟦732a9e2da⟧ Bits:30005117 8" CR80 Floppy CR80FD_0076 ( CR/D/2322 Diverse systemmoduler SWELL PREFIX F Copy af CRD2315 I K CRD2322 810225 AEK S )
    └─⟦b9b5abdc9⟧ 
        └─ ⟦this⟧ »SWELLPREFIX.D!DISKDRVPARAMS.S« 

TextFile

"-----------------------------------------------------------------------
"
"  MODULE NAME:      DISK DRIVER PARAMETERS
"                    ----------------------
"
"
"  MODULE ID NMB:    CSS/881
"  MODULE VERSION:   0102
"  MODULE TYPE:      PREFIX
"  MODULE FILES:     -
"  MERGE  FILES:     -
"  
"  SPECIFICATIONS:   CR80 DISK DRIVER PRODUCT SPECIFICATION,
"                    CSS/006/PSP/0005.
"  AUTHOR/DATE:      JHO/790323
"
"  DELIVERABLE:      YES
"  SOURCE LANGUAGE:  SWELL
"  COMPILE COMPUTER: CR80
"  TARGET COMPUTER:  CR80
"  OPER. SYSTEM:     AMOS
"
"
"-----------------------------------------------------------------------
"
"  CHANGE RECORD
"
"  VERSION    AUTHOR/DATE    DESCRIPTION OF CHANGE
"  -------    -----------    ---------------------
"
"    001      GMC/801020     INITIAL RELEASE.
"
"   0102      AEK/810211     CHANGE TO DISK_XFER_MSG TO FACILITATE
"                            HANDLING OF THE SPECIFICATION OF THE
"                            SECTORS TO BE TRANSFERRED
"-----------------------------------------------------------------------



"THROUGHOUT, A SECTORS'S NUMBER MEANS ITS LOGICAL SECTOR NUMBER, AS
"DEFINED IN THE DISK DRIVER PSP. NOTE THAT THIS IS A 3 BYTE INTEGER.


"PAGE«ff»
"COMMANDS
"--------

CONST
  DISK_READ              = 0;
  DISK_WRITE             = 1;
  DISK_WRITE_AND_PROTECT = 2;
  DISK_WRITE_AND_MARK    = 3;
  DISK_FORMAT            = 4;
  DISK_CHECK             = 6;
  DISK_INITIALISE        = 7;
  DISK_INCLUDE           = 8;
  DISK_EXCLUDE           = 9;
TYPE
  DISK_DRV_CMD = DISK_READ..DISK_EXCLUDE;



"FORMAT OF A DISK TRANSFER REQUEST
"---------------------------------

CONST
  FIRST_MOST = 0;
  SECT_COUNT = 1;

TYPE
  LOGICAL_SECTORS_SPEC =
    RECORD
      FIRST_LEAST : INTEGER;  "2 LEAST SIGNIF BYTES OF 1ST SECT'S NBR
      FIELD2      : ARRAY [FIRST_MOST..SECT_COUNT] OF BYTE
    END;

TYPE
  DISK_XFER_MSG =
    RECORD
      STD               : INTEGER;  "STANDARD, NOT USED
      CMD_PRIV_UNIT     : INTEGER;  "COMPOUND OF COMMAND, PRIVACY, UNIT
                                    " AND SUBUNIT FIELDS
      SECTORS           : LOGICAL_SECTORS_SPEC;   "SPECIFICATION OF SECTORS
                                                  "TO BE TRANSFERRED
      BUF_ADDR         : ABSPTR     "ABSOLUTE ADDRESS OF FIRST SECTOR'S BUFFER
  END "DISK XFER MSG";

"COMPOSITION OF CMD_PRIV_UNIT FIELD
CONST
  DISK_CMD_POSN     =  0;  DISK_CMD_LENGTH     = 4;
  DISK_PRIV_POSN    =  4;  DISK_PRIV_LENGTH    = 2;
  DISK_UNIT_POSN    =  8;  DISK_UNIT_LENGTH    = 2;
  DISK_SUBUNIT_POSN = 12;  DISK_SUBUNIT_LENGTH = 1;



"FORMAT OF A DISK TRANSFER REPLY
"-------------------------------

"COMPOSITION OF CC FIELD
CONST
  PRIMARY_CC_POSN   = 0;  PRIMARY_CC_LENGTH   =  4;
  SECONDARY_CC_POSN = 4;  SECONDARY_CC_LENGTH = 11;

"(PRIMARY) COMPLETION CODES
  DISK_OKAY           =  0;
  WRITE_PROTECTED_DRV =  2;
  UNEXPECTED_STATUS   =  3;
  DATA_OR_SYNC_ERR    =  4;
  ADDR_OR_SYNC_ERR    =  5;
  BAD_SECT            =  6;
  WRITE_PROTECTED     =  7;
  ILLEGAL_SECT        =  8;
  TIMING_ERR          =  9;
  SUBBUS_OVERR        = 10;
  PARITY_ERR          = 11;
TYPE
  DISK_CC = DISK_OKAY..PARITY_ERR;

TYPE
  DISK_DRV_ANS =
    RECORD
      RESULT   : INTEGER;  "STANDARAD RESULT, DEFINED IN DRIVERPARAMS.S
      CC       : DISK_CC;  "DISK DRIVER COMPLETION CODE
      LAST     : LONG;     "IF RESULT IS OKAY, THEN THIS IS THE NUMBER
                           "OF THE LAST SECTOR ACCESSED + 1. OTHERWISE,
                           "IT IS THE NUMBER OF THE LAST SECTOR ACCESSED.
                           "N.B. CONTENTS OF THE MOST SIGNIFICANT BYTE
                           "ARE UNDEFINED.
      BUF_ADDR : ABSPTR    "ABSOLUTE ADDRESS OF THE FIRST SECTOR'S BUFFER
    END "DISK DRV ANS";



"FORMAT OF AN INCLUDE (SUB)UNIT REQUEST
"-------------------------------------

TYPE
  DISK_INCLUDE_MSG =
    RECORD
      STD           : INTEGER;  "STANDARD, NOT USED
      CMD_TYPE_UNIT : INTEGER;  "COMPOUND OF COMMAND, TYPE, UNIT & SUBUNIT
      MAX_SECT_NBR  : LONG;     "MAXIMUM SECTOR NUMBER OF THE (SUB)UNIT
      SECTS_PER_CYL : INTEGER;  "NUMBER OF PHYSICAL SECTORS PER CYLINDER,
                                "FOR THIS (SUB)UNIT
    END "DISK INCLUDE MSG";

"COMPOSITION OF CMD_TYPE_UNIT FIELD
CONST
  "THE COMMAND AND UNIT FIELDS ARE AS FOR A TRANSFER REQUEST
  DISK_TYPE_POSN = 4;  DISK_TYPE_LENGTH = 2;

"TYPE FIELD
TYPE
  CDC_TYPE = (MINI_MODULE, STORAGE_MODULE, CARTRIDGE_MODULE);



"FORMAT OF A INITIALISE REQUEST
"------------------------------

TYPE
  DISK_INIT_MSG =
    RECORD
      STD      : INTEGER;  "STANDARD, NOT USED
      CMD      : DISK_DRV_CMD;
      ADDR     : INTEGER;  "COMPOUND OF PRIORITY AND I/O ADDRESS
      NOT_USED : ARRAY [3..5] OF INTEGER
    END "DISK INIT MSG";

"COMPOSITION OF PRI_AND_ADDR FIELD
CONST
  PRIORITY_POSN = 0;  PRIORITY_LENGTH = 2;
  ADDRESS_POSN  = 2;  ADDRESS_LENGTH  = 6;