|
|
DataMuseum.dkPresents historical artifacts from the history of: CR80 Hard and Floppy Disks |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about CR80 Hard and Floppy Disks Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 4896 (0x1320)
Types: TextFile
Names: »DISKDRVPARAMS.S«
└─⟦b8af24a88⟧ Bits:30005796 CR80 Disc Pack ( MINICAMPS )
└─⟦this⟧ »GENS.D!SWELLPREFIX.D!DISKDRVPARAMS.S«
"-----------------------------------------------------------------------
"
" 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;