home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / PASCAL / STAYRESP.ZIP / STAYI8.410 < prev    next >
Encoding:
Text File  |  1986-05-11  |  3.2 KB  |  52 lines

  1. Inline(
  2.                               {; STAYI8.400}
  3.                               {;-----------}
  4.                               {; Routine to Await Outstanding I/O, then post Stayres Active}
  5.   $5D                         {         Pop   Bp                      ; Remove Turbo Prologue}
  6.   /$5D                        {         Pop   Bp}
  7.   /$9C                        {         Pushf}
  8.   /$2E                        {         CS:}
  9.   /$FF/$1E/>BIOS_INT8         {         Call dw [>BIOS_INT8]          ; Invoke Original INT 8}
  10.   /$2E                        {         CS:}
  11.   /$F6/$06/>STATUS/<HOTKEY_ON {         Test by [<Status],<HotKey_on  ; Have we received the HOKEY}
  12.   /$74/$38                    {         Jz    NoGo}
  13.   /$2E                        {         CS:}
  14.   /$F6/$06/>STATUS/<INUSE     {         Test by [<Status],<Inuse      ; If Inuse.. then No go}
  15.   /$75/$30                    {         Jnz   NoGo}
  16.   /$2E                        {         CS:                           ; Have the HotKey}
  17.   /$80/$3E/>WAITCOUNT/$00     {         Cmp by [<WaitCount],00        ; If waiting, check time}
  18.   /$75/$21                    {         Jnz   Waiting}
  19.                               {; If Not already waiting I/O, not already in use, and HotKey received}
  20.                               {; see if DOS is now interruptable}
  21.                               {ChkIO:}
  22.   /$06                        {         Push  ES                      ; Save registers}
  23.   /$56                        {         Push  Si}
  24.   /$50                        {         Push  Ax}
  25.   /$2E                        {         CS:}
  26.   /$C4/$36/>DOSSTAT1          {         LES   Si,[>DOSstat1]          ; Fetch Dos status 1}
  27.   /$AC                        {         Lodsb                         ; Fetch Status byte from dos}
  28.   /$2E                        {         CS:}
  29.   /$C4/$36/>DOSSTAT2          {         LES   SI,[>DOSstat2]          ; Add second status byte}
  30.   /$26                        {         ES:}
  31.   /$02/$04                    {         Add   Al,[SI]}
  32.   /$2E                        {         CS:}
  33.   /$0A/$06/>INTR_FLAGS        {         Or    Al,[<Intr_Flags]        ; Add Interrupt active flags}
  34.   /$58                        {         Pop   Ax}
  35.   /$5E                        {         Pop   Si}
  36.   /$07                        {         Pop   ES}
  37.   /$74/$0E                    {         Jz    Go                      ; Wait for inactivity}
  38.   /$2E                        {         CS:}
  39.   /$C6/$06/>WAITCOUNT/$10     {         Mov by [<WaitCount],$10       ; Set Wait count}
  40.                               {Waiting:}
  41.   /$2E                        {         CS:}
  42.   /$FE/$0E/>WAITCOUNT         {         Dec by [<WaitCount]           ; Decrement wait count}
  43.   /$74/$D8                    {         Jz   ChkIO}
  44.                               {NoGo:}
  45.   /$CF                        {         IRET}
  46.                               {GO:   ; Enter the User's Turbo Procedure}
  47.   /$2E                        {         CS:}
  48.   /$FF/$16/>USERPROGRAM       {         Call [<UserProgram]}
  49.   /$CF                        {         IRET}
  50.                               {;.......................................................................}
  51. );
  52.