mirror of https://github.com/wwarthen/RomWBW.git
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
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
|
|
|
|
|