Hello, Fix for DTR!

 BBS: Inland Empire Archive
Date: 05-02-92 (13:47)             Number: 62
From: TOM HAMMOND                  Refer#: NONE
  To: SCOTT WUNSCH                  Recvd: NO  
Subj: Hello, Fix for DTR!            Conf: (2) Quik_Bas
SW>I think most of us probably have that already.  What I need is
SW>one (a dtr PATCH) for PDS!

No sooner done than said... compliments of Donn Bly a couple months ago.

Hope this helps Scott.

Tom Hammond     N0SS

======================================================================
 BBS: The Wildcat Modem Zone BBS
Date: 02-18-92 (06:13)                Number: 6292
From: DONN BLY                        Refer#: NONE
  To: JOHN SNEERINGER                  Recvd: NO

Subj: PDS 7.1 DTR PATCH                 Conf: (13) QuickBasic
 > I asked a while ago if anyone had a PDS DTR patch, I
 > guess either no one has ever attempted communications
 > with PDS, no one owns PDS, or perhaps no one cares (g).
 > Probably the latter, but anyway, if anyone knows of a
 > way to patch the DTR problem in PDS, let me know.

  .
  .
  .

I have a DTR patch for 7.0, but the critical information should be the
same for 7.1 (if it doesn't work for you, let me know (preferably via
NetMail since I usually don't frequent this echo) and I will track it
down for you).  As you know, to increase the efficiency of the
compiled code, several different libraries are used, and the patch
should be applied to all of the following:

     BCL7xAFR.LIB, BCL7xANR.LIB, BCL7xEFR.LIB, BCL7xENR.LIB.

Search for the sequence of:   B8 07 0C CD 21
      and patch it to read:   B8 07 0C 90 90
                                       ^^ ^^
Basically, you are just NOPing out the interrupt 21 call.

 > I can get past this problem *IF* anyone out there has a
 > piece of code that will LOCK the DTR up.  I noticed that
 > QBser 2.0 has some function called DTRcontrol x which is
 > supposed to do just that.  I don't want to use QBser, but
 > I'd sure give my left nut for the source.

The CLOSE statement _without_ the DTR patch will still lower DTR.
However, if all you are trying to do is control DTR without doing
serial I/O, you can accomplish your task by talking directly to the
Modem Control Register (MCR) on the UART chip.  The MCR is located at
an offset of 4 off to the base address, and DTR is the lowest-order
bit in that register.  The following code segment should get you
pointed in the right direction.

CONST MCR = 4
BaseAddress% = &H3f8

'To RAISE DTR without disturbing the other flags in the register
OUT BaseAddress% + MCR, INP(BaseAddress% + MCR) OR 1

'To LOWER DTR without disturbing the other flags in the register
OUT BaseAddress% + MCR, INP(BaseAddress% + MCR) AND &Hfe

Good luck with your project,
Donn Bly


--- WM v2.00/91-0231
 * Origin: The Modem Zone BBS (314) 893-5106 (1:289/2)
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