mirror of
https://github.com/SEPPDROID/Digital-Research-Source-Code.git
synced 2025-10-23 08:24:18 +00:00
115 lines
3.7 KiB
Plaintext
115 lines
3.7 KiB
Plaintext
DPB86:
|
|
DO;
|
|
/* THE PURPOSE OF THIS MODULE IS TO ALLOW INDEPENDENCE */
|
|
/* OF PROCESSOR, I.E., 8080 OR 8086 */
|
|
|
|
DECLARE
|
|
/*SPLH*/ /* LIT LITERALLY 'LITERALLY',
|
|
DCL LIT 'DECLARE',
|
|
PROC LIT 'PROCEDURE',
|
|
ADDR LIT 'ADDRESS', */
|
|
TRUE LIT '0FFH',
|
|
FALSE LIT '0',
|
|
/* BOOLEAN LIT 'BYTE', */
|
|
FOREVER LIT 'WHILE TRUE',
|
|
CR LIT '13',
|
|
LF LIT '10',
|
|
TAB LIT '9',
|
|
FF LIT '12',
|
|
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
|
|
*/
|
|
|
|
/* INDICES INTO DISK PARAMETER BLOCK, USED AS PARAMETERS TO DPB PROCEDURE */
|
|
|
|
DCL SPT$W LIT '0',
|
|
BLKSHF$B LIT '2',
|
|
BLKMSK$B LIT '3',
|
|
EXTMSK$B LIT '4', /* 68K*/
|
|
BLKMAX$W LIT /*'5', */ '6',
|
|
DIRMAX$W LIT /*'7', */ '8',
|
|
DIRBLK$W LIT /*'9', */ '10',
|
|
CHKSIZ$W LIT /*'11',*/ '12',
|
|
OFFSET$W LIT /*'13';*/ '14';
|
|
|
|
|
|
DECLARE K$PER$BLOCK BYTE PUBLIC;
|
|
DECLARE DPB$BASE POINTER;/*SPLH*/
|
|
DECLARE DPB$ARRAY (16) BYTE; /*SPLH */
|
|
|
|
MON4: PROCEDURE (F,A) EXTERNAL;
|
|
DCL F BYTE, A ADDRESS;
|
|
END MON4;
|
|
MON5: PROC(F,A) EXT;
|
|
DCL F BYTE,A POINTER;
|
|
END MON5;
|
|
|
|
DCL GET$DPB LIT '31';
|
|
|
|
/* MERGE SYS:3.CHRSYN.STATSUB1.SA = [SOURCE.CPM86.CPM11.STAT]CON86.PLM*/
|
|
|
|
/* $COMPACT */
|
|
/* $TITLE ('CONSOLE 8086 - GET CONSOLE WIDTH') */
|
|
/* THE PURPOSE OF THIS MODULE IS TO ALLOW INDEPENDENCE */
|
|
/* OF PROCESSOR, I.E., 8080 OR 8086 */
|
|
/* IT WILL RETURN A WORD VALUE EQUAL TO THE CONSOLE WIDTH FROM
|
|
THE SYSTEM DATA PAGE. */
|
|
|
|
|
|
GET$SYSDAT:
|
|
PROCEDURE POINTER;
|
|
RETURN /* (MON4(49,0)); */ 10; /*SPLH*/
|
|
END GET$SYSDAT;
|
|
|
|
|
|
DECLARE CONWIDTH$POINTER POINTER;
|
|
DECLARE CONWIDTH$PTR STRUCTURE (
|
|
OFFSET WORD,
|
|
SEGMENT WORD) AT (@CONWIDTH$POINTER);
|
|
DECLARE WIDTH BASED CONWIDTH$POINTER BYTE;
|
|
DECLARE CONWIDTH$OFFSET LIT '0040H';
|
|
|
|
|
|
COLUMNS: PROCEDURE BYTE PUBLIC;
|
|
|
|
/* CONWIDTH$POINTER = GET$SYSDAT;
|
|
CONWIDTH$PTR.OFFSET = CONWIDTH$PTR.OFFSET + CONWIDTH$OFFSET;
|
|
IF WIDTH = 0 THEN
|
|
RETURN 80;
|
|
RETURN WIDTH; */ RETURN 80 ; /*SPLH*/
|
|
END COLUMNS;
|
|
|
|
|
|
/* MERGE END */
|
|
|
|
|
|
|
|
DPB$BYTE: PROCEDURE(PARAM) BYTE PUBLIC;
|
|
DCL PARAM BYTE;
|
|
RETURN(DPB$ARRAY(PARAM)); /* S-PL/H */
|
|
END DPB$BYTE;
|
|
|
|
DPB$WORD: PROCEDURE(PARAM) ADDRESS PUBLIC; /* S-PL/H */
|
|
DCL PARAM BYTE;
|
|
RETURN(DPB$ARRAY(PARAM+1) + SHL(DOUBLE(DPB$ARRAY(PARAM)),8));
|
|
END DPB$WORD;
|
|
|
|
BASE$DPB: PROCEDURE PUBLIC; /* S-PL/H */
|
|
/* 68K*/ DPB$BASE=@DPB$ARRAY;
|
|
/* DPB$BASE = MON4(GET$DPB,0); */ CALL MON5(GET$DPB,DPB$BASE);
|
|
K$PER$BLOCK = SHR(DPB$BYTE(BLKMSK$B)+1 ,3);
|
|
END BASE$DPB;
|
|
|
|
END DPB86;
|