.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 | <> +---------------+ | 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