The following has been taken direct from the ZPM3 source and is 
provided as a reference. No guarantees are made with regard to 
its accuracy. The only SCB entries that you should manipulate in 
CP/M 3.0 are the ones published by its authors.


;-------------------------------------------------------------------------------
;68	TRAPS FOR WARM BOOT and CONSOLE FUNCTIONS
;-------------------------------------------------------------------------------
; This table allows you to replace certain BIOS functions with new ones in the
;	TPA.  Because of the banked nature of CP/M 3, simply changing the BIOS
;	vector could cause a problem as some BIOS functions need to be in the
;	system bank.  If you redirect any of these functions, you should replace
;	the first jump (0c3h) in each group with a LD HL, (21h).  When restoring
;	the jumps check first that the BIOS vectors you are restoring are in
;	fact to the BIOS and not to another redirection.  To do this, make sure
;	that the BIOS jumps are pointing above themselves, not down into TPA.

; For ZPM, the need for the traps has been eliminated.
;  Because pre-ZPM programs may attempt to write to the first byte of each
;  trap, these bytes can only be used for other things with some caution!

; Warm boot trap
	jp	?wboot		;68
	jp	dotpa		;6b
; Console status trap
	jp	?const		;6e
	jp	dotpa		;71
; Console input trap
	jp	?conin		;74
	jp	dotpa		;77
; Console output trap
	jp	?conout		;7a
	jp	dotpa		;7d

;;; List output trap
;;	jp	?list		;80
;;	jp	dotpa		;83


	db	0c3h	;80 This first byte should not be used as it
			; could get changed by programs which attempt to
			; redirect the printer	

	db	0	;81 Not used yet

	db	0	;82 Function 59 load user number.  Normally
			; function 59 loads from the current user
			; however by setting this byte to a user
			; number + 1, function 59 will load from
			; that user area instead (only works with
			; the ZCCP loader RSX).  0=current user number.

	dw	0	; -19		83
			; This word is set to the address of the
			;  ZCPR system environment.  If it is 0000h
			;  the BDOS assumes that the normal CP/M 3
			;  CCP system is running.  Otherwise, the BDOS
			;  will perform certain functions differently.
			;  For example function 152 will use named
			;  directories if available, function 10
			;  will the use message buffers for CCP running
			;  flag and wheel protection of files is enabled.

			;  Note that Z3PLUS users can set this word
			;  once Z3PLUS is installed to enable the
			;  extra functions. ZCCP users need not worry
			;  as it will be done automatically.

	db	0	;		-17	85
			; This byte holds control flags for various ZPM3
			;  functions.
			; bit 7: Setting this bit will clear the function
			;	  10 history buffer. Write only.
			; bit 6: Controls enabling of the function 10 AUTO
			;	  COMMAND facility.  If set, control-Q toggles
			;	  the facility on and off.  If clear, control-Q
			;	  has no effect.  Read/Write.
			; bit 5: After function 152 has been called, if a DU:
			;	  D:,U: or DIR: spec has been found, this
			;	  bit is set and the drive and user is
			;	  set in the FCB.
			; bit 4: This flag is for system use only.  It is
			;	  set after a function 55 call, but is reset
			;	  after any other call.
			; bit 3: After function 152 has been called, if a
			;	  DIR: spec has been parsed, this bit is set
			;	  and the user and drive is set in the FCB.
			; bits 2-0: Not used yet			
;-------------------------------------------------------------------------------
;	SYSTEM CONTROL BLOCK (unofficial)
;-------------------------------------------------------------------------------
; None of these is accessed by the resident BDOS or the user
	dw	0	;				-16	86
	dw	0	;				-14	88
	dw	0	;				-12	8a
	dw	0	;				-10	8c
	dw	0	;				-e	8e

	dw	0	; Bit mapped vector of drives	-c	90
			;  with open files since last warm boot.
	dw	0	; Bit mapped vector of drives	-a	92
			;  accessed since last warm boot.

	dw	0	;				-8	94
	dw	07h	;				-6	96
	dw	base+6	; This word is the address	-4	98
			;  of the entry to the BDOS.
			;  It can be used to find the
			;  actual BDOS as opposed to
			;  the top of TPA.
	db	0	;				-2	9a
	db	0	;				-1	9b
