mirror of
https://github.com/SEPPDROID/Digital-Research-Source-Code.git
synced 2025-10-23 00:14:25 +00:00
110 lines
4.5 KiB
Plaintext
110 lines
4.5 KiB
Plaintext
CP/M V2.2
|
|
Application Note 04, 2/20/82
|
|
BIOS Error Return Code Options
|
|
|
|
Copyright 1982 by Digital Research
|
|
CP/M is a registered trademark of Digital Trademark.
|
|
DDT and SID are trademarks of Digital Research.
|
|
Compiled November 1982
|
|
|
|
|
|
|
|
Applicable products and version numbers: CP/M V2.2
|
|
|
|
Program: BIOS
|
|
|
|
Usually, CP/M responds only to a zero or nonzero value as the
|
|
return code from the BIOS READ and WRITE entry points. If the value
|
|
in register A is zero, CP/M assumes that the disk operation was
|
|
completed successfully. If a nonzero value is in register A, the
|
|
BDOS returns the message BDOS ERR ON x: BAD SECTOR. You then have
|
|
the option of pressing the RETURN key to ignore the error, or CTRL-C
|
|
to abort.
|
|
|
|
This modification interjects three additional return codes for
|
|
the BIOS READ and WRITE routines in register A as shown below.
|
|
|
|
|
|
0 The disk Read or Write operation was successful.
|
|
1 Bad Sector--indicates permanent disk error.
|
|
2 Select Error--indicates the drive is not ready.
|
|
3 R/O--the disk is Read-Only (used by WRITE).
|
|
4 File R/O--not normally used.
|
|
|
|
|
|
In the following code segment, addresses given are hexadecimal
|
|
offsets from the base of the CP/M system. The CCP is usually located
|
|
at 980H, but can be located at A00H if you use a two-sector boot.
|
|
|
|
After modifying your BIOS READ and WRITE routines to pass the
|
|
extended error codes to the BDOS, you can assemble the BDOS patch for
|
|
your size memory system. The cpmbase equals the BDOS entry point
|
|
address at locations 6 and 7 in the base page of memory minus 806H.
|
|
You must change this entry point address when you load DDT or
|
|
SID . Under DDT or SID, follow the jump at location 5 until you
|
|
find an address with a least significant digit of 6. In the
|
|
following example, the cpmbase would be E506H-806H or DD00H.
|
|
|
|
|
|
0005 JMP CD00
|
|
CD00 JMP D3A4
|
|
D3A4 XTHL
|
|
D3A5 SHLD E452
|
|
D3A8 XTHL
|
|
D3A9 JMP E506
|
|
1
|
|
CP/M V2.2 Application Note 04
|
|
|
|
|
|
Patch into the SYSGEN or MOVCPM image exactly as you would patch
|
|
in a new version of your BIOS, using the DDT i command followed by
|
|
the DDT r command. Use the same offset as your custom BIOS.
|
|
|
|
Before installing this patch, the code at the cpmbase + BBDh
|
|
should read:
|
|
|
|
lxi h,cpmbase +809H
|
|
jmp cpmbase + B4AH
|
|
|
|
Replace the preceding code with the following code:
|
|
|
|
cpmbase equ ?
|
|
;
|
|
;
|
|
org cpmbase + BBDH
|
|
;
|
|
lxi h,cpmbase + 807H
|
|
jmp cpmbase + 83AH
|
|
end
|
|
|
|
Or, you can install this change directly into MOVCPM, if
|
|
MOVCPM.COM is on your system disk. The patch is installed in any
|
|
size system that you build using MOVCPM. Make a back-up copy of
|
|
MOVCPM.COM before using DDT to install the following procedure:
|
|
|
|
A>ddt movcpm.com
|
|
DDT VERS 2.2
|
|
NEXT PC
|
|
2700 0100
|
|
-l15bd
|
|
15BD LXI H,0809
|
|
15C0 JMP 0B4A
|
|
15C3 LHLD 15EA
|
|
. . .
|
|
|
|
-a15bd
|
|
15BD lxi h,807
|
|
15C0 jmp 83a
|
|
15C3 .
|
|
-g0
|
|
|
|
A>save 38 movcpm1.com
|
|
|
|
|
|
Use the new program MOVCPM1.COM in place of MOVCPM.COM.
|
|
Additional error return codes for the BIOS READ and WRITE routines
|
|
are supported in any CP/M system generated with MOVCPM1.COM.
|
|
|
|
Licensed users are granted the right to include these
|
|
modifications in CP/M V2.2 software.
|