; ; CCPZ V2.7 ; ;**** Revision History **** ; ; MODS BY SBB 08/01/81: ; 1) MINOR ADDITIONAL CODE OPTIMIZATIONS TO GAIN A BIT MORE SPACE. ; 2) ADDED "GO" COMMAND FOR COMPATIBILITY WITH MANY OTHER CCP'S. ; SAME AS "JUMP 0100", BUT IS NOT A "RAS" COMMAND (NO REASON ; IT SHOULD BE). ; 3) PUT "RESETUSER" CALL MADE JUST AFTER "CALLPROG" BACK INTO ; "MEMLOAD" WHERE IT BELONGS TO PREVENT FUNNY USER NUMBER ; CHANGING AFTER CALLED PROGRAM RETURNS. "MEMLOAD" WAS THE ; REASON FOR "RESETUSER" ANYWAY. ; 4) RESET DEFAULT DMA BUFFER WITH "DEFDMA" RIGHT AFTER CALLED ; PROGRAM RETURNS. THIS IS THE REASON PROGRAMS LIKE "STAT" ; WILL MESS UP A "SUBMIT" RUN. FIX THIS IN ANY OTHER CCP ; YOU RUN INTO. ; 5) DEFINED "FENCE" EQUATE TO ALLOW SEPARATION CHAR IN DIR ; TO BE SET TO TASTE (":" OR "|" ARE TYPICAL). ; 6) PUT IN SYSTEM SIZE (MSIZE) AND EXTRA BIOS SIZE (BIOSEX) ; EQUATES FOR CCPLOC CALCULATION, IN CASE USER KNOWS THOSE ; AND DOESN'T HAVE BDOSLOC. IF BDOSLOC IS AROUND, ITS SUPPLIED ; VALUE IS EASILY INSERTED INSTEAD. ; ; MODS BY RLC 07/29/81: ; 1) CODE COMPRESSION MADE BY FJW AND MENTIONED IN HIS MESSAGE ; OF THIS DATE INCORPORATED ; 2) HEXNUM (HEXADECIMAL NUMBER INPUT ROUTINE) EXTENDED TO ALLOW ; 16-BIT VALUES; GET AND JUMP CORRESPONDINGLY MODIFIED, AS WELL ; AS DEC NUMBER ROUTINE FOR HEX ESCAPE ; 3) DEFAULT HEX VALUE IS NOW ZERO (NOT 1 AS BEFORE) ; 4) ADDITIONAL PARSE CHECKING IN USER ROUTINE REMOVED; USER WITHOUT ; AN ARGUMENT NOW DROPS THE USER INTO USER NUMBER 0 ; ; MODS BY RLC 07/27/81: ; 1) ESCAPE FROM DEC TO HEX INSTALLED AND ESCAPE FROM HEX TO ; DEC REMOVED; THIS REFERS TO THE '#' CHAR WHICH IS USED TO ; CHANGE NUMBER BASES; Change as per group discussion ; 2) SAVE CHANGED TO DEFAULT TO DEC AS NUMBER ARGUMENT; ORIGINAL ; FORM OF SAVE COMMAND EFFECTIVELY RESTORED; Change as per group ; discussion ; ; MODS BY RLC 07/20/81: ; 1) RADICAL RESTRUCTURING AND ADDITIONAL DOCUMENTATION ; 2) REMOVED MOST SYSTEM-RELATIVE CONDITIONALS AND ADDED ; SIMPLE VALUE-EQUATE FOR CCPLOC (This came from a group ; discussion and creation of the BDOSLOC program by RLC ; which supplies the required value to the user.) ; 3) CODE OPTIMIZATION AND SIZE REDUCTION IN SEVERAL PLACES ; 4) RESTRUCTURING OF CCP-RESIDENT COMMAND SCANNING PROCEDURE ; AND COMMAND TABLE (TABLE ENTRIES ARE NOW OF FORM 'NAME',ADR) ; 5) ADDED 'JUMP' COMMAND OF THE FORM: ; JUMP or JUMP ; THIS COMMAND ALLOWS THE USER TO "CALL" THE LOADED PROGRAM ; AT THE SPECIFIED PAGE (256 BYTES/PAGE) NUMBER OR, IF PAGE NUMBER ; IS NOT SPECIFIED, THE PROGRAM AT 100H IS CALLED. THE DEFAULT ; PARAMETERS IN THE COMMAND LINE ARE LOADED INTO THE SYSTEM ; PARAMETER BLOCKS IN LOW MEMORY (TFCB, TBUFF, ETC) AS FOR ANY ; OTHER COMMAND SO THAT THE COMMAND LINE IS PARSED AND PASSED ; TO THE PROGRAM. A SUBROUTINE CALL IS MADE, SO THE MEMORY- ; RESIDENT PROGRAM MAY RETURN TO CP/M VIA A SIMPLE RET INSTRUCTION. ; THE ONLY RESTRICTION TO THIS COMMAND IS THAT A JUMP 0 WILL BE ; INTERPRETED AS A JUMP 1. ; 6) REDUCED THE SIZE OF THE COMMAND LINE BUFFER TO 80 CHARS ; (SEE THE BUFLEN EQUATE TO CHANGE THIS) ; 7) HEXADECIMAL NUMBER INPUT ROUTINE ADDED AND DECIMAL NUMBER ROUTINE ; CHANGED TO ALLOW FOR ALTERNATE (HEX) BASE; HEX ROUTINE NOW ; RECOGNIZES THE 'NUMBASE' CHARACTER (SEE CUSTOMIZING EQUATES) AS ; A FLAG TO USE THE OTHER BASE ROUTINE. FOR INSTANCE, TO SPECIFY ; SAVE F (DEFAULT NUMBER BASE IS HEX), THE USER MAY ISSUE ; EITHER OF THE FOLLOWING COMMANDS [NUMBASE="#"]: ; SAVE F or SAVE #15 ; THE ESCAPE CHAR [#] MAY BE CHANGED BY ALTERING THE NUMBASE EQUATE. ; 8) 'SAVE' AND 'JUMP' COMMANDS CHANGED TO USE HEXADECIMAL ARGUMENT ; BY DEFAULT ; 9) ADDED 'GET' COMMAND WHICH LOADS A FILE AT A SPECIFIED PAGE ; ADDRESS. FORM OF THIS COMMAND IS: ; GET ; 10) REMOVED CLS COMMAND (as per discussion) ; 11) ADDED RAS (REMOTE ACCESS SYSTEM) EQUATE WHICH REMOVES FUNCTIONS ; TYPICALLY NOT DESIRED UNDER A REMOTE-ACCESS SYSTEM LIKE AN RBBS; ; FUNCTIONS REMOVED ARE: ; SAVE, ERA, REN, JUMP, GET ; ; MODS BY KBP 07/02/81: ; 1) ADDED WIDE EQUATE AND ROUTINE FOR WIDER DIR DISPLAY. ; 2) CHANGED COMMAND BUFFER TO TERMINATE STRING WITH 0. ; 3) ADDED CONDITIONALS FOR MINI AND HARD DISK. CHANGED ; CCPLOC CALCULATION TO ALLOW FOR SEVERAL SYSTEM LENGTHS. ; 4) ADDED EQUATE FOR DEFAULT USER NUMBER SO IT COULD BE ; OTHER THAN 0 (nice for hiding COM files in high user ; numbers made inaccessible on remote CP/M systems). ; ; THE FOLLOWING MODS MADE BY RLC 06/30/81: ; 1) ERROR IN CCPLOC FOR NON-REL OPTION CORRECTED ; 2) PROVISION OF 'BASE' CONSTANT ADDED FOR NON-ORG-0 CP/M SYSTEMS ; 3) MORE USER FLAGS ADDED: ; SPRMPT - ALLOWS USER TO EASILY CHANGE SUBMIT PROMPT ; (i.e., A$ is default) ; CPRMPT - ALLOWS USER TO EASILY CHANGE COMMAND PROMPT ; (i.e., A> is default) ; PGDFLG - ALLOWS USER TO SET TYPE COMMAND PAGING FLAG ; 4) CHANGED OPTIONS TO DIR, ERA, ETC (HUMAN ENGINEERING): ; DIR A - Both $DIR and $SYS ; DIR S - Just $SYS ; 5) MADE MINOR CODE COMPRESSION ENHANCEMENTS (FOR SPACE) ; ; THE FOLLOWING MODS MADE BY RGF 06/29/81: ; 1) CCP NOW USES THE BDOS INDICATOR TO DETERMINE IF ; A POSSIBLE SUBMIT FILE EXISTS ON THE DISK. THIS ; ELIMINATES WASTED TIME SEARCHING FOR A NON-EXIST- ; ANT SUBMIT FILE AFTER EVERY ^C ; 2) ADDED A CONDITIONAL "PGDFLT". IT WORKS THIS WAY: ; IF YOU SET PGDFLT TRUE (TO A 1), THEN YOU ; RETAIN RLC'S PAGING FEATURE WITH THE TYPE ; COMMAND. YOU CAN THEN OVERRIDE IT BY TYPING ; "TYPE /", TO SMOOTHLY VIEW THE ; FILE. ; IF YOU SET PGDFLT FALSE (TO A 0), THEN PAG- ; ING IS ONLY DONE WITH THE "/' OPTION, AND ; IS SMOOTH NORMALLY. ; 3) ADDED CLEAR SCREEN DEFINITION BYTES TO SIMPLIFY ; CARRYING THE CCP TO DIFFERENT TERMINALS. THESE ; ARE DEFINED IN EQUATES AS CLS1 AND CLS2. ALSO ; CHANGED THE CLS ROUTINE TO CONSERVE A LITTLE ; SPACE ; 4) ADDED REL EQUATE -FOR THOSE WHO ARE FAMILIAR WITH ; MODIFYING MOVCPM, THIS CAN BE USED IN CONJUNCTION ; WITH GENMOD.COM (PROVIDED BY DIGITAL RESEARCH ; IN THEIR MPM PACKAGE) TO INTEGRATE THIS CCP ; DIRECTLY INTO YOUR MOVCPM PROGRAM. ; 5) CHANGED THE FORM OF THE @ OPTION TO THE 'DIR' ; COMMAND, TO ALLOW AMBIGUOUS FILENAMES. TO SEE ; COMBINED $SYS AND $DIR FILES, TYPE ; DIR @. ; EG, ; DIR *.ASM @ ; OR ; DIR *.COM @ ; THE PRICE FOR THIS LUXURY IS THAT YOU NOW HAVE TO ; TO USE THE *.* SPECIFIER WHEN VIEWING ALL FILES: ; DIR *.* @. ; INSTEAD OF THE FORMER ; DIR @. ; NOTE THAT THE ACTUAL CHARACTER USED TO SPECIFY $SYS ; FILES IS NOW DEFINED IN AN EQUATE, FOR EASY CHANGING. ; THIS IS INTENDED FOR REMOTE CPM SYSTEMS, WHERE YOU ; DON'T ALWAYS WANT THE CALLER TO SEE $SYS FILES. NOTE ; THAT YOU CAN EFFECTIVELY DISABLE THE $SYS OPTION BY ; DEFINING THE SYS SPECIFIER AS A LOWER-CASE LETTER. ; 6) ADDED A NEW OPTION TO THE DIR COMMAND: ; DIR $ ; WILL DISPLAY ONLY $SYS FILES. CAN BE ; AN AMBIGUOUS FILE NAME. THE "$" SPECIFIER CAN BE ; CHANGED BY MODIFYING AN EQUATE. ; 7) CHANGED COMMENT FLAG FROM '*' TO ';' THROUGHOUT ; TO SIMPLIFY ADAPTATION FOR OTHER ASSEMBLERS. ; 8) ADDED TRUE/FALSE IN PLACE OF 0/1 FOR CONDITIONALS TO ; IMPROVE READABILITY ; 9) ADD CONDITIONAL 'SUPRES'. WHEN SET TRUE, USER NUMBER ; REPORTING IS SUPPRESSED FOR USER 0 ONLY, ALL OTHER ; USER NUMBERS ARE UNCHANGED. ; 10) ADDED ADDITIONAL Z80 CODE AND ASSOC. MACROS TO INCREASE ; USABLE CODE SPACE ; 11) ADDED "DFU" COMMAND, WHICH CAN BE USED TO DYNAMICALLY ; CHANGE THE USER NUMBER THAT IS SEARCHED WHEN A .COM ; FILE INVOCATION FAILS IN THE CURRENT USER AREA. NOTE ; THAT THIS REVERTS BACK TO ITS NORMAL VALUE OF USER 0 ; EACH WARM BOOT. ; 12) BREAK ROUTINE DIDN'T BREAK RELIABLY BECAUSE I/O WAS ; THRU FUNCTION 6. THE PROBLEM IS CAUSED BY THE FACT ; THAT BDOS TESTS STATUS WHENEVER IT SENDS A CHARACTER ; TO THE SCREEN, AND ACTUALLY INPUTS THE CHARACTER IF ; STATUS IS TRUE. IF THE CHAR IS NOT A CONTROL-S, BDOS ; BUFFERS IT UNTIL THE NEXT INPUT CALL, WHICH IS BY- ; PASSED BY USING FUNCTION 6. ; ; 29 JUNE, 1981 (RGF) ; ; RLC'S NOTES: ; ;**** CUSTOMIZATION PROCEDURE ***** ; To customize this CCP for CP/M, do the following: ; 1. Run SYSGEN and obtain a sysgen image of CP/M ; 2. Issue "SAVE 44 CPM.COM" to save sysgen image on disk ; 3. Assemble this CCP (with Mods); MAC or M80 MUST be used ; because of MACROs ; 4. If end address exceeds C500H, CCP is too big; correct ; 5. Load sysgen image with "DDT CPM.COM" ; 6. Init FCB with ICCP22.HEX (from assembly) ; 7. Read in CCP with offset 5400 ("R5400") ; CCP starts at address 1100H in sysgen image ; 8. Save sysgen image (if desired) with ^C and ; "SAVE 44 NEWCPM.COM" ; 9. Place system on disk with "SYSGEN" ; ;**** NON-STANDARD FEATURES ;**** ; The non-standard features incorporated into this CCP are: ; A. The Command-Search Hierarchy, as follows -- ; 1. Scan for a CCP-resident command and execute it if ; found ; 2. If not CCP-resident, look for a .COM file on disk ; 3. If the .COM file is not found in the current user ; area and the current user area is not USER 0, ; USER 0 is selected and scanned for the file ; 4. If the .COM file is not found on the current ; logged-in disk drive, drive A: is selected ; and scanned for the file ; B. The DIR Command no longer prints the current drive spec ; at the beginning of each line ; C. The TYPE Command pages its output ; D. A LIST Command now exists which is like TYPE but does not ; page and sends its output to the LST: device ; E. A CLS (Clear Screen) Command now exists which clears the ; screen of the Hazeltine 1500 terminal ; F. The user number is printed as part of the command prompt; ; the prompt is now du>, such as A0> and A15> ; G. Z80-code is used throughout to reduce the size of the CCP ; and give room to implement the additional functions ; H. The input line buffer has been reduced in size to 100 bytes ; I. The ERA Command displays the names of the files it is to ; erase ; J. The DIR Command has an additional special form of "DIR @" ; which displays all files (both non-system and system), ; while "DIR" displays just the non-system files ; K. The Directory Display no longer displays the disk name at ; the beginning of each line and it now includes a '.' between ; the file name and file type (FILENAME.TYP) ; L. The SUBMIT File Facility now expects the $$$.SUB file to be ; on the currently logged-in disk (as opposed to always A:) ; M. The Command Line Prompt is now '$' if the command comes from ; a $$$.SUB file and '>' if the command comes from the user; ; also, the '>' is not printed until all preprocessing is ; completed ; N. The TYPE and LIST Commands mask the MSB of each byte, so that ; files created by editors such as EDIT80 are "printable" ; ;**** End of Revision History **** ;