home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ftp.barnyard.co.uk
/
2015.02.ftp.barnyard.co.uk.tar
/
ftp.barnyard.co.uk
/
cpm
/
walnut-creek-CDROM
/
CPM
/
LANGUAGS
/
MODULA2
/
SHELLIF.MZD
/
SHELLIF.MOD
Wrap
Text File
|
2000-06-30
|
3KB
|
83 lines
;
; MODIFICATION TO ZCPR3 CP TO ALLOW IF/ELSE STATEMENTS INSIDE A SHELL CMD
;
; If you are a heavy user of aliases and arunz alias.cmd
; files which contain flow control statements, and you
; also use the SHSET FNAME1;FNAME2;CMD sequence to create
; shells from non-shell programs; you have probably had
; problems if FNAME2 or FNAME2 were aliases which contained
; flow control statements.
;
; The source of the difficulty is in the following section
; of ZCPR3 CP code. The code was originally included so that
; a false flow control state would not prevent re-entry to
; a shell. However, if you are willing to allow that to occur;
; the modification shown below will greatly increase the
; flexibility of the ZCPR3 system by allowing flow control
; statements to be included inside a shell command. I have
; been using this modification for several months (along with
; CMD11.COM) and have had no problems introduced by doing so.
;
; Just insert the conditional assembly statements as shown, into
; the ZCPR3 CP source code, assemble, & link. The code below
; is from ZCPR3 ver 3.0, but it shouldn't be to difficult to
; find the proper place to modify if you are using the latest
; release.
; Royce Shofner....4/15/87
RS3:
LD (NXTCHR),HL ;SET PTR TO FIRST CHAR OF NEW COMMAND LINE
LD (CURCMD),HL ;SAVE PTR TO COMMAND LINE FOR ERROR RETURN
;
; PARSE COMMAND LINE PTED TO BY HL
;
CALL PARSER ;PARSE ENTIRE COMMAND LINE
;***************************************************************
;
; CHECK FOR SHELL INVOCATION AND RUN IT IF SO
;
; THIS IS THE CODE WHICH PREVENTS FLOW CONTROL PROCESSING
; FROM WITHIN A (FNAME1;FNAME2;CMD) SEQUENCE WHERE FNAME1,
; FNAME2 ARE ALIASES CONTAINING FLOW CONTROL STATEMENTS
; IF SHELLIF IS DECLARED TRUE, THIS SECTION OF CODE IS NOT
; INCLUDED IN THE ZCPR3 COMMAND PROCESSOR, & FLOW CONTROL
; STATEMENTS MAY BE INCLUDED INSIDE A SHELL COMMAND
;
; THE SHELLIF EQUATE MAY BE LOCATED INSIDE THE ZCPR3 CP
; AS IS SHOWN HERE, OR IT MAY BE PLACED INSIDE Z3HDR.LIB
; SOMEWHERE IN THE FLOW CONTROL DEFINITION AREA
SHELLIF EQU TRUE ;ALLOWS IF PROCESSING FROM SHELL
IF Z3MSG NE 0
IF NOT SHELLIF
LD A,(Z3MSG+3) ;GET COMMAND STATUS
CP 1 ;SHELL?
JP Z,RS4
ENDIF ;SHELLIF
ENDIF ;Z3MSG NE 0
;***************************************************************
;
; IF IFON AND FCP AVAILABLE, TRY TO RUN FROM FCP
;
IF IFON AND [FCP NE 0]
LD HL,FCP+5 ;PT TO COMMAND TABLE
CALL CMDSCAN ;SCAN TABLE
JP Z,CALLP ;RUN IF FOUND (NO LEADING CRLF)
ENDIF ;IFON AND (FCP NE 0)
;
; IF IFON, THEN CHECK FOR RUNNING IF AND FLUSH COMMAND LINE IF ENABLED
;
IF IFON
LD HL,Z3MSG+1 ;PT TO IF BYTE
LD A,(HL) ;GET IT
OR A ;SEE IF ANY IF
JR Z,RS4 ;CONTINUE IF NOT
INC HL ;PT TO IF ACTIVE BYTE
AND (HL) ;SEE IF CURRENT IF IS ACTIVE
JR Z,RS1 ;SKIP IF NOT
ENDIF ;IFON
RS4: