home *** CD-ROM | disk | FTP | other *** search
/ Shareware Overload / ShartewareOverload.cdr / progm / dpl.zip / _DPL.D < prev    next >
Text File  |  1988-07-11  |  3KB  |  105 lines

  1. ; Doug's Programming Language  -- DPL, Version 2.22
  2. ; Copyright (c) 1988 Douglas S. Cody, All rights reserved.
  3. ;--------------------------------
  4. ; _DPLINIT  -  INITIALIZATION ROUTINE FOR MAIN DPL PROGRAMS
  5. ;
  6. ; Entry conditions:
  7. ;    NONE
  8. ; Exit conditions:
  9. ;    NONE
  10. ;
  11. SUBPGM    _DPLINIT
  12. ;
  13. @@@DPLCOD    EQU    0FFH    ; THIS EQUATE INDICATES THAT THIS ROUTINE
  14. ;                ; IS PART OF THE DPL NUCLEOUS
  15. @@@DPLDAT    EQU    0FFH    ; THIS EQUATE INDICATES THAT THIS ROUTINE
  16. ;                ; CONTAINS THE EXTERNAL DATA FOR OTHER MODULES
  17. ;
  18.     PUBLIC    STATUS,  ZERO,   @CR_LF, @@@DPLREC
  19.     PUBLIC    NULL,    EJECT,  BEEP
  20.     PUBLIC    CRTFLAG, VIDPAGE,@DPLVER
  21. ;
  22. ; DPL SUPPLIED VARIABLES & CONSTANTS
  23. ;
  24. VERSION        EQU    0220H
  25. ;
  26. @DPLVER DW    VERSION
  27. CRTFLAG    DW    00
  28. VIDPAGE DW    00
  29. ;
  30. STATUS    DW    00
  31. ;
  32. @CR_LF    DB    13,10        ; ASCII CR,LF - ^M,^J
  33. ;
  34. ZERO    LABEL    BYTE
  35. NULL    DB    00,00
  36. ;
  37. EJECT    DB    0CH,00        ; ASCII FORM FEED - ^L
  38. ;
  39. BEEP    DB    07,00        ; ASCII BELL - ^G
  40. ;
  41. REC    @@@DPLREC,132
  42. ;
  43. BEGIN    _DPLINIT
  44.     PUSH    ES        ; DO NOT DISTURB THE PSP SEGMENT
  45. ;
  46. ; TRIM OFF THE EXTRA MEMORY AT THE TOP OF THE PROGRAM...
  47. ;
  48.     MOV    BX,SEG ZSEG    ; GET LAST SEGMENT PARAGRAPH
  49.     MOV    AX,ES        ; GET THE PSP SEGMENT
  50.     SUB    BX,AX
  51.     INC    BX        ; MOVE TO THE NEXT PARAGRAPH
  52.     MOV    AH,4AH
  53.     INT    21H
  54.     JNC    INIT_05        ; CONTINUE IF NO ERROR...
  55.     MOV    [STATUS],AX    ; SAVE THE ERROR
  56. ;
  57. INIT_05:
  58. ;
  59. ; FETCH THE CURRENT VIDEO MODE FROM THE BIOS
  60. ;
  61.     MOV    AH,0FH
  62.     INT    10H            ; GET THE CURRENT VIDEO MODE
  63.     MOV    BYTE PTR [VIDPAGE],BH    ; SAVE THE PAGE NUMBER
  64. ;
  65. ; FETCH THE VIDEO TYPE FROM THE SYSTEM SWITCHES
  66. ;
  67.     MOV    AX,0040H        ; GET THE BIOS SEGMENT (AH = 00)
  68.     MOV    ES,AX
  69.     MOV    AL,ES:[87H]        ; CHECK THE BIOS FOR EGA FIRST
  70.     OR    AL,AL            ; IS AN EGA INSTALLED?
  71.     JNZ    INIT_15            ; YES, SO GO SET THE FLAG
  72. ;
  73. ; CHECK FOR MONOCHROME OR CGA CARDS
  74. ;
  75. INIT_07:
  76.     MOV    AL,ES:[10H]        ; GET THE VIDEO STATUS BYTE
  77.     AND    AL,00110000B        ; ISOLATE THE VIDEO SWITCHES
  78.     CMP    AL,110000B        ; IS IT A MONO CARD?
  79.     JZ    INIT_10            ; YES...
  80. ;
  81. ; MAKE AH = 1, WHICH INDICATES A CGA CARD IS INSTALLED
  82. ;
  83. INIT_09:
  84.     INC    AH            ; NO, SETUP FOR A CGA
  85. ;
  86. ; SAVE THE NEW FLAG & RETURN FROM INITIALIZATION
  87. ;
  88. INIT_10:
  89.     MOV    BYTE PTR [CRTFLAG],AH    ; SAVE THE VIDEO FLAG
  90.     POP    ES
  91.     RETURN
  92. ;
  93. ; AN EGA CARD IS INSTALLED, FIND OUT IF IT EMULATES A MONO OR CGA CARD
  94. ;
  95. INIT_15:
  96.     TEST    AL,08H            ; IS THE EGA INACTIVE?
  97.     JNZ    INIT_07            ; YES, GO CHECK FOR CGA, MONO
  98.     MOV    AH,02H            ; SETUP THE EGA VALUE
  99.     TEST    AL,01H            ; IS A MONO CARD INSTALLED?
  100.     JZ    INIT_09            ; NO, GO SETUP FOR CGA
  101.     JMP    SHORT INIT_10        ; YES, SAVE THE FLAG & EXIT
  102.  
  103. ENDPGM    _DPLINIT
  104. ;
  105.