home *** CD-ROM | disk | FTP | other *** search
-
- D O S + system documentation
- 86/12/07
- by C.B. Falconer
-
-
- DOS+ is a complete replacement system for CPM2.2 (Copyright Digital
- Research). DOS+ provides many CPM3 features, and several unique
- capabilities. It also supplies many ZCPR features, without requiring any
- extra memory assignments. DOS+ operates on Z80 CPUs only.
-
- DOS+, CCP+, DDTZ, INITDIR, FDATE, MOVDOS+, SETFLAGS, XJOB, TIME and their
- associated documentation are Copyright (c) 1986 by:
- C.B. Falconer, 680 Hartford Tpk, Hamden CT 06517,
- Tel (203) 281-1438. all rights reserved.
-
- They may be freely copied and distributed provided no charges are made, and
- that they are not included with other items for sale. For commercial per-
- mission contact C.B. Falconer.
-
- Contributions are solicited. All contributions of $20 or over will receive
- notices of available updates and/or revisions. $50 or over is considered
- registration, and major revisions (on Kaypro 4 or IBMPC format disks, as
- desired) will be made for 1 year, with source code.
-
-
- Features Added over CPM2.2
- ==========================
-
- 1. DOS+ will process files of up to 262,143 records (like CPM3),
- i.e. of over 3 megabytes.
-
- 2. DOS+ allows for time-stamping of all files, for creation, modify,
- and access. Creation records only the date, others record both
- date and time. DOS+ may be configured to NOT do access stamping,
- thus allowing for the use of write-protected disks. Note that
- the time stamps are NOT identical with CPM3 (DOS+ maintains three
- values), but are compatible in that the file system will function
- correctly under either CPM2 or CPM3. Time stamping occurs only
- on drives with the correctly formatted directory (see INITDIR.COM
- to initialize disks with/or without files already stored), when
- the timer operation is enabled. If the file is marked read-only
- no access time will be maintained. The FDATE utility acts much
- like DIR (except that some file or drive specification must be
- entered) to show the stored time stamps. Dates are shown in ISO
- standard format (year/month/day).
-
- 3. DOS+ has compatible DCIO (function 6, direct console i/o) and
- other console calls. DCIO can now return a null, by first
- checking status (argument 0fdh in register e). Buffered input
- characters will be available to the application with mixed calls.
- DCIO with argument (in E register) 0fdh performs wait_for_console
- input (as does CPM3), and with argument 0fch returns a look-ahead
- console character, i.e. the value which will be accessed by the
- next console input call (provided the console status is 'ready').
- For this argument register H (and register B) returns the current
- console column, as recorded by DOS+. In addition, if the bios
- supports it, this call (function 6, argument less than 0fch for
- direct console output) returns the current screen x-y position as
- a value in hl. This is whatever value the bios returns in hl. As
- a standard, this should be the line in h, and the column in l,
- each with an offset of 020h added. i.e. 02020h is 0,0, top left.
-
- 4. DOS+ will always pause (on console output) when a CTL-S (DC3) is
- entered, EXCEPT for DCIO calls. Thus an accidental keystroke
- will no longer leave a program running indefinitely. However an
- interrupt driven bios with its own buffer may delay the pause.
-
- 5. DOS+ can be interrupted at any BDOS call (if so configured). The
- "break" key is configurable (default a NUL, i.e. CTL-@ on most
- systems). If enabled, DCIO calls can be separately enabled or
- disabled. When a "break" occurs the question "Resume (y/N)?" is
- asked, and a "y" (or "Y") will resume the application program.
- Any other key aborts to a warm boot. If breaks are disabled
- the CTL-C character will not abort the application program. This
- allows programs to ensure they retain control.
-
- 6. DOS+ errors show the calling function, and the file name (if a
- file is involved). All such errors other than disk i/o errors,
- exit to a warm boot when a <cr> is entered. For disk i/o errors
- options to retry, ignore, or abort are available. Provisions are
- made for application programs to intercept and handle any errors.
-
- 7. DOS+ implements the CPM3 calls 104 and 105 (set/get time), when a
- suitable timer mechanism is configured. This mechanism may be
- either a reserved memory area (5 bytes) to hold the time, or a
- routine may be called (which should return such a pointer). The
- DE register points to the application array (see definition below
- of the array) which is filled (1st 4 bytes) on call 105 (seconds
- are returned in the A register), or used to set (call 104), when
- the system seconds value is forced to 0.
-
- 8. DOS+ setuser call (32 = 020h) echoes the user # set.
-
- 9. DOS+ implements a search path, stored in a configurable dedicated
- memory area. TO USE the bios MUST initialize the path at power
- on (cold-boot). A single 0 byte at the head of the path string
- suffices. The path (like ZCPR) consists of byte pairs,
- specifying drive and user, with '$' specifying the defaults.
- Unlike ZCPR, the user value specifies under which user the drive
- search will be made, and only the current user area is searched.
- Thus "A$" causes the A drive to be searched on all user areas,
- and "B3C2" causes the B drive search under user 3, C under user
- 2, etc. Thus the path string can be thought of as an intermixed
- set of paths for the various user areas. The default drive will
- not be searched twice. The path must be terminated with a zero
- byte. The path applies only when a file is opened with a default
- drive specification, and if a path entry is applied the callers
- FCB is marked with the actual drive on which the file was found.
- The current default drive is always searched first.
-
- 10. DOS+ makes all $SYS files, on user area 0, visible to all users
- for read. They may not be written to, nor erased from other user
- areas. Thus common utilities and files can be made public. All
- $SYS files are treated as read-only, however they may be erased
- from their "home" user area.
-
- 11. DOS+ maintains the $ARC bit, resetting it whenever a file is
- modified. This can co-operate with archiving programs. This can
- fail if a program performs random writes and fails to close the
- file.
-
- 12. DOS+ can maintain an exact byte count for a file, using the same
- methods as CPM3. When a file is opened, if the current record
- byte (offset 32 = 020h in the FCB) is set to 0ffh, the count of
- unused bytes in the last record will be returned there. The
- count may be set with function call 30 (set file attributes) by
- setting the F6 (interface attribute) bit, and placing the count
- in the current record byte. This count is normally zero
- (indicating no unused bytes), and can range up to 07fh = 127. F6
- interface bit will be reset when function 30 is complete.
-
- 13. DOS+ scans user area 0 for any file names beginning with '$' on
- the disk reset call (not the current user, as in CPM2). This co-
- operates with CCP+, JOB, and other utilities so that batch jobs
- can switch user areas and continue functioning. It is only
- compatible with SUBMIT and earlier versions of JOB, //IF, //SKIP,
- ZCPR, etc. when the default user is 0.
-
- 14. Like CPM3, the F5 thru F8 attribute bits are reserved for
- internal and interface use. F1 thru F4 are available.
-
- 15. DOS+ returns version number 2.5, thus avoiding confusion with
- CPM3, and signalling compatibility with CPM2.2. Later releases
- will return 2.6 up, but less than 3.0. The "compatibility bit"
- (see below) can force a 2.2 return value.
-
- 16. DOS+ maintains the entry jump, and the error vectors, in the same
- locations as CPM2.2, for compatibility with programs that
- intercept errors or follow an RSX chain to find the BDOS module.
-
- 17. DOS+ call #210 (0d2h), with suitable arguments in the E register,
- returns system information. For version 2.5, the arguments are:
- 0 Return base address for BDOS module.
- Used for dynamic reconfiguration.
- 1 Return the current DMA setting.
- 2. Flush any console input pending, emptying
- all buffers. Returns 0.
- 3. Returns list device status (ready/not ready)
- 4. Returns punch " " "
- 5 Returns reader " " "
- Arguments 3 thru 5 represent ready as 0ffh, not ready as 0. If
- no custom installation for punch/reader device status has been
- made (see -INSTALL.DOC) their status is returned 0 (not ready).
- Other arguments return 0.
-
- 18. DOS+ call #211 (0d3h) outputs the value in the DE register as an
- unsigned 16 bit value, in decimal, to the console with leading
- zero suppression.
-
- 19. DOS+ can be set in "compatibility" mode, which forces the version
- number call (12 = 0ch) to return 2.2, and eliminates the 0fch and
- 0fdh arguments from the DCIO call (#6). This avoids most problems
- with existing programs.
-
- 20. DOS+ maintains the "list echo" flag as the 1 (lsb) bit in the
- option byte at offset 18h (from the start of BDOS). This allows
- application programs to dynamically control such echos as well as
- other features (such as breaks, access time stamping, etc). Call
- #210 with a 0 argument (above) returns a pointer to this area.
-
-
- C C P + system
- ===============
-
- CCP+ replaces the CPM2 CCP and ZCPR. It is designed for installation
- without re-assembly, supports DU addressing, wheel byte, du restrictions,
- and is generally suitable for both general use and RCPM use. CCP+ may be
- used with standard CPM2.2 if desired. It is incorporated in the MOVDOS+
- DOS+ installation program, with search options set for use of DOS+ paths.
- For details on installation options, read -INSTALL.DOS.
-
- The CPM "user" command is eliminated, in favor of DU addressing. To login
- to drive b, user 3, enter "b3:" for example. To login to user area 2 on
- the current drive, enter "2:", etc. ":" alone as a du specification stands
- for all defaults.
-
- 1. DIR command accepts options "s" (for system files also) and "o"
- (for only system files) following the file specification.
- Multiple dir arguments may be entered, using the ";" to separate
- the sections. "dir a:;b: o" shows a:, and system files on b:. DU
- specification may be used. Areas visible may be different under
- wheel and non-wheel states. The number of entries shown per line
- can be configured at installation time.
-
- 2. The SAVE size argument may have a "+" appended, to save an extra
- 1/2 page (or single record). "SAVE 3 blah" keeps a 3 page = 6
- record file, while "SAVE 3+ blah" keeps a 3 1/2 page = 7 record
- file. 0+ saves 1 record only.
-
- 3. GO command re-executes whatever program is already loaded. Such
- a program should be self-initializing.
-
- 4. KILL command halts any executing batch job (created by SUBMIT or
- JOB). It is intended for conditional use in batch jobs, guarded
- by //IF statements.
-
- 5. CAPS command is a toggle, and allows lower case command lines to
- be passed to applications. When executed it reports the current
- status. This is useful for command line driven programs that
- need lower case arguments (such as Software Tools TRANSLIT).
-
- 6. Extra blanks are generally acceptable in command lines, but may
- create problems when command lines are passed to applications.
- Thus "dir a:" and "dir a:" are equivalent. This avoids
- nuisance errors.
-
- 7. A configurable option allows the automatic search of A: whenever
- the file for a transient (.COM) or TYPE command is not found. For
- DOS+ this is normally disabled, and the path is used. For CPM2
- this provides most of the abilities of a path.
-
- 8. Whenever a transient application is not found, the file CCPXTEND
- (.SYS) is automatically loaded and passed the complete command
- line. This implements further searches, in particular for a
- component of COMMAND.LBR, and can continue to other systems when
- failure occurs (such as RUNPCD for Pascal, or MBASIC for basic
- programs, or JOB for automatic batch execution). See CCPXTEND
- documentation.
-
- 9. Drives accessible can be configured, with individual drive
- selection, for both wheel and non-wheel status. This avoids
- drive selection error aborts on typing errors. Similarly the
- maximum user areas are configurable.
-
- 10. Individual commands may be disabled under non-wheel conditions.
- Any such will attempt to access a transient. If prefixed by a DU
- specification any built-in name may access a transient (i.e.
- "a:dir" will attempt to run a:dir.com, while "dir" will execute
- the built-in command).
-
- 11. The $$$.SUB file is always on drive A, user 0. A submit job may
- include commands to change user areas and continue functioning.
- The versions of JOB, //IF, //SKIP, XJOB included follow this con-
- vention. The KILL command avoids creating long instructions to
- abort jobs when an error is detected.
-
-
- CCPXTEND.SYS usage (automatic)
- ==============================
-
- This is intended to eliminate any syntactical difference between execution
- of programs stored in libraries, and those that reside as files on disk.
- The available program names will not appear in a DIR listing (but can be
- shown by SD, a public domain program).
-
-
- Use with CCP+ results in the following syntax at the CCP level.
-
- B>name [command tail] executes name as a .COM on any
- drive specified in the path, or
- as a component of COMMAND.LBR
- on any drive on the path.
-
- B>-d: name [command tail] Executes name as a component
- of d:COMMAND.LBR only.
-
- B>-lbrname name [command tail] Executes name as a component of
- lbrname.LBR on drives on the path.
-
- B>-d:lbrname name [command tail] Executes name as a component of
- d:lbrname.LBR only
-
- B>-d:lbrname.ext name [command tail] Executes name as a component
- of d:lbrname.ext only.
-
- Overall, the search path for a command without disk spec. is:
- 1. default drive, current user (normal CPM stops here)
- 2. path drives, current user
- 3. default drive, current user, in COMMAND.LBR
- 4. path drives, current user, in COMMAND.LBR
- 5. Whatever final system is patched into CCPXTEND.SYS
-
- (remembering that $SYS files on user area 0 are available at each step)
-
- NOTE that if a file -nnn.COM exists it can be executed by CCP+ before this
- CCPXTEND system is reached.
-
- CAVEAT: the normal SYSGEN program expects to be loaded without disturbing
- memory from 0900h up through about 237fh (varies with system). Even the
- 0900h may be invalid for some systems (this is where the bootstrap image
- goes). To use SYSGEN from COMMAND.LBR without taking special precautions
- (for altering systems, e.g. installing CCP+) this program must not disturb
- this area. This version (LRUN 2.0.4 or CCPXTEND 1.4) does not disturb 0880h
- up, except for the 128 bytes below the CCP.
-
- My personal usage is to install virtually all utilities in COMMAND.LBR,
- because my system uses a minimun disk allocation of 2k bytes. Thus, on the
- average, each installed program saves 1k bytes of disk space, and small
- programs even more. The following should NOT be installed in libraries:
-
- WordStar because the "Run" command within WordStar
- must be able to find the file to reload.
- If you never use this command WordStar may
- be installed in a library.
- WSxxx.OVR WordStar cannot find its overlays in a
- library.
- CCPXTEND.SYS This program itself MUST be directly
- available.
-
- and, where my Pascal system is installed:
-
- PASCALP.PCD needs to be available as a file for TUNE
- to set it's code versus data space usage.
- If you never compile large programs and
- want to leave it at some setting, go ahead
- and install it in PCDS.LBR. RUNPCD has a
- build in library search.
-
- In general it is useless to install a program that takes an exact multiple
- of the disk allocation unit, except to conserve on directory entries.
-
- Using these techniques my normal system disk (390k, with 64 max directory
- entries) holds about 110 programs, and uses only about 20 directory
- entries. LRUN is constructed as an "ALIAS" entry for CCPXTEND (or you may
- consider it the reverse if you prefer). I have a compiler, 4 assemblers, 3
- linkers, editor, BBS system, modem program, foreign disk drivers, spooler,
- unspooler, PCD interpreter, batch system with conditionals, find and sort
- utilities, library utilities, squeeze/unsqueezers, cross-referance for
- Pascal, Zilog, Intel 8080, 8086 assemblers, and much more immediately
- available. I virtually never have to change the system disk.
-
-
- JOB (v. 1.5) Documentation
- ==========================
-
- JOB is an improved submit facility for CP/m systems, evolved from public
- domain SUPERSUB by Ron Fowler. JOB is copyright (c) 1983, 1984, 1986 by:
-
- C.B. Falconer, 680 Hartford Tpk, Hamden, CT 06517. (203) 281-1438
-
- JOB may be executed interactively (by "job /") or completely from the com-
- mand line (by "job / instruction"). Entering "JOB" with no parameters will
- give a short summary.
-
- JOB allows parameters to be terminated by commas, thus a pair (i.e. ",,")
- can specify a null parameter. In addition, parameters can be "quoted
- strings", to allow any input whatsoever. In a quoted string a quote must be
- represented by two quotes. JOB also accepts empty input lines (e.g. PIP
- exit command).
-
- JOB creates the $$$.SUB file on drive A, (user 0 as of JOB15) and thus can
- be executed with any setting of the default drive. In addition JOB searches
- both the default and A drives for the .JOB file when no drive is specified
- in the command line, and (ver 1.4) if no .JOB file has yet been found
- searches default and system disks for a component of JOBS.LBR file.
-
- Thus a set of small .JOB files can be packed into JOBS.LBR and executed
- directly. When many .JOB files are used this can significantly reduce disk
- storage
-
- An initial line in the .JOB file beginning with ";;" (double semi-colon)
- signifies that the line specifies a default set of parameters ($0 thru $9).
- These are only used when the execution command line does not supply
- parameters.
-
- JOB does not arbitrarily upshift anything, however an unmodified CCP will
- probably upshift all input lines. CCP+ can be set to avoid this upshifting.
-
- JOB will accept most files created for SUBMIT, unless supplied parameters
- include commas and quotes. Since the reverse is not true JOB expects its'
- input files to be of type .JOB.
-
- JOB15 up is organized to co-operate with CCP+/DOS+ and execute jobs thru
- changes in user number.
-
- A test file to demonstrate JOB parameter handling appears below (note null
- line, and use of initial ";" so that lines are comments to CCP+):
-
- ;;testingjob parm1, "parm2",, parm4 parm5, ," parm ""7"", "
- ; null defaults for parm3, parm6, parm8, parm9
- ;$1;
-
- ;$2;
- ;$3,$4,$5,$6;
- ;$7;
- ;$8;
- ;$9;
- ;$0; <<end of test file>>
-
- try A>JOB TESTJOB
- where testjob is the above file from the ";;"
- This simply shows a set of comment commands on the console.
-
-
- Conditional batch operations
- ============================
-
- These are handled by //IF and //SKIP programs, which are documented in
- IFSKIP.DOC (.DZC) separate file. When combined with the facilities of JOB,
- XJOB, CCP+, and DOS+ an extremely powerful batch capability results.
-
-
- DDTZ debugger
- =============
-
- DDTZ is documented in the separate file DDTZ.DOC (.DZC)
-
-
- Utilities
- =========
-
- All utilities give a short synopsis of their commands when executed with no
- parameters, or with '?' parameter. MOVDOS+, //IF and //SKIP are exceptions.
-
-
- INITDIR allows re-organization of existing disks (or hard drives) for time
- stamping. Files and directories are preserved. Directories are sorted.
-
- FDATE allows examination of file time stamps, similar to DIR.
-
- MOVDOS+ allows generation of various sized system images. See -INSTALL.DOS.
-
- JOB, //IF, and //SKIP are discussed above. XJOB replaces XSUB and is docu-
- mented in a separate file, and makes programmed console input feasible.
-
- ENSPOOL (ENSPOL10) allows all lister output to be spooled to a specified
- disk file. To initialize do "enspool filename.typ". Output echoed to the
- list device (by CTL-P) will not be spooled, nor will output via direct bios
- calls. ENSPOOL is removed by executing it again. Note that until this is
- done the output file is open, and the appropriate disk must NOT be changed.
-
- UNSPOOL (UNSPOL42) unspools a disk file to the list device. It is started
- by "unspool filename.typ".
-
- CCPXTEND.SYS is necessary for automatic access to files in COMMAND.LBR.
-
- SETFLAGS allows dynamic re-configuration of some DOS+ parameters, in par-
- ticular use of breaks, file access time stamping, and compatibility mode.
- Executing SETFLAGS with no parameters shows the command syntax. When SET-
- FLAGS completes it does not reboot, so that the altered configuration will
- be in effect for the next program run. Unless RSX's are mounted (which
- includes ENSPOOL and UNSPOOL) the next reboot will reset the configuration.
-
- FCOPY copies files across user areas. Unlike PIP it purges the destination
- file first, allowing copying to full disks. However disk failures can then
- lose a file. The default destination name is the source name if on a diff-
- erent drive or user (or both). -v flag causes verification.
-
- FDIFF does a binary comparison between files. The default "destination" is
- the "source" name, on a different drive or user (or both).
-
- TIME allows setting and interrogation of the system time. Note that the
- timer provisions are usable without any real-time-clock, by manual setting
- of the timer. "time ?" gives help, "time" reports, "time yy/mm/dd hh-mm"
- sets the system time. Note use of ISO standard date format, and that "hh"
- is 24 hour (0..23) time. Punctuate as shown.
-
-
- Acknowledgement
- ===============
-
- DOS+ builds heavily on the earlier P2DOS created by H.A.J. Ten Brugge,
- Molenstraat 33, NL-7491 BD Delden, The Netherlands. Tel..31-5407-1980
- Contributions by Gary Novasielski, Ron Fowler, and many others have been
- shamelessly incorporated into the system.
-
-
- The timer string and routine
- ============================
-
- The timer address should point to a byte array, where
-
- byte 0 = low byte } of DR format date, an integer count of
- byte 1 = high byte } days since 78/1/1 (78/1/1 = 1)
- byte 2 = hour, 0..23 (in BCD)
- byte 3 = minute, 0..59 (in BCD)
- byte 4 = second, 0..59 (in BCD).
-
- If the timer address is a routine it should return hl a pointer to the
- above array. If the (bc) register is non zero on entry the time is to
- be set, and the bc register points to the array to set (4 bytes only,
- the seconds byte should be set to zero).
- ยบ