home *** CD-ROM | disk | FTP | other *** search
- ;
- ; PROGRAM: CCPLOC
- ; AUTHOR: RICHARD CONN
- ; VERSION: 1.1
- ; DATE: 6 JAN 83
- ; PREVIOUS VERSIONS: 1.0 (14 DEC 82)
- ;
- VERS EQU 11
-
- ;
- ; This program is Copyright (c) 1982, 1983 by Richard Conn
- ; All Rights Reserved
- ;
- ; ZCPR2 and its utilities, including this one, are released
- ; to the public domain. Anyone who wishes to USE them may do so with
- ; no strings attached. The author assumes no responsibility or
- ; liability for the use of ZCPR2 and its utilities.
- ;
- ; The author, Richard Conn, has sole rights to this program.
- ; ZCPR2 and its utilities may not be sold without the express,
- ; written permission of the author.
- ;
-
-
- ;
- ; CCPLOC -- CCP Locator
- ;
- ; The purpose of CCPLOC is to locate the addresses of the running
- ; CP/M 2.2 CCP, BDOS, and BIOS, and to display these values to the user.
- ;
-
- ;
- ; CP/M Constants
- ;
- bdos equ 5 ; BDOS Entry
- cr equ 0dh
- lf equ 0ah
-
- ;
- ; SYSLIB Externals
- ;
- ext print,phl4hc,pa2hc,cout,crlf
-
- ;
- ; Branch to Start of Program
- ;
- jmp start
-
- ;
- ;******************************************************************
- ;
- ; SINSFORM -- ZCPR2 Utility Standard General Purpose Initialization Format
- ;
- ; This data block precisely defines the data format for
- ; initial features of a ZCPR2 system which are required for proper
- ; initialization of the ZCPR2-Specific Routines in SYSLIB.
- ;
-
- ;
- ; EXTERNAL PATH DATA
- ;
- EPAVAIL:
- DB 0FFH ; IS EXTERNAL PATH AVAILABLE? (0=NO, 0FFH=YES)
- EPADR:
- DW 40H ; ADDRESS OF EXTERNAL PATH IF AVAILABLE
-
- ;
- ; INTERNAL PATH DATA
- ;
- INTPATH:
- DB 0,0 ; DISK, USER FOR FIRST PATH ELEMENT
- ; DISK = 1 FOR A, '$' FOR CURRENT
- ; USER = NUMBER, '$' FOR CURRENT
- DB 0,0
- DB 0,0
- DB 0,0
- DB 0,0
- DB 0,0
- DB 0,0
- DB 0,0 ; DISK, USER FOR 8TH PATH ELEMENT
- DB 0 ; END OF PATH
-
- ;
- ; MULTIPLE COMMAND LINE BUFFER DATA
- ;
- MCAVAIL:
- DB 0FFH ; IS MULTIPLE COMMAND LINE BUFFER AVAILABLE?
- MCADR:
- DW 0FF00H ; ADDRESS OF MULTIPLE COMMAND LINE BUFFER IF AVAILABLE
-
- ;
- ; DISK/USER LIMITS
- ;
- MDISK:
- DB 4 ; MAXIMUM NUMBER OF DISKS
- MUSER:
- DB 31 ; MAXIMUM USER NUMBER
-
- ;
- ; FLAGS TO PERMIT LOG IN FOR DIFFERENT USER AREA OR DISK
- ;
- DOK:
- DB 0FFH ; ALLOW DISK CHANGE? (0=NO, 0FFH=YES)
- UOK:
- DB 0FFH ; ALLOW USER CHANGE? (0=NO, 0FFH=YES)
-
- ;
- ; PRIVILEGED USER DATA
- ;
- PUSER:
- DB 10 ; BEGINNING OF PRIVILEGED USER AREAS
- PPASS:
- DB 'chdir',0 ; PASSWORD FOR MOVING INTO PRIV USER AREAS
- DS 41-($-PPASS) ; 40 CHARS MAX IN BUFFER + 1 for ending NULL
-
- ;
- ; CURRENT USER/DISK INDICATOR
- ;
- CINDIC:
- DB '$' ; USUAL VALUE (FOR PATH EXPRESSIONS)
-
- ;
- ; DMA ADDRESS FOR DISK TRANSFERS
- ;
- DMADR:
- DW 80H ; TBUFF AREA
-
- ;
- ; NAMED DIRECTORY INFORMATION
- ;
- NDRADR:
- DW 00000H ; ADDRESS OF MEMORY-RESIDENT NAMED DIRECTORY
- NDNAMES:
- DB 64 ; MAX NUMBER OF DIRECTORY NAMES
- DNFILE:
- DB 'NAMES ' ; NAME OF DISK NAME FILE
- DB 'DIR' ; TYPE OF DISK NAME FILE
-
- ;
- ; REQUIREMENTS FLAGS
- ;
- EPREQD:
- DB 000H ; EXTERNAL PATH?
- MCREQD:
- DB 000H ; MULTIPLE COMMAND LINE?
- MXREQD:
- DB 000H ; MAX USER/DISK?
- UDREQD:
- DB 000H ; ALLOW USER/DISK CHANGE?
- PUREQD:
- DB 000H ; PRIVILEGED USER?
- CDREQD:
- DB 000H ; CURRENT INDIC AND DMA?
- NDREQD:
- DB 000H ; NAMED DIRECTORIES?
- Z2CLASS:
- DB 0 ; CLASS 0
- DB 'ZCPR2'
- DS 10 ; RESERVED
-
- ;
- ; END OF SINSFORM -- STANDARD DEFAULT PARAMETER DATA
- ;
- ;******************************************************************
- ;
-
- ;
- ; Start of Program
- ;
- start:
- call print
- db 'CCPLOC Version '
- db (vers/10)+'0','.',(vers mod 10)+'0'
- db cr,lf
- db cr,lf,'CP/M Element Base Page Base Address'
- db cr,lf,'------------ --------- ------------',0
-
- lhld bdos+1 ;get base address of BDOS
- mvi l,0 ;set to even boundary
- lxi d,-800H ;back up to start of CCP (size of CCP)
- dad d ;HL pts to CCP
- call print
- db cr,lf,' CCP ',' ',0
- mov a,h ;base page in A
- call pa2hc ;print as hex
- call ph ;print H
- call filler ;next field
- call phl4hc ;print full address
- call ph
-
- lhld bdos+1 ;just get base address of BDOS again
- call print
- db cr,lf,' BDOS ',' ',0
- mov a,h ;base page in A
- call pa2hc ;print as hex
- call ph
- call filler
- call phl4hc
- call ph
-
- mvi l,0 ;set even page
- lxi d,0e00h ;size of BDOS
- dad d ;HL pts to BIOS
- call print
- db cr,lf,' BIOS ',' ',0
- mov a,h ;base page in A
- call pa2hc ;print as hex
- call ph
- call filler
- call phl4hc
- call ph
- call crlf ;new lines
- call crlf
- ret
-
- ;
- ; PH -- Print H followed
- ;
- ph:
- mvi a,'H' ;H
- jmp cout
-
- ;
- ; FILLER -- Jump Over to Next Field
- ;
- filler:
- call print
- db ' ',' ',' ',0
- ret
-
- end