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 - 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;