Dynamic Library

 BBS: Inland Empire Archive
Date: 06-15-92 (07:18)             Number: 560
From: QUINN TYLER JACKSON          Refer#: NONE
  To: ALL                           Recvd: NO  
Subj: Dynamic Library                Conf: (2) Quik_Bas
Hello.  Enough people have responded to my library request, so I have
started writing it with full documentation in the source.  Here is a
sample to get you started....


Quinn

##
___CUT HERE---

DECLARE SUB DosPrint (Text AS STRING)
DECLARE FUNCTION DosVersion! ()
DECLARE FUNCTION DesqView% ()

'$INCLUDE: 'QB.BI'
DEFINT A-Z

' Set up the IN and OUT registers
DIM SHARED InRegs AS RegTypeX
DIM SHARED OutRegs AS RegTypeX

' Declare constants
CONST TRUE = -1
CONST FALSE = NOT TRUE

CLS
DosPrint "Quinn\nTyler\nJackson\n"

'*****************************BiosScroll*********************************
'*             This BIOS call scrolls a portion of the screen.          *
'* If mode is equal to -1, it scrolls up, otherwise, it scrolls down.   *
'*  The color attribute of the area left by the scroll is put into BX.  *
'************************************************************************
SUB BiosScroll (mode, UpLeftRow, UpLeftCol, LowRightRow, LowRightCol)

IF mode THEN service = &H7 ELSE service = &H6

InRegs.ax = 256 * service + 1
InRegs.cx = 256 * UpLeftRow + UpLeftCol
InRegs.dx = 256 * LowRightRow + LowRightCol
InRegs.bx = 7

CALL INTERRUPTX(&H10, InRegs, OutRegs)

END SUB

'******************************DesqView*********************************
'*   This function returns TRUE if the program is running under the    *
'*          DESQview environment, otherwise it returns FALSE.          *
'***********************************************************************
FUNCTION DesqView
     InRegs.ax = &H2B01
     InRegs.cx = &H4445
     InRegs.dx = &H5351
     CALL INTERRUPTX(&H21, InRegs, OutRegs)
     IF OutRegs.ax MOD 256 <> &HFF THEN
        inDV = TRUE
        ELSE inDV = FALSE
     END IF
DesqView = inDV
END FUNCTION

'********************************DosPrint*******************************
'*   This SUB prints a string to the screen using a DOS service call,  *
'*     which might be desirable under certain environments such as     *
'*  DESQview.  Note that the string printed must NOT contain a dollar  *
'*    sign, or the whole string will not be processed by the call.     *
'*  Strings containing the sequence "\n" will be processed with a      *
'*                carrage return/line feed sequence.                   *
'***********************************************************************
SUB DosPrint (Text AS STRING)


' Preprocess string for any imbedded "\n" macros
IF INSTR(Text, "\n") = 0 THEN GOTO BiosPrint2:          ' jump if no "\n"
BiosPrint1:
        Ptr = INSTR(Text, "\n")                         ' locate "\n"
        MID$(Text$, Ptr, 2) = CHR$(13) + CHR$(10)       ' replace with CRLF
IF INSTR(Text, "\n") THEN GOTO BiosPrint1:              ' process next "\n"

BiosPrint2:
Text = Text + "$"               ' Terminate with the end of string flag

 InRegs.ds = VARSEG(Text)       ' Load DS:DX with
 InRegs.dx = SADD(Text)         ' address of Text
 InRegs.ax = &H900

CALL INTERRUPTX(&H21, InRegs, InRegs)

END SUB

FUNCTION DosVersion!

InRegs.ax = &H3000
CALL INTERRUPTX(&H21, InRegs, OutRegs)
MajorVersion = OutRegs.ax MOD 256
MinorVersion = OutRegs.ax \ 256
DosVersion! = MajorVersion + MinorVersion / 10

END FUNCTION


 * SLMR 2.1a * In a world of idiots, may you be cursed with wisdom.

--- Maximus/2 2.01wb
 * Origin: The Nibble's Roost, Richmond BC Canada 604-244-8009 (1:153/918)
Outer Court
Echo Basic Postings

Books at Amazon:

Back to BASIC: The History, Corruption, and Future of the Language

Hackers: Heroes of the Computer Revolution (including Tiny BASIC)

Go to: The Story of the Math Majors, Bridge Players, Engineers, Chess Wizards, Scientists and Iconoclasts who were the Hero Programmers of the Software Revolution

The Advent of the Algorithm: The Idea that Rules the World

Moths in the Machine: The Power and Perils of Programming

Mastering Visual Basic .NET