.75PW 5ML v`
.po 0pn
.ha I/OS Internal Notes (C) 1980,81,82 INFOSOFT
.hb Proprietary Information of InfoSoft Systems, Inc.
.hf                        CONFIDENTIAL Information of InfoSoft Systems Inc.
.c 0f
\[Directory`Formats\]

\[Standard`Floppy`Disk`(CP/M`1.4`style)\] (32 bytes)
.0c

     | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
     |---------------------------------------------------------------|
 FCB |DSK| w*| r*| u*| s*| - | - | - | p*| - | - | - | - | - | - | - |
 DISK|ATT|<- - - - -FILE NAME- - - - - ->|<- -TYPE ->|EX | 0 | 0 |RC |
     |---------------------------------------------------------------|
     |                                                               |
     |<- - - - - - - - - -ALLOCATION DISK MAP- - - - - - - - - - - ->|
     |---------------------------------------------------------------|
     |10 |11 |12 |13 |14 |15 |16 |17 |18 |19 |1A |1B |1C |1D |1E |1F |

	\[ATT\]		- File attributes (on disk)
		Bits:   \[|`7```6```5```4`|`3```2```1```0`|\]
		        \[|`p```w```r```u`|`s```0```0```F'|\]

		Meanings if set (to 1)
		p: permanent		s: system file
		w: write protected	0: clear bit, not used
		r: read protected	0: clear bit, not used
		u: user file		F': not a file

	*	    - Bits set in FCB by 17/18 calls or open.  These
		attributes have the same meaning as the bits of the
		same name above, and are the MSB (80H) of the bytes shown.

	\[DSK\]		- 1 Byte (in FCB)
		0	- current drive
		1..15	- drive A: through drive O:

	\[FILE`NAME\]	- 1-8, 8 characters

	\[FILE`TYPE\]	- 9-B, 3 characters
		7 bit ASCII file name right filled with spaces.

	\[EX\]		- Extent number
		Each extent uses one directory entry and can have
		16Kbytes allocated to it.

	\[RC\]		- Record Count
		Records (128 bytes each) in this extent containing
		written data. This number should be < 80H only in the
		last extent, and equal to 80H in all but the last extent.

	\[Allocation`Disk`Map\]
		Up to 16 cluster pointers, declaring up to 16K bytes
		of file, in cluster sized increments.  They are each
		one byte (1..254)
			0	- Not allocated
			255	- cluster 0 (directory)
			1..254	- cluster 1 through 254
		The first cluster is 0, the directory.
.z the info on the allocation disk map needs verifying

.c
\[Standard`Floppy`Label\]
(If present, must be first entry in directory)
.0c

     | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
     |---------------------------------------------------------------|
     |81H|<- - - - -DISK LABEL - - - - ->|<- -RSVD ->|CS |DF | 0 |RD |
     |---------------------------------------------------------------|
     |<- - - - - - - - - -DIRECTORY DISK MAP - - - - - - - - - - - ->|
     |---------------------------------------------------------------|
     |10 |11 |12 |13 |14 |15 |16 |17 |18 |19 |1A |1B |1C |1D |1E |1F |

	\[81(hex)\]	- Disk label indicator

	\[Disk`Label\]	- Up to 8 characters, right filled
		with spaces.  Characters are 7 bit ASCII.

	\[RSVD\]	- Reserved

	\[CS\]		- Cluster size (records per cluster)
		\[Density	CS	CS(HEX)	Kbytes`per`cluster\]
		Single Density	8	08H		1K
		Double Density	16	10H		2K
		Double Density	32	20H		4K
		Double Density	64	40H		8K
		Double Density	128	80H		16K

	\[RD\]		- Records in directory (8-63 allowed)
		Single Density	16	64 entries
		Double Density	32	128 entries

	\[DF\]		- Directory type flags
		Bits:	\[|`7```6```5```4`|`3```2```1```0`|\]
			\[|`-```d```-```-`|`-```-```-```-`|\]

			d: double sided disk

.10sk
.c
This page intentionally left blank
.0c
.c
\[Big`Directory`Label\]
.0c

    | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
    |---------------------------------------------------------------|
    |85H|<- - -DISK LABEL - - - - - - ->|<- RSVD- ->|CS |DF | 0 |RD |
    |---------------------------------------------------------------|
    |<- - - - -DIRECTORY DISK MAP - - - - - - - - - - - - - - - - ->|
    |---------------------------------------------------------------|
    |<- - - - -DIRECTORY DISK MAP - - - - - - - - - - - - - - - - ->|
    |---------------------------------------------------------------|
    |<- - - - -RESERVED - - - - - - - - - - - - - - - - - - - - - ->|
    |---------------------------------------------------------------|
    |30 |31 |32 |33 |34 |35 |36 |37 |38 |39 |3A |3B |3C |3D |3E |3F |


	\[85H\]		- Big directory label indicator

	\[Disk`Label\]	- Up to 8 character, right filled
		with spaces.  Characters are 7 bit ASCII.

	\[RSVD\]	- Reserved

	\[CS\]		- Cluster size (records per cluster)
		As per floppy, but currently big disks use
		1K clusters. (CS = 08H)

	\[DF\]		- Directory type flags
		Bits:   \[|`7```6```5```4`|`3```2```1```0`|\]
		        \[|`s```d```-```-`|`-```-```-```-`|\]

		s: sub-directory
		d: double sided disk

	\[RD\]		- Records in directory.
		As per floppy, but currently big disks use
		RD = 7FH, 254 entries.


	\[Directory`Disk`Map\]
		As BIG directory file entry.
		16 bit cluster pointers describing the directory.

.c
\[Details`of`BIG`DIR`bitmap\]
.0c

\[BIG`DIR`BITMAP`DEFINITION`FILE:\]

	ORG	0
BM$FG:	DS	1	; FLAG BYTES
;	80	LAST RECORD IN BIT MAP FILE
;	40	NO FREE BLOCKS IN THIS RECORD
BM$ST:	DS	2	; STARTING CLUSTER FOR THIS RECORD
BM$EN:	DS	2	; ENDING CLUSTER FOR THIS RECORD
BM$CT:	DS	1	; NUMBER OF BYTES OF BITS
BM$BT:	DS	96	; 96 (FIRST REC) OR 120 (ALL OTHER)
BM$TC:	DS	2	; TOTAL NUMBER OF CLUSTERS (REC 0 ONLY)
BM$CS:	DS	1	; CLUSTER SIZE (RECORDS)   (REC 0 ONLY)
BM$RS:	DS	1	; RESERVED BITS AT START   (REC 0 ONLY)
BM$DT:	DS	3	; M-D-Y CREATED/FIXED      (REC 0 ONLY)
	DS	18	; TO FILL RECORD TO 128
BM$CK:	DS	1	; CHECKSUM (XOR OF ALL FROM 0 TO 127)=00

BM$BT*/0006  	BM$CK*/007F  	BM$CS*/0068  	BM$CT*/0005  	
BM$DT*/006A  	BM$EN*/0003  	BM$FG*/0000  	BM$RS*/0069  	
BM$ST*/0001  	BM$TC*/0066  	

\[Pictorial`Description`of`Bit`Map\]

	+-----------------------------------------------+
	| flag(1) start(2) end(1) count(1)		|
	| allocation bit map:				|
	|    1st block	- 96 bytes			|
	|    others blocks	- 120 bytes		|
	| control fields	- first block only	|
	|    total(2)	csize(1)	reserved(1)	|
	|    date(3)			filler(17)	|
	| free(1)					|
	| checksum(1)					|
	+-----------------------------------------------+

\[Sample`Output`of`BMPDUMP\]

InfoSoft BIG Disk Bitmap Dump (BMPDUMP 00.01)
Bitmap for unit E:
Total clusters: 7FF8H
Cluster Size:   08H
Reserved Bits:  15H
Creation Date:  00/00/00

Map Block: 01H Flag byte: 40H
Start Cluster: 0001H End Cluster: 0300H
 0000 FF FF FF FF FF FF FF-FF FF FF FF FF FF FF FF FF
 0010 FF FF FF FF FF FF FF-FF FF FF FF FF FF FF FF FF
 0020 FF FF FF FF FF FF FF-FF FF FF FF FF FF FF FF FF
 0030 FF FF FF FF FF FF FF-FF FF FF FF FF FF FF FF FF
 0040 FF FF FF FF FF FF FF-FF FF FF FF FF FF FF FF FF
 0050 FF FF FF FF FF FF FF-FF FF FF FF FF FF FF FF FF
Checksum: 00H
.c
Directory Formats
\[Big`Directory\]
.0c

     | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
     |---------------------------------------------------------------|
OPEN |DSK| w*| r*| b*| h*| - | - | - | p*| - | - | - | - | - | - | - |
 DISK|ATT|<- - -FILE NAME- - - - - - - ->|<- TYPE- ->|<-EXX->| 0 |HRC|
17/18|DSK| w*| r*| s*| u*| - | b*| - | p*| - | - | - | - | - | - | - |
     |---------------------------------------------------------------|
     |<- - - - -ALLOCATION DISK MAP- - - - - - - - - - - - - - - - ->|
     |---------------------------------------------------------------|
     |<- - - - -ALLOCATION DISK MAP- - - - - - - - - - - - - - - - ->|
     |---------------------------------------------------------------|
     |UID|GID|BLR|<- -RESERVED - - ->|<-LAST WRITE ->|<- -RESERVED ->|
     |---------------------------------------------------------------|
     |30 |31 |32 |33 |34 |35 |36 |37 |38 |39 |3A |3B |3C |3D |3E |3F |

	\[ATT\]		File attributes (on disk)
		Bits:   \[|`7```6```5```4`|`3```2```1```0`|\]
		        \[|`p```w```r```u`|`s```0```b```F'|\]
		Meanings if set (to 1)
		p: permanent		s: system file
		w: write protected	0: clear bit, not used
		r: read protected	b: big file
		u: user file		F': not a file
		h: FCB holds second half of allocation map(open files only)

	\[OPEN\]	- File attributes set in FCB on file open call.

	\[17/18\]	- File attributes set in FCB on 17/18 calls.

	*	    - Bits set in FCB by 17/18 calls or open.  These
		attributes have the same meaning as the bits of the
		same name above, and are the MSB (80H) of the bytes shown.

	\[DSK\]		- 1 Byte (in FCB)
		0	- current drive
		1..15	- drive A: through drive O:

	\[FILE`NAME\]	- 1-8, 8 characters
	\[FILE`TYPE\]	- 9-B, 3 characters

	\[EXX\]		- Highest extent number in low, high format
	\[HRC\]		- Highest record count in last extent 0..7FH.

	\[Allocation`Disk`Map\]		First cluster is 1
		0 - not allocated / 1..65534 cluster numbers
		Up to 16 cluster pointers stored low,high.  If the
		big file attribute ('b') is set then they point to
		index pointers, else they point to data.  Any file
		greater than 16K will be a big file.

	\[UID,GID\]	- User ID, Group ID
	\[BLR\]		- Bytes in last record
	\[Last Write\]	- Date and time of last write
.c
\[MASTER DOS PARAMETER TABLES\]
.0c
.0ml 85pw
.rdosparm.prn
.c
\[I/OS System Call Definition Tables\]
.0c
.rsyscall.def

.c
\[I/OS System Error Messages and Interleave Table\]
.0c
.rsyserr.def
.5ml 80pw
.c 0f
Function By Module
.0c


                        +---------------+
Initial Startup ------> |               |	\[CP\]
Re-Entry to CCP ------> |               |
                        +---------------+

OPLINK TABLE
			+---------------+
			| UCB (RAM)	|	\[DOS\]
			+---------------+
DOSEP		------>	| MAIN ENTRY	|	(eiinst)
			+---------------+
			| SYSCALL DEF'S	| ----->  0-40H Standard CP/M
			+---------------+       80H-A1H Extended Call Range
			| PANIC:	|	C0H-C6H MultI/OS Extended
			|  Illegal Jump	|     <<40H-50H CP/NET>>
			|  Out of Buffs	|     <<E0H-FFH CUSTOM>>
			+---------------+
			| SYS-SIMPLE	|
			|  FUNCTIONS	|
			+---------------+
SYSABT		------>	| PGM EXIT/ABT	|
			+---------------+

			+---------------+
DIR Managment	------>	| BUFFER	|	\[BF\]
BIT MAP 	------>	| MANAGER	|	 2S - Dummy (1 buffer)
			|		|	 2  -
			+---------------+	    Buff 1 : Directory
						    Buff 2 : Data
			+---------------+
			| CONSOLE	|	\[BY\]
			| DEVICES	|	 Char Buffer = URCHR
			+---------------+	 CSPIM Input scan and proc
						 CWPIM Output scan and proc
						 SYCXX Related syscall xx
.c
Directory Processing
Disk Space
.0c

			+---------------+
LOGDK/CLRDK	------> | DISK LOGIN	|	\[DR\]	LOW LEVEL DIR
DIRRD/DIRWR	------> | DIR LOGICAL	|
			|  ACCESS	|
DIRCLR		------>	|		|
GETBK/FREEBK	------>	| DISK ALLOC	|
			| DISK CHANGE	|
			|  WRITE PROT	|
			+---------------+

			+---------------+
			|		|	\[DR2\]	DISK PARAM
GETATH  	------>	| GET HALF FLAG	|		BIT MAP (V2-HD)
GETATB  	------>	| GET BIG FLAG	|		ATTRIBUTES/FLAGS
			|		| <----	BMPDEF.ASM
			|		|		BIT MAP DEFINITION
			+---------------+		TABLE

			+---------------+
			|		|	\[DIR3\]	DISK FORCED
			|		|		MOUNT/DISMOUNT
			|		|		SYSTEM BOTTOM
			+---------------+

.c
\[File`Processing\]
.0c

			+---------------+
NMTCH,...	------>	| DIRECTORY	|	\[FL\]	DIRECTORY MAINT.
DRSCH,NXDIR	------>	| SEARCH	|
			+---------------+
DELFL,RENFL	------>	| DIR MAINT	|
ATBFL		------>	|		|
			+---------------+
CRFIL		------>	| FILE CREATE	|
CRFDRE		------>	|		|
SHFBIG		------>	|		|
NEWIDX		------>	|		|
			+---------------+
GETDK			| FCB DISK	|
			| AUTO SELECT	|
			+---------------+

			+---------------+
FOPN/FLCOS	------>	| SYSTEM CALLS	|	\[FL2\]	OPEN/CLOSE
			+---------------+
FOPND		------>	| Internal dir	|
FOPNDE		------>	| /index opens	|
FOPNIE		------>	|		|
			+---------------+
FCLOSL			| Internal	|
			|  close	|
			+---------------+

			+---------------+
CDKBK		------>	| Calculate	|	\[FL3\]	READ/WRITE
			|  disk block	|
			+---------------+
RDFIL		------>	| READ/WRITE	|
WRFIL		------>	|  FILE		|
			+---------------+
GETCR,READNV	------>	| RANDOM ACCESS	|
WRITNV,RANRD	------>	|		|
RANWR,CFSIZ	------>	|		|
RANST,WRRZF	------>	|		|
WRTNX		------>	|		|
			+---------------+
PLINK		------>	| PROG CHAIN	|
			+---------------+

.c
.0c

			+---------------+
DSKIO		------>	|		|	\[GENDVR\]  GENERAL DISK
			|		|		HANDLER
CP/M BRANCH VECTOR --{	|		|
			+---------------+

			+---------------+
COUT		------>	|		|	\[GENDEV\]  GENERAL DEVICE
CIN		------>	|		|		HANDLER
CRDY		------>	|		|
CSTAT		------>	|		|
...		------>	|		|
			+---------------+

			+---------------+
MUL		------>	|		|	\[UTILS\]   LOW LEVEL SYSTEM
DIV		------>	|		|		ROUTINES, ARE ABOVE
ERMSG		------>	|		|		CP/M BRANCH VECTOR
			+---------------+

			+---------------+	\[SPLCTL/SPLNUL\]
			|		|		SPOOLING
			+---------------+

.c
\[Standard`System`Utilities\]
.0c 15ml 2sk
CMD		DESC
@		- Batch monitor
ATRIB		- Set file attributes
BYE		- Exit to prom monitor
COPY		- Disk to disk copy
DBAT		- Set default Batch disk
DCOM		- Set Master .COM search disk
DEB		- Symbolic Debugger
DIR		- Directory listing
DISKRD		- Disk read diagnostic
DSKDUMP 	- Modify disk and file
DUMP		- Dump file in hex
EDIT		- Tele-type Text Editor
ERA		- Erase files
ERASE		- Erase files selectively
GTOD		- Get & Set Time and date
IOSINIT 	- Initialize Big directory for hard disk
LABEL		- Set and Determine Disk Label
LOADER		- Load module into memory or .COM file
MEMTEST 	- Memory Test
OPI		- Operator Interface
OPINRES 	- Make OPI non-memory resident
OPIRES		- Make OPI memory resident
OREV		- Report system and OPI versions
PAUSE		- Pause batch operation
PRINT		- Print file with titles & control
REN		- Rename a file
SAVE		- Save memory from the user area
SORTDIR 	- Produce a sorted file of Directory
SPLIT		- Split text file into pieces
SPOOL		- Print Spooler control
STARTUP 	- Auto start batch file
SUBDIR		- Disk Sub-directory Functions
SXFER		- Single Disk File transfer
TYPE		- Type file to console
VIEW		- Review an ASCII file
WRTSYS		- System Writer
XDIR		- Extended sorted Dir list
XFER		- File transfer
XSTAT		- Disk status 

.c
\[Current`Revision`Numbers`of`Standard`Utilities\]
.0c 5ml 2sk
Utility Name	Rev #	Last Change	Comments
COPY    .COM	02.17	10/28/82	Addition of /M and dialogue.
DEB     .COM	00.09	07/25/82	Improved version
DISKRD  .COM	02.01	03/00/82	Needs I/OS 2.37 or later
DSKDUMP .COM	00.11	03/00/82	Works correctly on write 
					protected files with I/OS 02.37+
DUMP    .COM	01.03	10/28/82	Speed improvement of 2.7:1, smaller
EDIT    .COM	01.01	11/15/81	Has help screens
ERASE   .COM	01.00	08/00/80	Will not erase Permanent files
GTOD    .COM	00.07	06/01/82
IOSINIT .COM	00.17	05/17/82	Command line bitmap rebuild and
					traps out of range cluster #'s
LABEL   .COM	00.13	06/28/82	Corrects allocation map errors
					with >2K clusters.
LOADER  .COM	00.00	02/26/79
MEMTEST .COM	01.02	01/21/81
NOPI    .COM	03.11	08/09/82	Bye command re-installed.
OPI     .COM				Obsolete, pre 02.37
PRINT   .COM	01.07	10/19/81	Allows restart at page # (R)
REVLIST .DOC   (00.09)	10/28/82	THIS FILE!
TASK	.COM	00.07			MultI/OS only
SLIST	.COM	00.00			MultI/OS only
SORTDIR .COM	01.04	06/21/82	Fixed sort bug, better error traps
SPLIT   .COM	01.03	10/18/81
SPOOL   .COM	00.02	01/01/82	I/OS only
SUBDIR  .COM	00.08	06/18/82	Fixed I: bug and added help (?)
SXFER   .COM	00.04	10/19/81
SYSTAT	.COM	00.02	01/01/82	MultI/OS only
VIEW    .COM	01.01	06/01/82
WRTSYS  .COM	01.04	10/19/81	Automatic verify, /C compare only
XDIR    .COM	00.07	06/29/82	Now does cluster size rounding of
					file sizes, agrees with DIR.
					Fixed hi bit problem,/S to display
					system attributed files
XFER    .COM	02.11	06/18/82	Put /R (ignore read prot) option in.
XSTAT   .COM	01.11	06/18/82	Traps out of range cluster #'s

.c
.10sk
global cross reference goes here
.0c