home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Shareware Overload
/
ShartewareOverload.cdr
/
progm
/
dpl.zip
/
_DPL.D
< prev
next >
Wrap
Text File
|
1988-07-11
|
3KB
|
105 lines
; Doug's Programming Language -- DPL, Version 2.22
; Copyright (c) 1988 Douglas S. Cody, All rights reserved.
;--------------------------------
; _DPLINIT - INITIALIZATION ROUTINE FOR MAIN DPL PROGRAMS
;
; Entry conditions:
; NONE
; Exit conditions:
; NONE
;
SUBPGM _DPLINIT
;
@@@DPLCOD EQU 0FFH ; THIS EQUATE INDICATES THAT THIS ROUTINE
; ; IS PART OF THE DPL NUCLEOUS
@@@DPLDAT EQU 0FFH ; THIS EQUATE INDICATES THAT THIS ROUTINE
; ; CONTAINS THE EXTERNAL DATA FOR OTHER MODULES
;
PUBLIC STATUS, ZERO, @CR_LF, @@@DPLREC
PUBLIC NULL, EJECT, BEEP
PUBLIC CRTFLAG, VIDPAGE,@DPLVER
;
; DPL SUPPLIED VARIABLES & CONSTANTS
;
VERSION EQU 0220H
;
@DPLVER DW VERSION
CRTFLAG DW 00
VIDPAGE DW 00
;
STATUS DW 00
;
@CR_LF DB 13,10 ; ASCII CR,LF - ^M,^J
;
ZERO LABEL BYTE
NULL DB 00,00
;
EJECT DB 0CH,00 ; ASCII FORM FEED - ^L
;
BEEP DB 07,00 ; ASCII BELL - ^G
;
REC @@@DPLREC,132
;
BEGIN _DPLINIT
PUSH ES ; DO NOT DISTURB THE PSP SEGMENT
;
; TRIM OFF THE EXTRA MEMORY AT THE TOP OF THE PROGRAM...
;
MOV BX,SEG ZSEG ; GET LAST SEGMENT PARAGRAPH
MOV AX,ES ; GET THE PSP SEGMENT
SUB BX,AX
INC BX ; MOVE TO THE NEXT PARAGRAPH
MOV AH,4AH
INT 21H
JNC INIT_05 ; CONTINUE IF NO ERROR...
MOV [STATUS],AX ; SAVE THE ERROR
;
INIT_05:
;
; FETCH THE CURRENT VIDEO MODE FROM THE BIOS
;
MOV AH,0FH
INT 10H ; GET THE CURRENT VIDEO MODE
MOV BYTE PTR [VIDPAGE],BH ; SAVE THE PAGE NUMBER
;
; FETCH THE VIDEO TYPE FROM THE SYSTEM SWITCHES
;
MOV AX,0040H ; GET THE BIOS SEGMENT (AH = 00)
MOV ES,AX
MOV AL,ES:[87H] ; CHECK THE BIOS FOR EGA FIRST
OR AL,AL ; IS AN EGA INSTALLED?
JNZ INIT_15 ; YES, SO GO SET THE FLAG
;
; CHECK FOR MONOCHROME OR CGA CARDS
;
INIT_07:
MOV AL,ES:[10H] ; GET THE VIDEO STATUS BYTE
AND AL,00110000B ; ISOLATE THE VIDEO SWITCHES
CMP AL,110000B ; IS IT A MONO CARD?
JZ INIT_10 ; YES...
;
; MAKE AH = 1, WHICH INDICATES A CGA CARD IS INSTALLED
;
INIT_09:
INC AH ; NO, SETUP FOR A CGA
;
; SAVE THE NEW FLAG & RETURN FROM INITIALIZATION
;
INIT_10:
MOV BYTE PTR [CRTFLAG],AH ; SAVE THE VIDEO FLAG
POP ES
RETURN
;
; AN EGA CARD IS INSTALLED, FIND OUT IF IT EMULATES A MONO OR CGA CARD
;
INIT_15:
TEST AL,08H ; IS THE EGA INACTIVE?
JNZ INIT_07 ; YES, GO CHECK FOR CGA, MONO
MOV AH,02H ; SETUP THE EGA VALUE
TEST AL,01H ; IS A MONO CARD INSTALLED?
JZ INIT_09 ; NO, GO SETUP FOR CGA
JMP SHORT INIT_10 ; YES, SAVE THE FLAG & EXIT
ENDPGM _DPLINIT
;