Digital Research
This commit is contained in:
2020-11-06 18:50:37 +01:00
parent 621ed8ccaf
commit 31738079c4
8481 changed files with 1888323 additions and 0 deletions

View File

@@ -0,0 +1,157 @@
PL/M-86 COMPILER SDIR 8086 - GET DISK PARAMETERS PAGE 1
ISIS-II PL/M-86 V2.0 COMPILATION OF MODULE DPB86
OBJECT MODULE PLACED IN DPB86
COMPILER INVOKED BY: :F0: DPB86.PLM DEBUG OBJECT(DPB86) OPTIMIZE(3) XREF
$compact
$title ('SDIR 8086 - Get Disk Parameters')
1 dpb86:
do;
/* the purpose of this module is to allow independence */
/* of processor, i.e., 8080 or 8086 */
$include (comlit.lit)
=
2 1 = declare
= lit literally 'literally',
= dcl lit 'declare',
= true lit '0ffh',
= false lit '0',
= boolean lit 'byte',
= forever lit 'while true',
= cr lit '13',
= lf lit '10',
= tab lit '9',
= ctrlc lit '3',
= ff lit '12',
= page$len$offset lit '1ch',
= nopage$mode$offset lit '2Ch',
= sectorlen lit '128';
/* function call 32 in 2.0 or later BDOS, returns the address of the disk
parameter block for the currently selected disk, which consists of:
spt (2 bytes) number of sectors per track
blkshf (1 byte) block size = shl(double(128),blkshf)
blkmsk (1 byte) sector# and blkmsk = block number
extmsk (1 byte) logical/physical extents
blkmax (2 bytes) max alloc number
dirmax (2 bytes) size of directory-1
dirblk (2 bytes) reservation bits for directory
chksiz (2 bytes) size of checksum vector
offset (2 bytes) offset for operating system
*/
$include(dpb.lit)
=
= /* indices into disk parameter block, used as parameters to dpb procedure */
=
3 1 = dcl spt$w lit '0',
= blkshf$b lit '2',
= blkmsk$b lit '3',
= extmsk$b lit '4',
= blkmax$w lit '5',
= dirmax$w lit '7',
= dirblk$w lit '9',
= chksiz lit '11',
= offset$w lit '13';
PL/M-86 COMPILER SDIR 8086 - GET DISK PARAMETERS PAGE 2
=
4 1 declare k$per$block byte public;
5 1 declare dpb$base pointer;
6 1 declare dpb$array based dpb$base (15) byte;
7 1 mon4: procedure (f,a) pointer external;
8 2 dcl f byte, a address;
9 2 end mon4;
10 1 dcl get$dpb lit '31';
11 1 dpb$byte: procedure(param) byte public;
12 2 dcl param byte;
13 2 return(dpb$array(param));
14 2 end dpb$byte;
15 1 dpb$word: procedure(param) address public;
16 2 dcl param byte;
17 2 return(dpb$array(param) + shl(double(dpb$array(param+1)),8));
18 2 end dpb$word;
19 1 base$dpb: procedure public;
20 2 dpb$base = mon4(get$dpb,0);
21 2 k$per$block = shr(dpb$byte(blkmsk$b)+1 ,3);
22 2 end base$dpb;
23 1 end dpb86;
PL/M-86 COMPILER SDIR 8086 - GET DISK PARAMETERS PAGE 3
CROSS-REFERENCE LISTING
-----------------------
DEFN ADDR SIZE NAME, ATTRIBUTES, AND REFERENCES
----- ------ ----- --------------------------------
7 0000H 2 A. . . . . . . . . WORD PARAMETER 8
19 003AH 38 BASEDPB. . . . . . PROCEDURE PUBLIC STACK=0008H
3 BLKMAXW. . . . . . LITERALLY
3 BLKMSKB. . . . . . LITERALLY 21
3 BLKSHFB. . . . . . LITERALLY
2 BOOLEAN. . . . . . LITERALLY
3 CHKSIZ . . . . . . LITERALLY
2 CR . . . . . . . . LITERALLY
2 CTRLC. . . . . . . LITERALLY
2 DCL. . . . . . . . LITERALLY
3 DIRBLKW. . . . . . LITERALLY
3 DIRMAXW. . . . . . LITERALLY
DOUBLE . . . . . . BUILTIN 17
1 0002H DPB86. . . . . . . PROCEDURE STACK=0000H
6 0000H 15 DPBARRAY . . . . . BYTE BASED(DPBBASE) ARRAY(15) 13 17
5 0000H 4 DPBBASE. . . . . . POINTER 6 13 17 20
11 0002H 21 DPBBYTE. . . . . . PROCEDURE BYTE PUBLIC STACK=0004H 21
15 0017H 35 DPBWORD. . . . . . PROCEDURE WORD PUBLIC STACK=0004H
3 EXTMSKB. . . . . . LITERALLY
7 0000H 1 F. . . . . . . . . BYTE PARAMETER 8
2 FALSE. . . . . . . LITERALLY
2 FF . . . . . . . . LITERALLY
2 FOREVER. . . . . . LITERALLY
10 GETDPB . . . . . . LITERALLY 20
4 0004H 1 KPERBLOCK. . . . . BYTE PUBLIC 21
2 LF . . . . . . . . LITERALLY
2 LIT. . . . . . . . LITERALLY 2 3 10
7 0000H MON4 . . . . . . . PROCEDURE POINTER EXTERNAL(0) STACK=0000H 20
2 NOPAGEMODEOFFSET . LITERALLY
3 OFFSETW. . . . . . LITERALLY
2 PAGELENOFFSET. . . LITERALLY
15 0004H 1 PARAM. . . . . . . BYTE PARAMETER AUTOMATIC 16 17
11 0004H 1 PARAM. . . . . . . BYTE PARAMETER AUTOMATIC 12 13
2 SECTORLEN. . . . . LITERALLY
SHL. . . . . . . . BUILTIN 17
SHR. . . . . . . . BUILTIN 21
3 SPTW . . . . . . . LITERALLY
2 TAB. . . . . . . . LITERALLY
2 TRUE . . . . . . . LITERALLY
MODULE INFORMATION:
CODE AREA SIZE = 0060H 96D
CONSTANT AREA SIZE = 0000H 0D
VARIABLE AREA SIZE = 0005H 5D
MAXIMUM STACK SIZE = 0008H 8D
79 LINES READ
PL/M-86 COMPILER SDIR 8086 - GET DISK PARAMETERS PAGE 4
0 PROGRAM ERROR(S)
END OF PL/M-86 COMPILATION