Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP
Path: utzoo!linus!philabs!seismo!hao!hplabs!sri-unix!RGF@mit-mc
From: RGF%mit-mc@sri-unix.UUCP
Newsgroups: net.micro.cpm
Subject: [RGF: BDOS secrets]
Message-ID: <3655@sri-arpa.UUCP>
Date: Sat, 30-Jul-83 20:50:00 EDT
Article-I.D.: sri-arpa.3655
Posted: Sat Jul 30 20:50:00 1983
Date-Received: Mon, 1-Aug-83 11:51:32 EDT
Lines: 31

From:  Ronald G. Fowler 


Date: 30 July 1983 18:50 EDT
From: Ronald G. Fowler 
To:   ACB.TYM at OFFICE-2
cc:   RGF
Re:   BDOS secrets

1) Those six bytes at the beginning are the CP/M serial number; they 
   have little significance to anything other than the MOVCPM program
   (which disables interrupts and halts if these numbers do not match 
   MOVCPM's internal serial number).  I'm also told that some rather
   rude implementations of CP/M come with utilities that take it upon
   themselves to do this serial number check also.

2) The four vectors are pointers to the following routines (in order):

	a. Permanent error subroutine (ie, BDOS ERROR ON X: BAD
	   SECTOR)
	b. Select error
	c. Disk read/only error
	d. File read/only error

   The BDOS uses these addresses to find the corresponding error-
   handling subroutine; in theory, a transient program could overlay
   this table with pointers to its own routines, and thereby circum-
   vent the unfriendly BDOS error handlers, replacing the routines
   with more human-oriented messages.  In practice, few programs do
   this; it's a risky practice, and not quite as clear-cut as it
   sounds.			--Ron Fowler