mirror of
https://github.com/wwarthen/RomWBW.git
synced 2026-02-06 22:43:15 -06:00
119 lines
3.0 KiB
Plaintext
119 lines
3.0 KiB
Plaintext
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
|
||
|
||
|