home *** CD-ROM | disk | FTP | other *** search
/ CD Actual 13 / CDA13.ISO / cdactual / demobin / share / program / Asm / 86LIB3.ZIP / LIBRARY.DOC < prev    next >
Encoding:
Text File  |  1989-01-14  |  52.6 KB  |  1,540 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.                          LORITEC Software Presents
  10.  
  11.                              A86-LIBRARY  V2.0
  12.  
  13.                            A library of routines
  14.  
  15.                        For ISAACSON's assembler A86
  16.  
  17.                           Written in assembler by
  18.  
  19.                              Ollivier CIVIOL
  20.                              415 South BROAD
  21.                              Phila, PA.19147
  22.                              (215)  732-7653
  23.                                [72727,3213]
  24.  
  25.  
  26.  
  27.  
  28.  
  29.  
  30.  
  31.                            TABLE OF CONTENTS
  32.                            -----------------
  33.  
  34.  
  35.  
  36.  
  37.  
  38.         Introduction  .......................................... I
  39.             Description  ....................................... I
  40.             Registration ....................................... II
  41.             Legal stuff  ....................................... III
  42.             order form   ....................................... IV
  43.         Chapter one   .......................................... 1
  44.             How to use the routines  ........................... 1
  45.             A86LIB    .......................................... 3
  46.             Error codes  ....................................... 4-5
  47.             Compatibility  .....................................
  48.             Parameters   .......................................
  49.  
  50.  
  51.  
  52.  
  53.                                                                      I
  54.                              INTRODUCTION
  55.                              ------------
  56.  
  57.  
  58.  
  59.  
  60.  
  61.           A86 Library is a library of routines written to work with
  62.     A86.COM, Eric ISAACSON's macro assembler (The best on the market).
  63.  
  64.           If you do not have A86, first, you should get it, second,
  65.     you will not be able to use this library with another assembler,
  66.     without making some changes, because the library uses special
  67.     features of A86's language, that do not exist with other assemblers.
  68.  
  69.           The library was written to work in the .COM environment.
  70.     To use the routines in the .EXE environment, you will have to
  71.     reset the DS register to your data  segment, because when exiting,
  72.     most of the routines set DS=CS.
  73.     Make sure you define a big enough stack, (I would suggest at least
  74.     2 Kbyte of stack) because the routines are using the stack a lot.
  75.  
  76.           I tried to preserve the routines from using unnecessary memory
  77.     variables, 2 bytes here, 2 bytes there and we got a program that does
  78.     quite nothing and already is 25K.
  79.     This is the reason why the routines uses the STACK a lot.
  80.     The only memory variables I uses are 2 bytes, under the form: _saverxx
  81.     Witch I use to save and retrieve the return address within the program.
  82.  
  83.           Some routines do not even use that, because they are safe enough
  84.     to keep the return address in a register.
  85.  
  86.     Make sure that you save any register you want to preserve before calling
  87.     the routine.  All the routines assume that registers are saved, and do
  88.     not save any registers.
  89.  
  90.  
  91.  
  92.                    You can get A86 by sending $50.00 to
  93.  
  94.                               Eric ISAACSON
  95.                           416 E. University Ave.
  96.                         Bloomington, IN 47401-4739
  97.  
  98.                       Make checks payable to himself.
  99.  
  100.                  A86 is a trademark ISAACSON software (R)
  101.  
  102.                                                                      II
  103.  
  104.  
  105.                             REGISTRATION
  106.                             ------------
  107.  
  108.  
  109.  
  110.  
  111.           The Shareware version you just got is not the same than
  112.     the registered version.  Registered users gets the routines
  113.     That are marked in the description with an '*', and also
  114.     the file A86.LIB which allow A86 to directly assemble the code
  115.     of the routine whenever it finds an undefined symbol.
  116.     With the Shareware version you will have to copy the
  117.     code of the routine within your program.
  118.  
  119.           This is a user supported product. I tried to write this
  120.     documentation so that there would not be a need of support at
  121.     all, but I am still giving my phone number in case bugs are found
  122.     or something remains unexplained in this doc.
  123.  
  124.     PLEASE PLEASE remember that I am on the EAST coast, so make sure
  125.     that it is not 2:00 AM when you call me !
  126.  
  127.           Non registered users will get limited support, I don't think
  128.     I have to tell you why.  (isn't it obvious ?).
  129.  
  130.     The registration fee is $25.00.  And include :
  131.  
  132.      - The latest version of the library.
  133.      - A printed manual.
  134.      - One upgrade.(When receiving it, you will have to send me $5.00
  135.                     to receive the next one and so on.)
  136.  
  137.  
  138.           Please fill the registration form out and send it to me with you
  139.     registration fee, make checks or money order payable to myself.
  140.     Thank you for your support !!!.
  141.  
  142.                                                                      III
  143.                                LEGAL STUFF
  144.                                -----------
  145.  
  146.  
  147.  
  148.  
  149.  
  150.           This library of routines is copyright LORITEC software, 1988.
  151.     You can distribute it, only if it is kept in it's original form.
  152.     No changes has to be made to the routines, all files must be present
  153.     in the arc file, NO FEE of any kind should be charged for the
  154.     distribution of this package.
  155.           Professional distribution may be allowed to distributors,
  156.     an authorization letter must be obtained from me .
  157.  
  158.           There is no warranty of any kind associated with this software, and
  159.     the copyright owner is not liable for damages of any kind.
  160.  
  161.           This is not a free software.  This license allows you to use this
  162.     software for a period of 30 days, if you intend of using this product
  163.     you should then register.  In order to include this software as part
  164.     of any product, either commercial, Shareware, Freeware or public domain,
  165.     registration is required.
  166.           This library may not be included in any product for any use without
  167.     registration.  Any such use of my product is in violation of federal
  168.     copyright laws and will be prosecuted.
  169.  
  170.  
  171.  
  172.                                                                      IV
  173.  
  174.  
  175.  
  176.  
  177.  
  178.  
  179.                             REGISTRATION FORM
  180.                             -----------------
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.       Quantity ...............................................      ...
  189.  
  190.       Registration to A86LIBRARY .............................     $25.00
  191.  
  192.       Upgrades ......($5.00 each, one included)...............      .....
  193.  
  194.       TOTAL ..................................................     ......
  195.  
  196.  
  197.  
  198.       NAME (First,Last):................./....................
  199.  
  200.       ADDRESS:  ..............................................
  201.  
  202.                 ..............................................
  203.      CITY,
  204.      STATE,ZIP: ........................./........../.........
  205.  
  206.  
  207.  
  208.  
  209.  
  210.  
  211.  
  212.     CHAPTER 1                                                        1
  213.  
  214.  
  215.                           HOW TO USE THE ROUTINES
  216.                           -----------------------
  217.  
  218.           For register users, there is nothing as simple as that.
  219.     First make sure the environment variable A86LIB is set to the
  220.     path where the files A86.LIB and the routines are.(SET A86LIB=C:\routin)
  221.  
  222.           Then write your code and when you want to use the routines, just
  223.     push the required parameters on the stack and call the routine. When A86
  224.     will see the undefined symbol, it will look in the file A86.LIB to see
  225.     In what file the symbol is located, and assemble the code.
  226.  
  227.     IMPORTANT:
  228.      All symbols in the routines start with the char '_', including the label
  229.      you are going to call (see example).
  230.  
  231.      WHEN using a routine that requires the parameter  [rowcol].
  232.      MAKE sure you load the register bytes per bytes.
  233.      EXAMPLE: if row 10 an col 9 is to be passed, code it this way :
  234.  
  235.         mov ah,10
  236.         mov al,09
  237.         push ax
  238.                      ------------------------------
  239.  
  240.           Non register users, will have to cut the routine, and paste it to
  241.      your code, for A86 to assemble it.  It will take longer, that is why
  242.      you should register !!
  243.  
  244.      EXAMPLE:
  245.  
  246.         jmp main
  247.         ;
  248.         buffer  db  'see how easy it is !'
  249.         ;
  250.         main:
  251.           call _clear          ;clear the screen
  252.         ;
  253.           mov ax,02            ;attribute for normal display
  254.           push ax
  255.           mov ax,0909          ;row 10, column 10
  256.           push ax
  257.           push cs              ;data segment (IN .COM environment DS=CS)
  258.           mov ax,offset buffer ;offset of buffer to print
  259.           push ax
  260.           mov ax,20            ;20 chars to print
  261.           push ax
  262.           call _text_wrt       ;print the buffer at row 10 col 10.
  263.         ;
  264.           mov ax,0             ;code for get character
  265.           push ax
  266.           call _get_char
  267.           pop ax               ;get the character
  268.           cmp al,27            ;<ESC> key
  269.           if z call _exit      ;yes exit
  270.           jmp main
  271.  
  272.  
  273.                                                                      2
  274.  
  275.  
  276.         When you are passing a string to a routine that uses DOS calls
  277.     (most of them) make sure to terminate the string with a ZERO.
  278.     (terminate with a value of zero not the character !!!)
  279.  
  280.         EXAMPLE:
  281.  
  282.                  filename   db   'a:command.com',0
  283.  
  284.         If you forget the zero DOS will return with an error code
  285.         which will not be MISSING ZERO IN STRING since there is not
  286.         such error code, but with FILE NOT FOUND or any other nonsense
  287.         error code, since the filename specified would be correct !
  288.  
  289.  
  290.  
  291.  
  292.  
  293.  
  294.  
  295.  
  296.  
  297.  
  298.  
  299.  
  300.  
  301.  
  302.                                                                      3
  303.  
  304.  
  305.  
  306.  
  307.  
  308.  
  309.                                A86LIB
  310.                                ------
  311.  
  312.  
  313.  
  314.  
  315.  
  316.  
  317.  
  318.           A86LIB is a tool for registered users of A86.  It is given to
  319.     you by Eric ISAACSON whenever you register to A86.
  320.  
  321.           When A86 finds an undefined symbol, it looks in a file called
  322.     A86.LIB for the symbol, if it finds it, assemble the code in the
  323.     program. A86.LIB is created by A86LIB.
  324.  
  325.           If you are not a register user of A86, I provide the file
  326.     A86.LIB along with the complete library when you register.
  327.     I DO NOT PROVIDE YOU WITH THE LIBRARY MANAGER BUT WITH THE CREATED
  328.     LIBRARY FILE.
  329.  
  330.           If you already have some routines, you would like to keep
  331.     you will then have to get the library manager by registering to
  332.     A86 an create a library with all of them.
  333.  
  334.           Anyway if you are using a Shareware software for more than
  335.     30 days, you should register.  It is only fair to the author.
  336.     It is because we trust you that Shareware is possible, so if you do
  337.     not support us Shareware will die and you will certainly have to
  338.     pay more than 25 or 30 dollars for a software that might not even
  339.     be as good as what we would write, so don't let us down, please ...
  340.  
  341.  
  342.  
  343.  
  344.  
  345.  
  346.  
  347.  
  348.  
  349.  
  350.  
  351.  
  352.                                                                      4
  353.  
  354.                              ERROR CODES
  355.                              -----------
  356.  
  357.  
  358.         I also include an error code handling routine. Functions that
  359.     Returns error codes will not call this routine directly.  I did not
  360.     Write them that way, because I thought that you might want to write
  361.     your own routine.
  362.  
  363.         Anyway if you want my routine to handle, check for the error codes
  364.     in your code.
  365.         EXAMPLE for beginners:
  366.  
  367.         let say you called the routine _open to open a file that doesn't
  368.     exist.
  369.         after the routine returns you should check the carry flag
  370.  
  371.         .....
  372.         jnc continue
  373.       * pop ax        ;* depends of the routine, sometimes it will not
  374.                       ;  push the error code on the stack. Check the doc.
  375.         cmp ax,...    ;if you don't want to handle a specific error.
  376.         jz continue
  377.         push ax
  378.         call _error
  379.       continue:
  380.         ....
  381.  
  382.                      DO I MAKE MYSELF CLEAR ?????
  383.  
  384.  
  385.     If you do not like the attribute I am using in the routine (reverse video)
  386.     you can change it, I inserted a BIG comment line telling what and where
  387.     to change it.
  388.  
  389.  
  390.        1......Invalid Function Number
  391.        2......File Not Found
  392.        3......Path Not Found
  393.        4......Too Many Open Files (no handles left)
  394.        5......Access Denied
  395.        6......Invalid Handle
  396.        7......Memory Control Blocks Destroyed
  397.        8......Insufficient Memory
  398.        9......Invalid Memory Block Address
  399.        A......Invalid Environment
  400.        B......Invalid Format
  401.        C......Invalid Access Code
  402.        D......Invalid Data
  403.        E......Unknown unit
  404.        F......Invalid Drive Was Specified
  405.  
  406.  
  407.  
  408.  
  409.  
  410.  
  411.  
  412.  
  413.                                                                      5
  414.  
  415.       10......Attempted To Remove The Current Directory
  416.       11......Not Same Device
  417.       12......No More Files
  418.       13......Disk writ protected
  419.       14......Unknown unit
  420.       15......Drive not ready
  421.       16......Unknown command
  422.       17......Data error (CRC)
  423.       18......Bad request structure length
  424.       19......Seek error
  425.       1A......Unknown media type
  426.       1B......Sector not found
  427.       1C......Printer out of paper
  428.       1D......Write fault
  429.       1E......Read fault
  430.       1F......General failure
  431.       20......Sharing violation
  432.       21......Lock violation
  433.       22......Disk change invalid
  434.       23......FCB unavailable
  435.       24......Sharing buffer exceeded
  436.       25-31...RESERVED
  437.       32......Unsupported network request
  438.       33......Remote machine not listening
  439.       34......Duplicate name on network
  440.       35......Network not found
  441.       36......Network busy
  442.       37......Device no longer exists on network
  443.       38......NetBIOS command limit exceeded
  444.       39......error in network adapter hardware
  445.       3A......Incorrect response from network
  446.       3B......Unexpected network error
  447.       3C......Remote adapter incompatible
  448.       3D......Print queue full
  449.       3E......Queue not full
  450.       3F......Not enough room for print file
  451.       40......Network name deleted
  452.       41......Access denied
  453.       42......Incorrect network device type
  454.       43......Network name not found
  455.       44......Network name limit exceeded
  456.       45......NetBIOS session limit exceeded
  457.       46......Temporary pause
  458.       47......Network request not accepted
  459.       48......Print or disk redirection paused
  460.       49-4F...RESERVED
  461.       50......File already exists
  462.       51......RESERVED
  463.       52......Cannot make directory
  464.       53......Fail on int 24H (critical error)
  465.       54......Out of structures
  466.       55......Already assigned
  467.       56......Invalid password
  468.       57......Invalid parameter
  469.       58......Net write fault
  470. ------------------------------------------------------------------------------
  471.  
  472.                              DISK STATUS CHART
  473.                              -----------------
  474.  
  475.       00H     No error.
  476.       01H     Invalid command.
  477.       02H     Address mark not found.
  478.       03H     Disk write-protected.           (F)
  479.       04H     Sector not found.
  480.       05H     Rest failed.                    (H)
  481.       06H     Floppy disk removed.            (F)
  482.       07H     Bad parameter table.            (H)
  483.       08H     DMA overrun.                    (F)
  484.       09H     DMA crossed 64 KB boundary.
  485.       0AH     Bad sector flag.                (H)
  486.       0BH     Bad track flag.                 (H)
  487.       0CH     Media type not found.           (F)
  488.       0DH     Invalid number of sectors on format. (H)
  489.       0EH     Control data address mark detected.  (H)
  490.       0FH     DMA arbitration level out of range.  (H)
  491.       10H     Uncorrectable CRC or ECC data error.
  492.       11H     ECC corrected data error        (H)
  493.       20H     Controller failed.
  494.       40H     Seek failed.
  495.       80H     Disk timedout (failed to respond).
  496.       AAH     Drive not ready.                (H)
  497.       BBH     Undefined error.                (H)
  498.       CCH     Write fault.                    (H)
  499.       E0H     Status register error.          (H)
  500.       FFH     Sense operation failed.         (H)
  501.  
  502.  
  503.   H = Fixed disk only.
  504.   F = Floppy disk only.
  505.   CRC = Cyclic Redundancy Check code.
  506.   ECC = Error Checking and Correcting code.
  507. ------------------------------------------------------------------------------
  508.  
  509.                               ROUTINES INDEX
  510.                               --------------
  511.  
  512.   ATRB_WRT  :  Write screen attribute at given position.
  513.   BEEP      :  Sounds a beep.
  514. * BELL      :  Sounds a beep at a given frequency.
  515. * BRK_PARM  :  Break parameters passed by DOS, with given break character.
  516.   CHG_DIR   :  Change directory.
  517.   CHG_DISK  :  Change disk.
  518. * CHG_MOD   :  Change file mode.
  519.   CLEAR     :  Clear the screen.
  520.   CLOSE     :  Close a file.
  521. * COPY      :  Copy a file.
  522.   CREATE    :  Create a file.
  523.   DELETE    :  Delete a file.
  524.   DISK_INF  :  Information about specific drive.
  525. * ERSCURS   :  Erase the cursor.
  526.   ERROR     :  Print error code on the screen.
  527.   EXIT      :  Exit the application.
  528.   FLUSH     :  Flush the keyboard input buffer.
  529.   FORMAT_T  :  Format a track.
  530. * FORMAT_D  :  Disk format. (fixed disk only).
  531.   FREE      :  Get amount of free space of specific drive.
  532.   GET_CHAR  :  Get character, Check for character or Get shift status.
  533.   GET_CURS  :  Get cursor position.
  534.   GET_DATE  :  Get current date, (returns ASCII format.)
  535.   GET_DIR   :  Get current directory.
  536.   GET_DTA   :  Get Disk Transfer Area address.
  537.   GET_INT   :  Get interrupt service routine address.
  538.   GET_LINE  :  Buffered keyboard input.
  539.   GET_MEM   :  Get amount of conventional memory.
  540.   GET_PARM  :  Get the parameters passed by DOS.
  541.   GET_TIME  :  Get current time (return ASCCII format.)
  542.   INTOSB    :  Convert INTeger TO String with Base.
  543.   MAKE_DIR  :  Make a new directory.
  544. * MEM_CHG   :  Change allocated memory block size.
  545.   MOV_BYT   :  Move bytes from one buffer to another.
  546.   MOV_PTR   :  Move file pointer.
  547.   OPEN      :  Open a file.
  548.   POPALL    :  Pop all registers.
  549.   PRINTER   :  Output to the printer.
  550.   PUSHALL   :  Push all registers.
  551.   PUT_CHAR  :  Print character or character+attribute on the screen.
  552.   READ      :  Read a file.
  553.   READCHAR  :  Read a character from communication port.
  554.   REBOOT    :  Reboot the system.
  555.   RENAME    :  Rename a file.
  556. * REPLACE   :  Replace a string with another string.
  557.   RMV_DIR   :  Remove directory.
  558. * RSTCURS   :  Restore cursor on video display.
  559.   RST_SCRN  :  Restore video display buffer. (Use with SAV_SCRN).
  560. * RUN_PROG  :  Execute a program from within a program.
  561.   SAV_SCRN  :  Save video display buffer.
  562.   SCRN_TYP  :  Get type of screen.
  563.   SCROLLDW  :  Scroll down the contenet of a window.
  564.   SCROLLUP  :  Scroll up the content of a window.
  565.   SENDCHAR  :  Send character to communication port.
  566.   SET_CURS  :  Set cursor position.
  567.   SET_DTA   :  Set address of new Disk Transfer Area.
  568.   SETVIDEO  :  Set video mode.
  569.   SET_INT   :  Set new interrupt service routine address.
  570.   SET_PAGE  :  Set video display page.
  571.   SRCH_FIL  :  Search for file.
  572.   SRCH_NXT  :  Search for next file.
  573. * STR_SRCH  :  Search for a string into designated buffer.
  574.   TEXT_RD   :  Read text on the screen to a buffer.
  575.   TEXT_WRT  :  Write text on the screen. (uses direct screen handeling.)
  576.   VER       :  Get DOS version.
  577.   WRITE     :  Write to a file.
  578.  
  579.  
  580.  
  581. ------------------------------------------------------------------------------
  582.  
  583.  
  584.                             ROUTINES DESCRIPTION
  585.                             --------------------
  586.  
  587. -----------------------------------------------------------------------------
  588.     ATRB_WRT.8                                                      12/16/88
  589.  
  590.  
  591.   DESC: Writes character attributes to the screen
  592.   in: [position]   row(0-24), col(0-79).
  593.       [attribute]  attribute ( see technical reference manual ).
  594.       [chars]      number of chars to be affected.
  595.  
  596. ------------------------------------------------------------------------------
  597.  
  598.     ATRB_RD.8                                                       01/12/89
  599.  
  600.    DESC:  Read character attibute on the screen.
  601.      in:  [rowcol]  Position on the screen.
  602.  
  603.     out:  [AX]      AH=attribute. AL=character.
  604.  
  605. ------------------------------------------------------------------------------
  606.  
  607.  
  608.     BEEP.8                                                          12/14/88
  609.  
  610.  
  611.  
  612.    DESC:  sound a beep
  613.  
  614.  
  615.  
  616. ------------------------------------------------------------------------------
  617.  
  618.  
  619.   BELL.8                                                             1/05/89
  620.  
  621.     DESC: Sound a beep at a given frequency.
  622.  
  623.       in: [freq]  frequency of the beep
  624.  
  625.    
  626. ------------------------------------------------------------------------------
  627.  *
  628.  
  629.     BRK_PARM.8                                                      12/16/88
  630.  
  631.  
  632.   DESC: Break parameters passed by DOS
  633.  
  634.    in: [segment]  segment address of parameter string
  635.        [offset]   offset address of parameter string(most of the time 082H)
  636.        [break]    break character (ASCII code) to use.
  637.  
  638.   out: [parms]    number of parameters,
  639.        [chars]    followed by the length of a parameter
  640.        [addrs]    and its addresses in the string.
  641.                  (if parms=3, 'pop' 3 addresses, first parm first.)
  642.  
  643.       (i.e  if your first 'pop' shows 2,
  644.       your next pop will then get the number of chars of the first parameter,
  645.       the next 'pop' will give you the address of the parameter, the next 'pop'
  646.       will get the number of char of the second parameter folowed by its
  647.       address in the string.
  648.  
  649.       SAMPLE:
  650.             pop cx          ;shows 2
  651.             pop length1     ;length of parameter1
  652.             pop add1        ;address of parameter1
  653.             pop lenght2     ;length of parameter2
  654.             pop add2        ;address of parameter2
  655.  
  656.  
  657.  
  658. ------------------------------------------------------------------------------
  659.  
  660.     CHG_DIR.8                                                       12/16/88
  661.  
  662.  
  663.  
  664.   DESC:  change directory.
  665.     in:  [segment]    segment address of ASCII path string.
  666.          [offset]     offset address of ASCII path string.
  667.                       terminated with 0.
  668.  
  669.  
  670.                     IF ERROR CARRY FLAG IS SET
  671.                       AX HAS THE ERROR CODE
  672.  
  673.  
  674. ------------------------------------------------------------------------------
  675.  
  676.     CHG_DISK.8                                                     12/19/88
  677.  
  678.    DESC:  select a new drive.
  679.      in:  [drive]   drive code  (0=A, 1=B ect)
  680.  
  681.     out:  [drives]  LOW BYTE = number of logical drives in system.
  682.  
  683.  
  684.  
  685. ------------------------------------------------------------------------------
  686.  *
  687.  
  688.     CHG_MOD.8                                                       12/16/88
  689.  
  690.  
  691.   DESC: Changes the mode of a file.  (i.e: arc, hid, sys)
  692.  
  693.     in: [segment] segment address of ASCII filename.
  694.         [offset]  offset address of ASCII filename.
  695.         [code]    function code (1:set mode, 0:get mode)
  696.         [attrb]   mode of file  (1:read only,2:hidden file,4:system file)
  697.                      (8:volume label,10H:sub-directory,20H:archived file)
  698.  
  699.     " The attribute is bit-mapped !! i.e  read only and sys is attrb=5 "
  700.  
  701.    out: [mode]   new file mode.
  702.  
  703.                       IF ERROR CARRY FLAG IS SET
  704.                        AND ERROR CODE IS IN AX
  705.  
  706.  
  707. ------------------------------------------------------------------------------
  708.  
  709.  
  710.  
  711.     CLEAR.8                                                         12/15/88
  712.  
  713.  
  714.  
  715.   DESC: Clears the screen
  716.  
  717.  
  718. ------------------------------------------------------------------------------
  719.  
  720.  
  721.  
  722.     CLOSE.8                                                         12/16/88
  723.  
  724.  
  725.   DESC: Closes a file handle
  726.  
  727.    in: [handle]   handle of file to be closed, (passed by _open).
  728.  
  729.                IF ERROR THE CARRY FLAG IS SET.
  730.                    AX HAS THE ERROR CODE
  731.  
  732.  
  733. ------------------------------------------------------------------------------
  734.  *
  735.  
  736.   COPY.8                                                             12/16/88
  737.  
  738.   DESC: Copies existing file to new or existing file
  739.         using complete path names
  740.  
  741.     in:
  742.         [segment] segment address of new filename.
  743.         [offset]  offset address of new filename.
  744.         [segment] segment address of old filename.
  745.         [offset]  offset address of old filename.
  746.    out:
  747.         [code]    if [code]=0FFH successful, otherwise [code]=error code.
  748.  
  749.  
  750. ------------------------------------------------------------------------------
  751.  
  752.     CREATE.8                                                        12/16/88
  753.  
  754.  
  755.   DESC: Creates a new data file
  756.     in: [segment]  segment address of filename (ASCII).
  757.         [offset]   offset address of filename to be created.
  758.         [mode]     attribute or mode of file.( as listed (in CHG_MOD)command
  759.  
  760.    out: [handle]   handle of file created.
  761.  
  762.                        IF ERROR CARRY FLAG IS SET
  763.                          AX HAS THE ERROR CODE
  764.  
  765. ------------------------------------------------------------------------------
  766.  
  767.     DELETE.8                                                       12/16/88
  768.  
  769.   DESC: Deletes a file                                       V1.00
  770.    in:  [segment]  segment address of filename (ASCII).
  771.         [offset]   offset address of filename to be deleted.
  772.  
  773.                   IF ERROR CARRY FLAG IS SET
  774.                     AX HAS THE ERROR CODE
  775.  
  776. ------------------------------------------------------------------------------
  777.  
  778.    DISK_INF.8                                                       01/10/89
  779.  
  780.    DESC:  Get information about specific drive.
  781.      in: [code]  0=default, 1=A, 2=B etc.)
  782.  
  783.     out: [AL]    Sectors per cluster.
  784.          [BL]    ID byte. (see codes)
  785.          [CX]    Size of physical sector (in bytes)
  786.          [DX]    Number of clusters
  787.                  If function is unsuccesfull [AL] = FFH
  788.  
  789.        Id codes:
  790.                 F0H=  3.5 inch double-sided, 18 sectors or "other"
  791.                 F8H=  Fixed disk.
  792.                 F9H=  5.25 inch double-sided, 15 sectors
  793.                       or 3.5 inch double-sided, 9 sectors.
  794.                 FCH=  5.25 inch single-sided, 9 sectors.
  795.                 FDH=  5.25 inch double-sided, 9 sectors.
  796.                 FEH=  5.25 inch single-sided, 8 sectors.
  797.                 FFH=  5.25 inch double-sided, 8 sectors.
  798.  
  799. ------------------------------------------------------------------------------
  800.  
  801.    ERROR.8                                                          12/17/88
  802.  
  803.    DESC: print an error message on the screen.
  804.  
  805.      in: [code]  error code
  806.  
  807. ------------------------------------------------------------------------------
  808.  
  809.    ERSCURS.8                                                         1/05/89
  810.  
  811.      DESC: Erase the cursor from the video display.           
  812.  
  813.  
  814. ------------------------------------------------------------------------------
  815.  
  816.    EXIT.8                                                          12/16/88
  817.  
  818.  
  819.    DESC:  exit the program.
  820.  
  821. ------------------------------------------------------------------------------
  822.  
  823.    FLUSH.8                                                          01/10/89
  824.  
  825.    DESC:  Flush the input keyboard buffer.
  826.  
  827. ------------------------------------------------------------------------------
  828.     FORMAT_T.8                                                      01/10/89
  829.  
  830.   DESC:  Format a track.
  831.  
  832.     in:  [interleave]    Only for fixed disks. (still push it if floppys !!)
  833.          [cylinder]      Cylinder to start at.
  834.          [head]          What head to use.
  835.          [bytes]         Code for number of bytes per sector
  836.                                       ( 00H = 128 bytes. )
  837.                                       ( 01H = 256 bytes. )
  838.                                       ( 02H = 512 bytes. )
  839.                                       ( 03H = 1024 bytes.)
  840.          [drive]         Drive number (00H-7FH for floppys.    )
  841.                                       (80H-FFH for Fixed disks.)
  842.          [code]          Floppy disk code (if fixed disk FFH)
  843.                                       (01H = 320/360 KB disk in 360 KB drive)
  844.                                       (02H = 320/360 KB disk in 1.2 MB drive)
  845.                                       (03H = 1.2 MB disk in 1.2 MB drive)
  846.                                       (04H = 720 KB disk in 720 KB drive)
  847.  
  848. ------------------------------------------------------------------------------
  849. *
  850.     FORMAT_D.8                                                      01/15/89
  851.  
  852.   DESC:  Fixed disk format.
  853.  
  854.     in:  [interleave]   Interleave desired (1-16)
  855.          [track]        Cylinder number to start at
  856.          [drive]        Fixed disk (80H-FFH)
  857.  
  858.    out:  If unsuccessfull carry flag is set AH has status code, see chart.
  859.  
  860. ------------------------------------------------------------------------------
  861.  
  862.     FREE.8                                                          01/10/89
  863.  
  864.   DESC:  Get free disk space.
  865.  
  866.     in:  [drive]  Drive code (0=default, 1=a etc...)
  867.  
  868.    out:  [free]   Amount of space in Kbytes.
  869.                   If error AX=0FFFFH
  870.          [DX:CX]  Amount of space in bytes (double word)
  871.                          not on stack !!!!
  872. ------------------------------------------------------------------------------
  873.  
  874.     GET_CHAR.8                                                      12/16/88
  875.  
  876.  
  877.    DESC: gets a character from the keyboard
  878.  
  879.      in: [type]  0:get char, 1:check for char, 2:shift status
  880.  
  881.     out: [AX]   high byte is shift status, low byte is char.
  882.  
  883. ------------------------------------------------------------------------------
  884.  
  885.  
  886.     GET_CURS.8                                                      12/16/88
  887.  
  888.  
  889.   DESC: Gets Cursor Position
  890.  
  891.     IN: [page]  (0-7) in 40 character mode
  892.              or (0-3) in 80 character mode    (i.e. 0003) is page 4
  893.    OUT:  [row,col]   row (0-24), col (0-79)  (i.e. 0104)
  894.                                            1st row, 5th column
  895.  
  896. ------------------------------------------------------------------------------
  897.  
  898.  
  899.     GET_DATE.8                                                      12/16/88
  900.  
  901.     DESC: Gets the system date
  902.  
  903.     OUT:  [offset] offset address of date string.
  904.           The sting is under the form  'Monday   12 10 1988'
  905.  
  906.  
  907. ------------------------------------------------------------------------------
  908.  
  909.     GET_DISK.8                                                     01/10/89
  910.  
  911.     DESC:  Get current disk.
  912.  
  913.       in:  noting.
  914.  
  915.      out:  [drive]   drive code (0=A, 1=B, 2=C ect.)
  916.  
  917. ------------------------------------------------------------------------------
  918.      
  919.     GET_DIR.8                                                      12/16/88
  920.  
  921.  
  922.  
  923.   DESC:  get current directory.
  924.     in:  [segment]    segment address of 64 byte buffer.
  925.          [offset]     offset address of 64 byte buffer.
  926.          [drive]      drive code (0=default, 1=A, 2=B etc)
  927.  
  928.                     IF ERROR CARRY FLAG IS SET
  929.                       AX HAS THE ERROR CODE
  930.  
  931.  
  932. ------------------------------------------------------------------------------
  933.  
  934.  
  935.     GET_DTA.8                                                     12/16/88
  936.  
  937.   DESC: returns the disk transfer address
  938.    out: [segment]  segment address of DTA (Disk Transfer Area).
  939.         [offset]   offset address of DTA.
  940.  
  941.  
  942. ------------------------------------------------------------------------------
  943.  
  944.     GET_INT.8                                                    01/10/89
  945.  
  946.  
  947.    DESC: Get interrupt vector address.
  948.  
  949.      in: [int]  Interrupt number.
  950.  
  951.     out: [segment]   Segment address of interrupt service routine.
  952.          [offset]    Offset address of interrupt service routine.
  953.  
  954. ------------------------------------------------------------------------------
  955.  
  956.     GET_LINE.8                                                   12/16/88
  957.  
  958.   DESC: gets a line of text from the keyboard
  959.  
  960.     in: [chars]  number of chars to get.
  961.                  if  <CR> is pressed, the input is aborted.
  962.  
  963.    out: [chars] amount of chars read.  ( <CR> INCLUDED !!!! )
  964.         you can access the buffer by using the label [KEYBUF]
  965.  
  966.  
  967. ------------------------------------------------------------------------------
  968.  
  969.     GET_MEM.8                                                    01/15/89
  970.  
  971.     DESC:  Get ammount of conventional memory.
  972.  
  973.       in:  nothing ...
  974.  
  975.      out:  [memory]    Amount of memory in KB.
  976.  
  977. -------------------------------------------------------------------------------
  978.  
  979.  
  980.     GET_PARM.8                                                   12/16/88
  981.  
  982.  
  983.   DESC: Gets the parameters passed to program by DOS
  984.     in:  [DS] value of DS at beginning of program.
  985.  
  986.    out:  [segment] segment address of parameters.
  987.          [offset]  offset address of parameter string.
  988.          [length]  length of parameter string.
  989.  
  990.         if returned lenght is zero no further action should be
  991.         taken.
  992.  
  993.  
  994. ------------------------------------------------------------------------------
  995.  
  996.     GET_TIME.8                                                  12/16/88
  997.  
  998.  
  999.   DESC: Gets the system time
  1000.    OUT:  [offset] offset address of time string.
  1001.         The string is under the form  '00:00:.00 '
  1002.  
  1003.  
  1004. ------------------------------------------------------------------------------
  1005.  
  1006.     INTOSB.8                                                    12/14/88
  1007.  
  1008.   DESC: Convert Unsigned "NUMB" to Unsigned "STRING"
  1009.  
  1010.   in: [number]   number to convert.
  1011.       [offset]   offset address of string.
  1012.       [base]     the base you want to convert to.
  1013.                  (HEXA=16,DECIMAL=10,OCTAL=8 ect...)
  1014.  
  1015.     sample:  mov bx,number
  1016.              push bx
  1017.              mov bx,offset string
  1018.              push bx
  1019.              mov bx,base
  1020.              push bx
  1021.              mov al,3
  1022.              call _intosb
  1023.              add sp,6
  1024.  
  1025.  
  1026. ------------------------------------------------------------------------------
  1027.  
  1028.  
  1029.     MAKE_DIR.8                                                     12/16/88
  1030.  
  1031.   DESC:  create a new directory.
  1032.     in:  [segment]    segment address of ASCII path string.
  1033.          [offset]     offset address of ASCII path string.
  1034.                       terminated with 0.
  1035.  
  1036.                     IF ERROR CARRY FLAG IS SET
  1037.                       AX HAS THE ERROR CODE
  1038.  
  1039.  
  1040. ------------------------------------------------------------------------------
  1041.  *
  1042.     MEM_CHG.8                                                      12/16/88
  1043.  
  1044.   DESC: Modifies Allocated memory block size.
  1045.  
  1046.     in: [block]    segment address of memory block to be modified.
  1047.         [size]     new block size in paragraphs (i.e  multiples of 16 bytes).
  1048.  
  1049.                       IF ERROR CARRY FLAG IS SET
  1050.                           ERROR CODE IS IN AX
  1051.                   MAXIMUM BLOCK SIZE AVAILABLE IN BX
  1052.  
  1053. ------------------------------------------------------------------------------
  1054.  
  1055.  
  1056.     MOV_BYT.8                                                      12/16/88
  1057.  
  1058.  
  1059.    DESC: move bytes from one buffer to another.
  1060.  
  1061.      in: [segment]    segment address of source.
  1062.          [offset]     offset address of source.
  1063.          [length]     length of string.
  1064.          [segment]    segment address of output buffer.
  1065.          [offset]     offset address of output buffer.
  1066.  
  1067. ------------------------------------------------------------------------------
  1068.  
  1069.  
  1070.     MOV_PTR.8                                                      12/16/88
  1071.  
  1072.   DESC: Moves the file location pointer.
  1073.  
  1074.     in: [code]    Method code.
  1075.                   0: absolute offset from start of file
  1076.                   1: signed offset from current file pointer
  1077.                   2: signed offset from end of file
  1078.         [handle]  File handle.
  1079.         [segment] Most significant half of offset.
  1080.         [offset]  Least significant half of offset.
  1081.  
  1082.    out: [segment] Most significant word of pointer location.
  1083.         [offset]  Least significant word of pointer location.
  1084.  
  1085.                        IF ERROR CARRY FLAG IS SET
  1086.                          AX HAS THE ERROR CODE
  1087.  
  1088.  
  1089. ------------------------------------------------------------------------------
  1090.  
  1091.     OPEN.8                                                         12/16/88
  1092.  
  1093.  DESC: Opens a file
  1094.  
  1095.   in: [segment]   segment address of filename  (ASCII)
  1096.       [offset]    offset address of filename  (ASCII)
  1097.       [access]   access code  (0:read,1:write,2:read write)
  1098.  out: [handle]   handle of file, (needed to close it).
  1099.  
  1100.                IF ERROR CARRY FLAG IS SET
  1101.                  AX HAS THE ERROR CODE
  1102.  
  1103.  
  1104. ------------------------------------------------------------------------------
  1105.  
  1106.  
  1107.     POPALL.8                                                       12/15/88
  1108.  
  1109.   DESC: Pop all registers (SI,DI,BP,ES,DS,DX,CX,BX,AX)
  1110.  
  1111.  
  1112. ------------------------------------------------------------------------------
  1113.  
  1114.  
  1115.     PRINTER.8                                                      12/16/88
  1116.  
  1117.  
  1118.    DESC: Send a character to the printer.
  1119.      in: [char]  character to print.
  1120.          [port]  printer number (0=lpt1, 1=lpt2, 2=lpt3)
  1121.  
  1122.     out: [AH]    status.
  1123.  
  1124.                  bit    Significance (if set)
  1125.                   7     printer not busy
  1126.                   6     printer acknowledge
  1127.                   5     out of paper
  1128.                   4     printer selected
  1129.                   3     I/O error
  1130.                   2     unused
  1131.                   1     unused
  1132.                   0     printer timed-out
  1133.  
  1134.           REMEMBER : before the device actually print, a carriage return
  1135.                      must be send. Unless you are sending more characters
  1136.                      than it can fit on one line, then the printer will
  1137.                      automatically print
  1138.  
  1139. ------------------------------------------------------------------------------
  1140.  
  1141.     PUSHALL.8                                                   12/15/88
  1142.  
  1143.   DESC: Push all registers (AX,BX,CX,DX,DS,ES,BP,DI,SI)
  1144.  
  1145. ------------------------------------------------------------------------------
  1146.  
  1147.     PUT_CHAR.8                                                  12/16/88
  1148.  
  1149.   DESC: Print a single char on the screen.
  1150.  
  1151.     in: [char]     character and attribute.if char only set High byte to 0.
  1152.         [page]     current display page
  1153.         [mode]     mode of writing (0:char only, 1:char+attribute)
  1154.  
  1155. ------------------------------------------------------------------------------
  1156.  
  1157.     PUT_STR.8                                                   01/10/89
  1158.  
  1159.   DESC:  Print string on the screen.
  1160.  
  1161.     in:  [segment]   Segment address of string terminated with '$'.
  1162.          [offset]    Offset address of string terminated with '$'.
  1163.  
  1164. ------------------------------------------------------------------------------
  1165.  
  1166.     READ.8                                                      12/16/88
  1167.  
  1168.   DESC: Reads data from a file
  1169.     in:  [handle]  handle of the file.
  1170.          [bytes]   number of bytes to read from file.
  1171.          [segment] segment address of buffer.
  1172.          [offset]  offset address of buffer.
  1173.  
  1174.    out:  [bytes]   number of bytes actually read.
  1175.  
  1176.                   IF ERROR CARRY FLAG IS SET
  1177.                 AND ERROR CODE IS ON THE STACK
  1178.  
  1179. ------------------------------------------------------------------------------
  1180.  
  1181.     READCHAR.8                                                 01/10/89
  1182.  
  1183.  
  1184.    DESC:  read a char from com port.
  1185.  
  1186.      in:  [port]        Com port number.(0=com1, 1=com2 etc.)
  1187.  
  1188.     out:  [AL]          Character.
  1189.           [AH]          Bit 0 to 6 = Status. (significance if set)
  1190.                          4   break detected
  1191.                          3   framing error detected
  1192.                          2   parity error detected
  1193.                          1   overrun error detected
  1194.  
  1195.           [BX]           If successfuff BX=0, unsuccessfull BX=FFH
  1196.  
  1197. ------------------------------------------------------------------------------
  1198.  
  1199.     REBOOT.8                                                    01/10/89
  1200.  
  1201.        DESC:  Reboot the system.
  1202.  
  1203. ------------------------------------------------------------------------------
  1204.  
  1205.     RENAME.8                                                    12/16/88
  1206.  
  1207.   DESC:  rename a file, or move file to another directory.
  1208.     in:  [oldseg]  segment address of current ASCII pathname.
  1209.          [oldoff]  offset address of current ASCII pathname.
  1210.                    terminated with 0.
  1211.          [newseg]  segment address of new ASCII pathname.
  1212.          [newoff]  offset address of new ASCII pathname.
  1213.                    terminated with 0.
  1214.  
  1215.                       IF ERROR CARRY FLAG IS SET
  1216.                         AX HAS THE ERROR CODE
  1217.  
  1218.  
  1219. ------------------------------------------------------------------------------
  1220.  *
  1221.  
  1222.     REPLACE.8                                                   12/16/88
  1223.  
  1224.  
  1225.   DESC: Replaces a string with another string.
  1226.  
  1227.     in: [segment]    segment address of replacement string.
  1228.         [offset]     offset address of replacement string.
  1229.         [direction]  direction of search (0:forward,1:backward)
  1230.         [segment]    segment address of buffer to scan.
  1231.         [offset]     offset address of buffer to scan.
  1232.         [segment]    Segment address of string to search for.
  1233.         [offset]     Offset address of string to search for.
  1234.         [chars]      Number of chars in string searched.
  1235.         [length]     Length of buffer to scan.
  1236.  
  1237.    out: [offset]     offset address where replacement took place.
  1238.  
  1239.         IF replacement failed [segment] and [offset] are both zero
  1240. ------------------------------------------------------------------------------
  1241.  
  1242.  
  1243.     RMV_DIR.8                                                   12/16/88
  1244.  
  1245.   DESC:  remove a directory.
  1246.     in:  [segment]    segment address of ASCII path string.
  1247.          [offset]     offset address of ASCII path string.
  1248.                       terminated with 0.
  1249.  
  1250.                     IF ERROR CARRY FLAG IS SET
  1251.                       AX HAS THE ERROR CODE
  1252.  
  1253.  
  1254. ------------------------------------------------------------------------------
  1255.  
  1256.     RSTCURS.8                                                    1/05/89
  1257.  
  1258.         DESC: Restore the cursor to the video display.
  1259.  
  1260. ------------------------------------------------------------------------------
  1261.  
  1262.     RST_SCRN.8                                                  12/16/88
  1263.  
  1264.    DESC:  Restores 4K screen to video memory
  1265.      in:  [segment]  segment address of 4K buffer.
  1266.           [offset]   offset address of 4K buffer.
  1267.  
  1268. ------------------------------------------------------------------------------
  1269.  *
  1270.  
  1271.     RUN_PROG.8                                                  12/16/88
  1272.  
  1273.  
  1274.   DESC: Loads and Executes another program
  1275.     in:   [segment]  Segment address of filename.
  1276.           [offset]   Offset address of filename to run including extension.
  1277.           [segment]  segment address and
  1278.           [offset]   Offset address of pointer to command line to be passed
  1279.                      to new program. Command line should be in the form :
  1280.                      z,' ',parameter,13 where z is the length of parameter+1,
  1281.                      and is followed by a space. " Parameter " is the command
  1282.                      line and 13 is a carriage return ending the line.
  1283.           [block]    Segment value of last memory control block.
  1284.                      " block " is typically the value of DS at start of main
  1285.                      program.
  1286.           [size]     Size of current program.
  1287.  
  1288.                          IF ERROR CARRY FLAG IS SET
  1289.                           AND AX HAS THE ERROR CODE
  1290.  
  1291. ------------------------------------------------------------------------------
  1292.  
  1293.  
  1294.     SAV_SCRN.8                                                  12/16/88
  1295.  
  1296.  
  1297.    DESC: Saves 4K screen from video memory
  1298.      in:  [segment]  segment address of 4K buffer.
  1299.           [offset]   offset address of 4K buffer.
  1300.  
  1301.  
  1302. ------------------------------------------------------------------------------
  1303.  
  1304.  
  1305.     SCRN_TYP.8                                                  12/16/88
  1306.  
  1307.    DESC: Returns the address of the video memory buffer
  1308.  
  1309.     out:  [segment] segment address of video memory area.
  1310.  
  1311.  
  1312. ------------------------------------------------------------------------------
  1313.  
  1314.      SCROLLDW.8                                                    01/10/89
  1315.  
  1316.  
  1317.     DESC:  Scroll down the contents of a window.
  1318.  
  1319.       in:  [lines]   Number of lines to scroll, if 00 window is blanked.
  1320.            [colrow]  High byte column, low byte row : upper left corner.
  1321.            [colrow]  High byte column, low byte row : lower right corner.
  1322.  
  1323. ------------------------------------------------------------------------------
  1324.  
  1325.      SCROLLUP.8                                                    01/10/89
  1326.  
  1327.  
  1328.     DESC:  Scroll up the contents of a window.
  1329.  
  1330.       in:  [lines]   Number of lines to scroll, if 00 window is blanked.
  1331.            [colrow]  High byte column, low byte row : upper left corner.
  1332.            [colrow]  High byte column, low byte row : lower right corner.
  1333.  
  1334. ------------------------------------------------------------------------------
  1335.  
  1336.      SET_DTA.8                                                     12/16/88
  1337.  
  1338.  
  1339.   DESC: sets the disk transfer address
  1340.     in: [segment]  segment address of DTA.
  1341.         [offset]   offset address of DTA.
  1342.  
  1343. ------------------------------------------------------------------------------
  1344.  
  1345.     SETVIDEO.8                                                      12/16/88
  1346.  
  1347.    DESC:  set video mode
  1348.  
  1349.      in:  [mode]
  1350.                                    text/     MDA  CGA  PCjr  EGA  MCGA VGA
  1351.  mode    resolution     colors   graphics
  1352.  ----    ----------     ------   --------
  1353.  00H      40 by 25        16       text            x    x     x    x    x
  1354.        color burst-off
  1355.  01H      40 by 25        16       text            x    x     x    x    x
  1356.  02H      80 by 25        16       text            x    x     x    x    x
  1357.        color burst-off
  1358.  03H      80 by 25        16       text            x    x     x    x    x
  1359.  04H     320 by 200        4     graphics          x    x     x    x    x
  1360.  05H     320 by 200        4     graphics          x    x     x    x    x
  1361.        color burst-off
  1362.  06H     640 by 200        2     graphics          x    x     x    x    x
  1363.  07H      80 by 25        2*       text       x               x         x
  1364.  08H     160 by 200       16     graphics               x
  1365.  09H     320 by 200       16     graphics               x
  1366.  0AH     640 by 200        4     graphics               x
  1367.  0BH     RESERVED
  1368.  0CH     RESERVED
  1369.  0DH     320 by 200       16     graphics                     x         x
  1370.  0EH     640 by 200       16     graphics                     x         x
  1371.  0FH     640 by 350       2*     graphics                     x         x
  1372.  10H     640 by 350        4     graphics                     #
  1373.  10H     640 by 350       16     graphics                     $         x
  1374.  11H     640 by 480        2     graphics                           x   x
  1375.  12H     640 by 480       16     graphics                               x
  1376.  13H     320 by 200      256     graphics                           x   x
  1377.  
  1378.  *  monochrome monitor only
  1379.  #  EGA with 64 KB of RAM
  1380.  $  EGA with 128 KB of RAM
  1381.  
  1382.   When a composite monitor is present function offering:
  1383.      "color burst-off" should be used.
  1384.  
  1385. ------------------------------------------------------------------------------
  1386.  
  1387.     SET_CURS.8                                                  12/16/88
  1388.  
  1389.    DESC: Sets Cursor Position
  1390.      in: [row col] row(0-24), col(0-79)
  1391.          [page]    display page.
  1392.  
  1393.  
  1394. ------------------------------------------------------------------------------
  1395.  
  1396.     SET_INT.8                                                   01/10/89
  1397.  
  1398.  
  1399.    DESC:  Set interrupt verctor address.
  1400.  
  1401.      in:  [int]      Interrupt number.
  1402.           [segment]  Segment address of new interrupt service routine.
  1403.           [offset]   Offset address of new interrupt service routine.
  1404.  
  1405.           Remember to save the original address of the interrupt service
  1406.           routine, before assigning a new address.
  1407.  
  1408. ------------------------------------------------------------------------------
  1409.  
  1410.     SET_PAGE.8                                                  12/16/88
  1411.  
  1412.  
  1413.    DESC:  set video display page
  1414.  
  1415.      in:  [page]
  1416.  
  1417.                0-7 for modes 00H and 01H (CGA,EGA,MCGA,VGA)
  1418.                0-3 for modes 02H and 03H (CGA)
  1419.                0-7 for modes 02H and 03H (EGA,MCGA,VGA)
  1420.                0-7 for mode 07H (EGA,VGA)
  1421.                0-7 for mode 0DH (EGA,VGA)
  1422.                0-3 for mode 0EH (EGA,VGA)
  1423.                0-1 for mode 0FH (EGA,VGA)
  1424.                0-1 for mode 10H (EGA,VGA)
  1425.  
  1426. ------------------------------------------------------------------------------
  1427.  
  1428.     SRCH_FIL.8                                                     12/16/88
  1429.  
  1430.   DESC: search for the first file of a set of matching filenames.
  1431.  
  1432.  
  1433.   in: [segment] segment address of search string.
  1434.       [offset]  offset address of search string.
  1435.       [attrib]  file attribute to search on (1:read only,2:hidden file,
  1436.                                4:system file,8:volume label,
  1437.                                10H:sub-directory,20H:archived file).
  1438.  out:
  1439.       [segment]   segment address of DTA.
  1440.       [offset]    offset address of DTA.
  1441.       [flags]     FLAGS . IF CARRY FLAG SET ERROR !!!!
  1442.                   if carry flag set, [segment] and [offset] have the error code
  1443.  
  1444. ------------------------------------------------------------------------------
  1445.  
  1446.     SRCH_NXT.8                                                     12/16/88
  1447.  
  1448.  
  1449.   DESC: search for the next of a set of matching filenames.
  1450.  
  1451.   in: [segment] segment address of search string.
  1452.       [offset]  offset address of search string.
  1453.       [attrib]  file attribute to search on (1:read only,2:hidden file,
  1454.                                4:system file,8:volume label,
  1455.                                10H:sub-directory,20H:archived file).
  1456.  out:
  1457.       [segment]   segment address of DTA.
  1458.       [offset]    offset address of DTA.
  1459.       [flags]     FLAGS . IF CARRY FLAG SET ERROR !!!!
  1460.                   if carry flag set, [segment] and [offset] have the error code
  1461.  
  1462. ------------------------------------------------------------------------------
  1463.  *
  1464.  
  1465.     STR_SRCH.8                                                  12/16/88
  1466.  
  1467.  
  1468.   DESC: Scans a source buffer for matching string
  1469.         and returns location of beginning and end of string
  1470.  
  1471.     in: [direction]  0:forward, 1:backward
  1472.         [segment]    segment address of buffer to scan.
  1473.         [offset]     offset address of buffer to scan.
  1474.         [segment]    segment address of string to search for.
  1475.         [offset]     offset address of sting to search for.
  1476.         [chars]      number of chars in string.
  1477.         [length]     length of buffer up to 0FFFF.  (number of characters)
  1478.   out:  [offbeg]   offset beginning of string.
  1479.         [offend]   offset end of string.
  1480.  
  1481.         IF A VALUE OF '0FFFF' IS RETURNED FOR BOTH  [offbeg] AND
  1482.                  [offend], THEN STRING WAS NOT FOUND !!!!!!!!!!!
  1483.  
  1484.  
  1485. ------------------------------------------------------------------------------
  1486.  
  1487.  
  1488.     TEXT_RD.8                                                   12/16/88
  1489.  
  1490.     DESC: Reads text from the screen
  1491.  
  1492.       in: [rowcol]  row(0-24), col(0-79) to start reading at  ;ax
  1493.           [chars]   number of chars to read                   ;cx
  1494.           [segment] segment address of buffer                 ;es
  1495.           [offset]  offset address of buffer                  ;di
  1496.  
  1497.  
  1498.  
  1499. ------------------------------------------------------------------------------
  1500.  
  1501.  
  1502.     TEXT_WRT.8                                                  12/16/88
  1503.  
  1504.      DESC: Writes text to screen
  1505.  
  1506.        in: [attribute] attribute for the text                   ;dx
  1507.            [rowcol] row(0-24), col(0-79) to start writing at.   ;ax
  1508.            [segment] segment address of the buffer              ;ds
  1509.            [offset]  offset address of the buffer               ;si
  1510.            [chars]   numbers of char to write                   ;cx
  1511.  
  1512.  
  1513. ------------------------------------------------------------------------------
  1514.  
  1515.     VER.8                                                       01/10/89
  1516.  
  1517.  
  1518.    DESC: Get current DOS version.
  1519.  
  1520.      in: nothing ..
  1521.  
  1522.     out: [ver]  Version number (320, 310, 311 etc .)
  1523.  
  1524. ------------------------------------------------------------------------------
  1525.  
  1526.     WRITE.8                                                     12/16/88
  1527.  
  1528.  
  1529.    DESC: Writes to a data file
  1530.      in: [handle]   handle of the file.
  1531.          [bytes]    number of bytes to write
  1532.          [segment]  segment address of buffer.
  1533.          [offset]   offset address of buffer.
  1534.  
  1535.     out: [bytes]    number of bytes actually written.
  1536.  
  1537.                   IF ERROR CARRY FLAG IS SET
  1538.                 AND ERROR CODE IS ON THE STACK
  1539. ------------------------------------------------------------------------------
  1540.