mirror of
https://github.com/SEPPDROID/Digital-Research-Source-Code.git
synced 2025-10-25 09:24:19 +00:00
158 lines
7.1 KiB
Plaintext
158 lines
7.1 KiB
Plaintext
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
|