Files
open-simh.simtools/extracters/ods2/initvol.h
Timothe Litt 66e00b9900 Backlog of work since 2016
Too much to list all, but includes (in no particular order):
 - Cleanup for 64-bit builds, MSVC warnings.
 - Structured help
 - Help file compiler.
 - Supports volsets, writes/create work.
 - Support for I18n in messages, help.
 - Makefiles.
 - Initialize volume/volset
 - Command line editing/history

Builds and works on Linux and Windows (VS).
Not recently built or tested on other platforms, but
not intentinonally broken.
2022-10-10 11:00:20 -04:00

100 lines
2.6 KiB
C

/* Timothe Litt March 2016
* Copyright (C) 2016 Timothe litt
* litt at acm dot org
*
* Free for use with the ODS2 package. All other rights reserved.
*/
/*
* This is distributed as part of ODS2, originally written by
* Paul Nankervis, email address: Paulnank@au1.ibm.com
*
* ODS2 is distributed freely for all members of the
* VMS community to use. However all derived works
* must maintain comments in their source to acknowledge
* the contributions of the original author and
* subsequent contributors. This is free software; no
* warranty is offered, and while we believe it to be useful,
* you use it at your own risk.
*/
#ifndef _INITVOL_H
#define _INITVOL_H
#include <stdint.h>
#include "ods2.h"
struct NEWVOL {
const char *label;
const char *devtype;
const char *devnam;
const char *username;
uint32_t useruic;
unsigned options;
uint32_t clustersize;
uint32_t maxfiles;
uint32_t headers;
uint32_t indexlbn;
uint32_t directories;
uint32_t bootlbn;
uint32_t volprot;
uint32_t fileprot;
uint32_t extension;
uint32_t windows;
};
#define INIT_INDEX_MIDDLE (~0U)
#define INIT_LOG (1 << 0)
#define INIT_VIRTUAL (1 << 1)
#define INIT_OWNUIC (1 << 2)
#define INIT_VOLPROT (1 << 3)
#define INIT_FILEPROT (1 << 4)
#define VOL_ALPHABET "abcdefghijklmnopqrstuvwxyz$-_" \
"ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
#ifdef __ALPHA
#pragma member_alignment save
#pragma nomember_alignment
#endif
struct BAD144 {
uint32_t bbd$l_serial;
uint16_t bbd$w_reserved;
uint16_t bbd$w_flags;
uint32_t bbd$l_badblock[1];
#define BBD$M_TRACK (0x7F << BBD$V_TRACK)
#define BBD$V_TRACK (24)
#define BBD$M_SECTOR (0xFF << BBD$V_SECTOR)
#define BBD$V_SECTOR (16)
#define BBD$M_CYLINDER (0x7FFF << BBD$V_CYLINDER)
#define BBD$V_CYLINDER (0)
#define BBD$C_FILL ((uint32_t)~0u)
};
struct SWBADENT {
uint8_t bbm$b_highlbn;
uint8_t bbm$b_count;
uint16_t bbm$w_lowlbn;
};
struct SWBAD {
uint8_t bbm$b_countsize;
uint8_t bbm$b_lbnsize;
uint8_t bbm$b_inuse;
uint8_t bbm$b_avail;
struct SWBADENT bbm$r_map[126];
uint16_t bbm$w_reserved;
uint16_t bbm$w_checksum;
};
#ifdef __ALPHA
#pragma member_alignment restore
#endif
vmscond_t initvol( void *dev, struct NEWVOL *params );
uint32_t delta_from_index( size_t index );
vmscond_t addmappointers( struct HEAD *fhd,
uint32_t *start, uint32_t *n, int sparse );
#endif