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

⟦02b241a7d⟧ TextFile

    Length: 5648 (0x1610)
    Types: TextFile
    Names: »DISKDRVPARAMS.S«

Derivation

└─⟦8c095a7f3⟧ Bits:30005798 CR80 Disc Pack ( Vol ILS systemdisk XAMOS TOS 10:01 hard boot #43c 19-7-87/JFJ )
    └─ ⟦this⟧ »PREFIXES.D!XAMOS.D!SWELL.D!DISKDRVPARAMS.S« 
└─⟦c2e810e96⟧ Bits:30005799 CR80 Disc Pack ( XAMOS 841129 ILS TOS 10-01 System Disk Tilhører ILS/MSG hard boot boot entry #43c )
    └─ ⟦this⟧ »PREFIXES.D!XAMOS.D!SWELL.D!DISKDRVPARAMS.S« 
└─⟦e0c43619c⟧ Bits:30005797 CR80 Disc pack ( Vol:FNJ1 861029/EC CR80 S/W Package II+III+IV+V+VII )
    └─ ⟦this⟧ »CSP005_V0501.D!CSS881.D!DISKDRVPARAMS.S« 

TextFile

"-----------------------------------------------------------------------
"
"  MODULE NAME:      Disk Driver Parameters
"                    ----------------------
"
"
"  MODULE ID NMB:    CSS/881
"  MODULE VERSION:   0203
"  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
"  -------    -----------    ---------------------
"
"   0101      GMC/801020     Initial release.
"   0102      AEK/810211     CHANGE TO DISK_XFER_MSG TO FACILITATE
"                            HANDLING OF THE SPECIFICATION OF THE
"                            SECTORS TO BE TRANSFERRED
"   0103      GMC/810827     Change to definition of privacy bits,
"                            in the second word of a disk xfer msg.
"   0104      GMC/820503     The completion code disk_timeout is added.
"   0201      JAS/831101     New layouts of disk_init_msg and
"                            disk_include_msg.
"                            New completion codes.
"                            disk_shutdown command added.
"   0202      JAS/840413     disk_clearvol command added.
"                            The 'standard' fields in the messages
"                            (word 0) must now be zero for fms
"                            messages.
"   0203      JAS/840807     cdc_type type deleted (is now in FMSPARAMS.S
"                            and IOSPARAMS.S).
"
"-----------------------------------------------------------------------



"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;
  disk_shutdown          = 10;
  disk_clearvol          = 11;
type
  disk_drv_cmd = disk_read..disk_clearvol;



"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;  "must be 0
      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_wait_bn      =  4;
  disk_release_bn   =  5;
  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 = 12;

"(Primary) completion codes
  disk_okay             =  0;
  drv_not_ready         =  1;
  write_protected_drv   =  2;
  unexpected_status     =  3;
  data_or_sync_err      =  4;
  addr_or_sync_err      =  5;
  bad_sect              =  6;
  write_protected_sect  =  7;
  illegal_sect          =  8;
  timing_err            =  9;
  subbus_overr          = 10;
  parity_err            = 11;
  controller_err        = 15;
type
  disk_cc = disk_okay..controller_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;  "must be 0
      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;



"Format of a Initialise request
"------------------------------

type
  disk_init_msg =
    record
      std          : integer;  "must be 0
      cmd          : disk_drv_cmd;
      io_addr      : integer;
      ram_addr     : integer;  "ram address in multiples of 4K
      min_ram_size : integer;  "min disk ram size (in sectors)
    end "disk init msg";