;------------------------------------------------------------------------------
;9c	SYSTEM CONTROL BLOCK
;------------------------------------------------------------------------------
; The official system control block starts here.  In reality, the control block
;	begins before this point, but this is the data section that we are
;	told about in the DRI literature
; In this section, a code is used to signify which sections of the code
;	access the bytes: a * means that that user may read and write the bytes
; a + means that the resident portion of the BDOS accesses the bytes
; a ~ means the banked portion of the BDOS accesses the bytes
; a ~~ means the banked portion of ZPM3 accesses the bytes, but CPM doesn't
scb:
	db	0	;+ Reserved			0	9c
	dw	0	;+ Reserved			1	9d
	db	0	;  Reserved			3	9f
	db	0	;  Reserved			4	a0

	db	31h	; BDOS version number (in BCD)	5	a1

			; The following four bytes may be used for any purpose.
			; Note that CCP104 used 8 and 9. ZCCP and ZPM3 do not
			; affect these bytes at all.
	db	0	;* Reserved for user		6	a2
	db	0	;* Reserved for user		7	a3
	db	0	;* Reserved for user		8	a4
	db	0	;* Reserved for user		9	a5

	db	0	; Reserved			0a	a6
	db	0	; Reserved			0b	a7
	db	0	; Reserved			0c	a8
	db	0	; Reserved			0d	a9
	db	0	; Reserved			0e	aa
	db	0	; Reserved			0f	ab

	dw	0	;* Program Error Return Code.	10	ac
			; This 2-byte field can be used by a program to pass
			; an error code or value to chained programs.  CP/M 3's
			; conditional command facility also uses this field to
			; determine if a program executes successfuly.  The
			; BDOS Function 108 (Get/SET Program Return Code) is
			; used to get/set this value

			; Following byte holds the base page of the top
			; multiple command RSX (only used by CCP).
	db	0	; Reserved			12	ae

			; The following bytes are the default disk and user
			; of the CCP.  When the CCP is run, the disk and user
			; is restored to these values unless flagged not to
			; by the chain command.
	db	0	; CCP disk			13	af
	db	0	; CCP user number		14	b0

			; The following word holds the address of the next
			; command to get if running multiple commands or
			; shells.  It should not be set by the user.

	dw	0	; Multiple command pointer. CCP	15	b1

	db	0	; System flag	CCP use		17	b3
			; This byte is bit mapped as follows:
			; Bit 0 Submit flag (set if a file beginning with '$'
			;       is found, cleared by CCP)
			;     1 RSX flag (set by loader when it loads a null
			;	file with RSXs attached (indicates to CCP
			;	not to attempt to remove the RSXs until the
			;	second warm boot).  May be set by RSXs
			;     2-5 unknown (probably used by utilities)
			;     6 Change default DU to last program's DU
			;	when chaining.
			;     7 Chain flag.  Set to indicate to CCP that
			;	there is a command to chain to at 080h.
			
	db	0	; System flag	CCP use		18	b4
			; This byte is bit mapped as follows:
			; Bit 0	Display command flag
			;     1 Display command flag
			;     2 Unknown
			;     3 File type search order
			;     4 File type search order
			;     5 Reset disk system
			;     6 "GET" RSX flag (set if GET RSX is redirecting)
			;     7 CCP running flag
			; Bit 7 is the only one used by the BDOS (in function 10)

	db	0	; System flag	CCP use		19	b5
			; This byte is bit mapped as follows:
			; Bit 0 Unknown
			;     1 Cold boot flag
			;     2-7 Unknown

	db	0	;* Console Width		1a	b6
			; This byte contains the number of columns
			; (characters) per line on your console relative
			; to zero.  Most systems default this value to
			; 79.  You can set this default value by using
			; GENCPM or the DEVICE utility.  The console width
			; value is used by CP/M 3 in BDOS function 10.  It
			; is not used by ZPM3. Typing a character into the 
			; last position of the screen, as specified by the
			; Console Width field, must not cause the terminal
			; to advance to the next line.

	db	0	; Console Column Position	1b	b7
			; This byte contains the current console column postion

	db	0	;* Console Page Length		1c	b8
			; This byte contains the number of lines (rows) on your
			; console relative to zero.  Most systems default this
			; value to 23.  This default value may be changed by
			; using GENCPM or the DEVICE utility. 

	db	0	; Reserved			1d	b9
			; The following word is used by function 10 and points
			; to the next character to get in an initialised
			; function 10 buffer.  If a ^C termination occurs or
			; if a null terminator is found before a CR or LF,
			; this word is set 0.  By setting DE NZ and pointing
			; this word to a buffer before calling it, you
			; can have it initialize buffers other than
			; the default DMA.

	dw	0	;+~Reserved			1e	ba
			; The following word is used by multiple commands and
			; shells.  When function 10 retrieves information from
			; an initialised buffer, it stores the next character
			; position at offset 1e and here at 20.  If a ^C
			; termination occurs, 1e is set to 00, but 20 is left
			; as it was so that the next command can be retrieved.
			; Therefore, if 1e is 00 and 20 is NZ it means that
			; a ^C termination happened

	dw	0	;~ Reserved			20	bc


			; Redirection flags (following) for each of the five
			; logical character devices.  If your system's BIOS
			; supports assignment of logical devices to physical
			; devices, you can direct each of the five logical
			; character devices to any combination of up to 12
			; physical devices.  The 16 bit word for each device
			; represents the following:
			;
			; Each bit represents a physical device where bit 15
			; corresponds to device zero and bit 4 corresponds to
			; device 11.  Bits zero through 3 are reserved for
			; system use and are used for redirection to disk files.
			;
	dw	0	;* CONIN Redirection Flag	22	be
	dw	0	;* CONOUT Redirection Flag	24	c0
	dw	0	;* AUXIN Redirection Flag	26	c2
	dw	0	;* AUXOUT Redirection Flag	28	c4
	dw	0	;* LIST Redirection Flag	2a	c6

	db	0	;* Page Mode			2c	c8
			; If this byte is set to zero, some CP/M 3 utilities
			; and CCP built in commands display one page of data
			; at a time; you display the next page by pressing
			; any key.  If this byte is not set to zero, the system
			; displays data on the screen without stopping.  To
			; stop and start the display, you can press CTRL-S and
			; CTRL-Q respectively.

	db	0	; Default page mode		2d	c9

	db	0	;* ~~				2e	ca
			; Determines if CTRL-H is interpreted as a rub/del
			; character.  If this byte is set to 0, then CTRL-H is
			; a backspace character (moves back and deletes).  If
			; this byte is set to 0ffh, then CTRL-H is a rub/del
			; character, echoes the deleted character.
			; Under ZPM3, the byte has no effect.  It should not
			; be used however as it may be written to by
			; applications.
			
	db	0	;*				2f	cb
			; Determines if rub/del is interpreted as CTRL-H
			; character.  If this byte is set to 0, then rub/del
			; echoes the deleted character.  If this byte is
			; set to 0ffh, then rub/del is interpreted as a
			; CTRL-H character (moves back and deletes).
			; Under ZPM3, the byte has no effect.  It should not
			; be used however as it may be written to by
			; applications.

	db	0	;~ Reserved			30	cc

			; Following two bytes are probably used by CP/M3 utilities
	db	0	; Reserved			31	cd
	db	0	; Reserved			32	ce

	dw	0	;*+ Console Mode		33	cf
			; This is a 16 bit system parameter that determines
			; the action of certain BDOS Console I/O functions.

	dw	bnkbuf	; Address of 128 byte buffer	35	d1

	db	'$'	;*+ Output delimiter character.	37	d3
			; The default output delimiter character is $, but
			; you can change this value by using the BDOS Function
			; 110 Get/Set Output Delimiter.

	db	0	;* List Output Flag		38	d4
			; If this byte is reset to 0, console output is not
			; echoed to the list device.  If this byte is set
			; to 1, console output is echoed to the list device.

	db	0	; Scroll flag				39	d5
			; Following bits set when in system bank and:
			; Bit 7 is set when function 11 is checking the status.
			; Bit 6 is set when function 2 is checking input.
			; Note that raw input (function 6 and function 2 raw)
			;  will not set these bits.
			 
	dw	scb	; Holds the address of the SCB		3a	d6

	dw	0080h	;+ Current DMA Address.			3c	d8
			; This address can be set by BDOS Function 26.  The
			; CCP initializes this value to 0080h.  BDOS Function
			; 13, Reset Disk System also sets the DMA address to
			; 0080h.

	db	0	; Current Disk.				3e	da
			; This byte contains the currently selected default
			; disk number.  This value ranges from 0-15
			; corresponding to drives a-p, respectively.  BDOS
			; Function 24, Return Current Disk, can be used to
			; determine the current disk value.

	dw	0	; BDOS variable 'INFO'			3f	db
			; This word is used by the banked portion of the
			; BDOS.  It is normally an entry parameter.

	db	0	; FCB flag				41	dd
			; If this byte = 0ffh, the word at 03fh is a valid
			; FCB address.

	db	0	; Same drive flag			42	de

	db	0	;+ BDOS function for error		43	df

	db	0	; Current User Number.			44	e0
			; This byte contains the current user number.  This
			; value ranges from 0-15.  BDOS Function 32,
			; Get/Set User Code can change or interrogate
			; the currently active user number.  Under ZPM3 you may
			; change the currently active user number directly
			; by writing to this byte.

	dw	0	;+ Reserved				45	e1
			; Holds the current directory entry number.  Lower
			;  two bits are the search return code.
			
	dw	0	;+ Search FCB address			47	e3
			; Holds the FCB address of the last search for
			;  first/next operation.

	db	0	;+ Search type flag			49	e5
			; 0=? in drive code search.
			; 0fh=normal search.
			
	db	01	;* BDOS Multi-Sector Count.		4a	e6
			; This field is set by BDOS Function 44, Set Multi-
			; Sector Count.

	db	0	;* BDOS Error Mode.			4b	e7
			; This field is set by BDOS Function 45, Set BDOS
			; Error Mode.  If this byte is set to 0ffh, the
			; system returns to the current program without
			; displaying any error messages.


	db	0	;* Drive Search Chain 1			4c	e8
	db	0ffh	;* Drive Search Chain 2			4d	e9
	db	0ffh	;* Drive Search Chain 3			4e	ea
	db	0ffh	;* Drive Search Chain 4			4f	eb

	db	0	;* Temporary File Drive			50	ec

	db	0	; Error Drive.				51	ed
			; This byte contains the drive number of the selected
			; drive when the last physical or extended error
			; occured.

	db	0	; Reserved				52	ee
	db	0	; Reserved				53	ef

	db	0	; Media Flag				54	f0
			; This flag may be set by the BIOS to indicate that
			; a drive door has opened thus signalling the BDOS
			; to relog the drive if required.
	db	0	; Reserved				55	f1
	db	0	; Reserved				56	f2

	db	080h	; BDOS Flags.				57	f3
			; bit 7= expanded error messages
			;     6= single byte allocation vectors
			
	dw	0ffffh	;* Date in days in binary since 1 Jan 78 58	f4
	db	0ffh	;* Hour in BCD				5a	f6
	db	0ffh	;* Minutes in BCD			5b	f7
	db	0ffh	;* Seconds in BCD			5c	f8

COMBASE:
	dw	0	; Common Memory Base address		5d	f9
			; This value is zero for nonbanked systems, and
			; nonzero for banked systems.  Because the base
			; address must reside on a page boundary, the
			; first byte will always be 0.  The second byte
			; is the important one being the common memory
			; base page.

	jp	bnkdos2	; Pointer to second entry in banked DOS	5f	fb
			; This entry handles the displaying of errors to
			; the user

	dw	start	; Top of user TPA			62	fe
			; This word always reflects the top of TPA and
			; should be the same as the word at 0006h unless a
			; transient changes (0006h) without knowing about
			; this word
