You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

119 lines
3.0 KiB

page
; Library: RCPH for Z34RCP
; Author: Carson Wilson
; Version: 1.0
; Date: June 15, 1988
;
; Command: HELP
; Function: This command displays a list of all resident commands that
; are supported, including those in the CPR (command processor),
; RCP, and FCP.
;
; Syntax: H
clist:
; Print the FCP-resident command names
if listfcp
call print ; Print header for FCP
db lf
db 'FC','P'+80h
ld hl,(fcp) ; Get FCP address dynamically from ENV
ld a,h ; See if still there
or l
jr z,nofcp ; FCP has been removed
ld bc,5 ; Calculate address of FCP command table
add hl,bc
call cmdlist ; Display list of commands
nofcp:
endif ;listfcp
; Print the CPR-resident command names
if listcpr
call print ; Print "CPR"
db cr,lf ; Need CR if no FCP
db 'CP','R'+80h
ld hl,(ccp) ; Get CCP address from ENV
ld bc,offcmd ; Point to command table in CPR
add hl,bc
call cmdlist ; Display the list of commands
endif ;listcpr
; Print the RCP-resident command names
call crlf ; Skip a line
ld hl,rcpname ; Print RCP name
call printhl
ld hl,RCPbegin+5 ; Point to RCP command table
; Fall through to CMDLIST
;----------------------------------------
; Subroutine to display list of commands in a command table (code above
; falls through to this routine -- do not move it). The commands are
; displayed 5 per line with 8 character spaces allowed for each command
; (subject to equates below).
cmdlist:
call crlf ; Start with new line
ld e,(hl) ; Get size of each command name into DE
ld d,0
inc hl ; Point to name of first command
ld c,cmdsline ; Set names-per-line value
cmdlist1:
ld a,(hl) ; Get first character of the command name
or a ; See if it is null
jr nz,cmdlist1a ; If not, continue
ld a,cmdsline ; See if we are already on a new line
cp c
call nz,crlf ; If not, skip a line
ret
cmdlist1a:
if noshow ; Option to suppress wheel-limited cmds
rla ; Shift high bit of name into carry bit
jr nc,cmdlist2 ; If not restricted, go on
call getwhl ; Otherwise, check wheel byte
or a
jr nz,cmdlist2 ; If wheel set, continue as usual
add hl,de ; Otherwise skip this command
jr cmdlist5
endif
; Print leading spaces between names
cmdlist2:
ld a,cmdspace ; Spacing between command names
sub e ; Less length of each command name
ld b,a
cmdlist3:
call spac
djnz cmdlist3
; Print name of command
ld b,e ; Length of each name into B
cmdlist4:
ld a,(hl) ; Get command name character
call conout
inc hl ; Point to next
djnz cmdlist4
dec c ; Decrement count of names on this line
jr nz,cmdlist5 ; Branch if room for more names
call crlf ; Otherwise, end this line and
ld c,cmdsline ; ..reset count for another line of commands
; Skip to next command name
cmdlist5:
inc hl ; Skip jump vector
inc hl
jr cmdlist1 ; Back to process next name
; End RCPH.LIB