home *** CD-ROM | disk | FTP | other *** search
- To: Irv Hoff
- From: Jon Saxton
- Date: 4 May 97
- Subject: CCP configuration for RCPM+
-
-
-
- AN RCPM+ WITHOUT CCP104
- =======================
-
- You don't really NEED to implement Jim Lopushinsky's replacement
- CCP to run an RCPM+ but it does help. Without CCP104+ you'd do
- something like this:-
-
- 1. CP/M Plus supports password protection on disks and files.
- Since we'll be using this facility we enable password pro-
- tection on the A: drive
-
- set a: [protect=on]
-
- This only needs to be done once and not on every warm or
- cold boot so there's no need, for example, to include the
- above command in PROFILE.SUB. (CP/M Plus will auto-SUBMIT
- PROFILE.SUB if it and SUBMIT.COM both exist on the default
- disk after a cold boot.)
-
- 2. Put ALL executable command files on A0: - including the ones
- you don't want people to use - and make them all SYS files
-
- A>set *.*[sys]
-
- 3. Establish the command search path. This needs to be done on
- cold boot and should be included in PROFILE.SUB or a
- derivative - more on that later but the basic command is:-
-
- setdef a:
-
- which tells the CCP to ALWAYS look on the A: drive and
- NOWHERE ELSE for command files. You may have an extended
- path if you really want but it seems a waste on an RCPM (and
- unnecessarily dangerous):-
-
- setdef *,a:,g:
-
- sets the command search path to <current>,A:,G: so that
-
- D3>prog
-
- looks for PROG.COM in D3:, D0:, A3:, A0:, G3:, G0:.
-
- I use an extended setdef command which does some other
- things at the same time:-
-
- setdef a: [order=(com,sub),temp=p:]
-
- The [order=(com,sub)] tells the CCP to look for program.COM
- and if not found the program.SUB; the [temp=p:] tells things
- like SUBMIT to put temporary files on (my tiny ramdisk) P:.
-
- The advantage of the [order...] specification is that you
- can execute .SUB files without saying "submit" and without
- adding a ".sub" suffix, i.e. you can say
-
- compile prog
-
- instead of
-
- submit compile prog
-
- or
- compile.sub prog
-
- to invoke COMPILE.SUB.
-
- Now you can execute the programs on A0: from anywhere. You may
- wish to patch the standard CCP to display the user number
- regardless of whether or not user 0 is selected. To do that load
- up the CCP under a debugging utility (SID or Z8E are the easiest)
-
- sid ccp.com or z8e ccp.com
- s568 e 568
- cd cd
- . .
- wccp.com w ccp.com
-
- The above sequence changes a CALL NZ,0C13 to a simple CALL 0C13.
- Before issuing the wccp.com command to SID or Z8E you should also
- locate the internal command list (0637h), and change all internal
- commands to lower case - for SID use s637 followed by
-
- "dir type erase rename dirsys user
-
- or for Z8E use e637 followed by
-
- 'dir type erase rename dirsys user'
-
- The next trick is to stop remote callers from executing those
- commands which could compromise the RCPM+. We have prepared for
- this already by enabling password protection on the A: drive.
- Now we just need to protect the appropriate files. Choose a nice
- obscure password...
-
- set erase.com [protect=read,password=obscure]
- set rename.com[pro=read,pass=obscure]
- set date.com[pro=read,pass=obscure]
-
- and so on for each 'nasty' program. This only has to be done
- once so no need to make a .SUB file - by using ^W and other
- editing keys it is not too painful. Do NOT set protection on
- SUBMIT.COM otherwise PROFILE.SUB won't execute.
-
- Somehow we have to let users 'see' the programs they're allowed
- to execute. I used a disk editor (SUPERZAP version 3.0 or later)
- to construct (empty) directory entries in A0: for things like
- 'dir.com', 'type.com' and so on, using LOWER CASE letters.
-
- Now we have all the user commands visible in a directory listing,
- all commands visible to the CCP from anywhere on the system and
- all dangerous commands password-protected so that remote callers
- who don't know the password cannot execute them.
-
- When doing sysopy things you can use the SET command to set the
- default password
-
- set [default=obscure]
-
- and the whole system will be opened up to you. There's just one
- snag - namely that you'd probably want to protect the SET command
- itself so you'd have to say
-
- set;obscure [default=obscure]
-
- Another option is to use a special password-setting utility such
- as PU which is distributed as source code in this library. PU is
- easy to use and has another advantage ....
-
- Finally, we want to set up PROFILE.SUB so that it initializes the
- system correctly. Note that
-
- a) PROFILE.SUB cannot be password-protected,
- b) SUBMIT.COM cannot be password-protected,
- c) Users should not be able to say SUBMIT PROFILE (or just
- PROFILE) and do anything dangerous.
-
- One way around these constraints is to have two .SUB files, e.g.
-
- PROFILE.SUB SETUP.SUB
-
- pu date read
- :submit setup setdef a:
- device lst:=null
- hist
-
- The PU program mentioned earlier sets the BDOS result flag to an
- error value if the password prompt is not answered 'correctly'
- and the next line (starting with a colon) will be skipped. If
- the PU response is correct then SETUP.SUB will be executed.
- SETUP.SUB can and should be password-protected as should all the
- programs it invokes.
-
-
- At first reading all the above probably seems more complicated
- than it really is. The password protection mechanism is a
- standard feature of CP/M Plus and is arguabley far more secure
- than the ZCPR-style "wheel" byte. Indeed, with the above system
- even the sysop cannot execute dangerous programs just by being
- the sysop - either the correct password must be supplied on any
- protected utility or the password must be set up as the default
- password.
-
- A degree of simplification and a number of other benefits can be
- had by implementing Jim Lopushinsky's ZCPR-style CCP replacement,
- CCP104.
-
-
- SOME ADVANTAGES OF CCP104
- =========================
-
- 1. Programs no longer have to be marked as SYS files to be
- executable from user 0. This means that it is no longer
- necessary to construct fake directory entries for command
- files just to show users what is available. You can simply
- make the user commands DIR files.
-
- 2. A command library can be tacked onto the end of the search
- path in the same fashion as ZCPR2's automatic LRUN facility.
- If a command has not been found by the end of the search
- path (which probably points to A: and nowhere else) then the
- CCP can automatically search COMMAND.LBR and execute the
- program from there (if it exists therein).
-
- 3. CCP104 supports many ZCPR-style features such as the "wheel"
- byte along with drive and user limits.
-
- 4. The command library search can be subject to the wheel byte
- setting. This means it is possible to put all the dangerous
- programs into COMMAND.LBR and they will only be accessible
- when the wheel byte is set - a security feature completely
- different from and independent of password protection.
-
- 5. CCP104 is compatible with and supports the HIST RSX which
- stores the last few commands for recall, edit and re-issue.
-
-
- CONFIGURING AND GENERATING CCP104
- =================================
-
- (Read this section in conjunction with a listing of CCPHDR.MAC)
-
- CCP should be YES
-
- WHLLBR should probably be YES to inhibit command library searches
- when the WHEEL byte is not set in which case you'd put DANGEROUS
- programs into the command library. However Tesseract RCPM+ has
- been running for a long time with WHLLBR set to NO and with SAFE
- programs in the library. (The dangerous ones are outside the
- library and are password-protected.)
-
- EXPAND should probably be YES.
-
- MYDRV, MYWHL and MYUSR should be left at their default values of
- 'P', 0FFh and 15 respectively (plus applicable offsets). Your
- BBS software can (and should) set the values appropriate for
- remote callers at login.
-
- TIME should probably be YES - it is a nice touch. However you
- might like to dive into the main source code (CCP104.MAC) and
- suppress the enclosing [brackets] which have no information
- value.
-
- BYECHK must be YES if you are going to set NOXOFF to YES. I'm
- not sure what else is affected by BYECHK. In any case it doesn't
- hurt to leave it set to YES.
-
- NOXOFF - take your pick. If all your RCPM+ utilities sense XOFF
- and XON then I guess there's no need to let the BDOS do it also,
- but I left NOXOFF set to NO.
-
- YESPRL should probably be set to NO. Remember that .PRL files
- are executable under CP/M+. You probably don't have any .PRL
- files that you want to execute and it is a nuisance to have to
- remember to rename any .PRLs to something else. KMD does protect
- against uploaded .PRL files by automatically renaming them, just
- as it does for .COM files so if you want to say PROG.PRL on the
- odd occasion then set YESPRL to YES.
-
- YESLBR should be YES if you are going to use the command library
- facility.
-
- TIMEON is up to you. Having TIMEON set to YES would be more
- useful if it displayed the time remaining rather than the time
- which has elapsed.
-
- CRNAME - I can think of no reason why you'd want to use anything
- other than the default name CMDRUN.COM. However I'd not waste
- time by allowing a path search. I'd set it up as:-
-
- crname:
- db 1 ;User 0 (really!)
- db 1 ;Drive A
- db 'CMDRUN COM' ;Library processor
-
- That completes the configuration for CCPHDR.MAC from which a new
- CCP will be generated. On a CP/M+ system you just say
-
- ccphdr.sub
-
- and CCP.COM pops out the other end.
-
-
- LIBRARY COMMAND PROCESSOR
- =========================
-
- Edit LRUNHDR.MAC and change EXDRV and EXUSR to match your upload
- area. Tesseract's is B0: so I set
-
- EXDRV: db 2
- EXUSR: db 0
-
- That's it. Generate CMDRUN.COM by saying
-
- lrunhdr.sub
-
- NAMED DIRECTORIES
- =================
-
- Of dubious value. By the time users figure out what names are
- available they know where to look anyway. Seems pointless using
- up TPA space to store directory names.
-
- If you plan on using Jim Lopushinsky's LD301 (renamed to LD.COM)
- to get inside .LBR files then it is a nice touch to include
-
- dirname on
-
- in the commands executed (indirectly) out of PROFILE.SUB. When a
- user says
-
- D4>ld bye510
-
- then the prompt changes to something like
-
- D4\BYE510>
-
- If you're going to use LUX then the above does not apply.
-
- WHAT NOW?
- =========
-
- Most CP/M Plus systems expect to find CCP.COM on A0: but some
- (like the Osborne Executive) load the CCP from the system tracks
- in CP/M2.2-style. That is quite silly, because in a system with
- banked memory it is possible to store a copy of the CCP during
- cold boot and reload it from banked memory every warm boot. The
- saving of a directory entry and 4K of file space seems pointless
- even on a floppy disk system because then you can change disks
- and no longer need to have a "system" disk in any drive once cold
- booting is complete.
-
- However it is possible that the computer system on which all this
- is to run has software cast in the old mould, supplied without
- source code, missing some of the standard configuration tools and
- you are stuck with it.
-
- The clue is to look for CCP.COM in user 0 of your ORIGINAL system
- disk. If it exists then the chances are you can just replace
- your current CCP.COM with the one you've just generated. If,
- when you cold-boot you see the prompt displayed as A> or 0A>
- instead of A0> then your computer cannot be loading the CCP from
- CCP.COM - it must be getting it from somewhere else, most likely
- the system tracks.
-
- I cannot tell you how your system track(s) is (are) arranged. If
- you are lucky then your computer manuals will. Since I do not
- have that information it is difficult for me to suggest a general
- method of rewriting selected portions of the system tracks.
-
-
- COMMAND HISTORY
- ===============
-
- Once you get CCP104 running, a really nice extra is to implement
- a command history stack so you can recall, edit and re-issue the
- most recent commands.
-
- At least three are available:-
-
- BUFF12A by Andrew McLean - now superseded.
- HIST by Jim Lopushinsky - derived from BUFF12A but
- substantially rewritten and simplified.
- HISTORY by Stuart Rose.
-
- Assuming you choose HIST (which is available as HIST+.LBR) then
- you should password-protect it and invoke it as the VERY LAST
- command of the PROFILE.SUB sequence. (General rule is that any
- program with an attached [permanent] RSX should be LAST in a
- SUBMIT file. This precludes having two RSX programs in a SUBMIT
- file but there is a work-around if you really need it.)
-
- Note also that there is a CCP105+ which supports command history
- in the same style as UNIX's csh. I don't know it this is an
- "approved" version of the CCP10X series.
-
- MODIFICATION TO SUBMIT.COM
- ==========================
-
- With SUMBIT.COM, SUBMOD1.HEX and SID.COM all accessible just say
-
- submod1.sub
-
- to patch SUBMIT.COM to allow it to execute non-SYS submit files
- in user 0. Note that for this to work, CCP104 or similar MUST be
- installed.
-
-
- = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
-
-
- Well that's it. It has been a while since I actually did all
- this so my memory is not to be trusted absolutely but I think I
- have it right. JRS.