programmers resources  (c)2017
Search :  
Lingua Italiana    English Language   
just an empty assembly space
just an arrow Intel Platform
just an arrow Article & Guides
just an arrow Download Software

23/01/2009 Featured Article: How to remove Buzus Virus (permalink)

Bottone Scambio Directory
Home Page | Articles & Guides | Download | Intel Platform | Contacts


Bookmark and Share
Tell a friend

ALIB Version 3.0

Asm Library for DB, Memory, Math and others

(by jeff owens)

ALIB is a library of common functions needed by assembly language programmers. Some of the functions included in ALIB are:
  • Database
  • Compression
  • Memory Manager
  • Menuing
  • Floating Math
  • Hyper text
  • Windowing
  • Hardware analysis

This article is online from 2699 days and has been seen 17368 times

                            ALIB Version 3.0
               Copyright (C) 1994 Owens Consulting and
                         Jeff Owens,  10-09-94
                          24551 Metzler Park
                          Estacada, OR 97023


        What is it?

        ALIB is a library of common functions needed by assembly
        language programmers.  Some of the functions included in
        ALIB are:

           * Database   * Compression   * Memory Manager
           * Menuing    * Floating Math * Hyper text
           * Windowing  * Hardware analysis

        For years assembly language has been regarded as somewhat
        tedious and difficult, but its small size, unlimited
        freedom, and performance have kept it very much alive.
        This library attempts to remove some of the tedium by
        adding a set of high level functions to the programmers
        arsenal.  With ALIB it is possible to write DOS programs
        in a few minutes.

        Why was it written?

        ALIB was written because the author enjoys Assembler
        and the sharing of code.  Some of the code could be
        improved, but it was felt that a free exchange or code
        is more important than having perfect code.  The author
        encourages communication and questions from anyone who
        shares these beliefs.

        What hardware and software is needed?

        For use with IBM PS/2, XT, PC and compatibles with DOS 2.1
        or greater capability.  The following software will be
        needed to make use of ALIB:

        1.  Assembler for 8088,8086,80386, etc.  Known assemblers
            are:  A86 (Shareware), MASM (Microsoft), TASM
            (Borland), OPTASM (SLR Systems).

        2.  Linker to handle the .OBJ file produced by
            the assembler.  Linkers are usually sold
            with the assembler except in the case of

        3.  Debugger for testing.  Many assemblers have
            a companion debugger which is sold separately.
            All of these debuggers are adequate.  The
            old standby DOS DEBUG program will work, but
            it needs symbolic capability for serious
            work.  The independently produced Periscope
            debuggers are also very good.

        How do I install it?

        To initially explore ALIB it is best to place it in a
        separate directory and work with it there.  No special
        installation process is necessary.  Eventually, the
        library itself (ALIB.LIB) can be placed in a common
        directory of assembly tools and the remaining files

        What files make up ALIB?
        ALIB.LIB         Library of functions
        ALIB1.DOC        General information
        ALIB2.DOC        Summary of library functions 
        ALIB3.DOC        Detailed description of library functions
        TEMPLATE.ASM     Sample format for most programs
        COMMON.INC       Inputs for sample programs
        MAC.INC          Macros for sample programs
        LOAN.ASM         Sample program, computes loan parameters
        COMPRES.ASM      Sample program, compress a file
        RESTOR.ASM       Sample program, uncompress a file
        DISKINFO.ASM     Sample program to display DOS disk info.
        EDREC.ASM        Sample program & library utility (see file)
        HYPER.ASM        Sample program to demonstrate hyper text
        HYPER.DAT        Hyper text data for HYPER.EXE
        HYPER.EXE        Sample program and tutorial
        SCAN.ASM         Sample program to scan disk files
        SORT.ASM         Sample program to sort data in a file
        TIMER.ASM        Sample program to time code or programs
        MEMORY.ASM       Sample program to show memory status
        QUOTE.ASM        Sample program to display a random quote
        FILE_ID.DIZ      Short description for BBS usage

        What files help with understanding ALIB?

        Assembly language programmers can get started by looking at
        TEMPLATE.ASM and then using ALIB2.DOC, ALIB3.DOC and the sample
        programs as reference maternal.  Novice programmers should probably
        execute the sample program called HYPER and study the material,
        then study the sample programs, starting with TEMPLATE.ASM.  

        Is registration necessary?
        Registration of ALIB is not required for personal or
        commercial use.  However, ALIB will not grow and improve
        without some support.  If you have a useful piece of code
        or comment, please send it to the author for future updates.
                  Program and Manual by Jeff Owens
                       Owens Consulting, 24551 Metzler Park
                       Estacada Oregon  97023


        Can I distribute ALIB to others?

        You are free to distribute this program, provided that
        neither the program nor this document are changed, and the
        program and this document are kept together.  Only a
        marginal fee may be asked for shipment and handling when
        distributing.  You are not allowed to sell this program.

        What if problems occur?

        Problems?  What problems?  After two years of work no
        programmer wants to talk about problems.  But, the truth
        is that problems will occur.  Either the documentation
        will not be adequate, bugs will be found, or necessary
        features will be missing.  The answer to all these
        problems is the same, either discard ALIB or support it.
        My pledge is to support ALIB without any monetary gain as
        long as there is a reasonable interest level. 

        Legal disclaimer



        ALIB is definitely not for everyone.  If you are interested in
        graphic screens, buttons, etc. then look elsewhere.  This
        library is not for graphic applications.  On the other
        hand, lack of graphics greatly increases compatibility,
        speed, and reduces code size.

        ALIB is not designed to be accessed from other languages.
        It is possible, but not advised.  The use of registers,
        memory, and display all are designed as if ALIB is the
        main program.

        ALIB is not designed for use with TSR (Terminate and
        Stay Resident) programs.  Most of the functions will
        work with TSR's but those calling the memory manager
        will not function.
        And last but not least, the documentation for ALIB is
        very breif and does not explain some of the more complicated
        functions in sufficient detail for all audiences.

                          COMPRES & RESTOR


     COMPRES and RESTOR are sample program to show how huffman
     compression works.  Single files can be compressed by the
     COMPRES program, then decompressed by the RESTOR program.


     To compress a file type "COMPRES file1 file2".  The first
     file (file1) is the file to be compressed and the
     second file is what to call the result.  RESTOR works
     in the reverse.  "RESTOR file1 file2" will decompress
     file1 and put at file2.

     Compression Overview

     The compression/decompression engines are initiated with a
     pointer to two routines.  One routine will feed data to the
     engine and the other will store the output.  Next, one call
     to the compression entry point will continue compressing
     until the input (feed) routine runs out of data.

     Compression speed and size is respectable, but not competative
     with programs such as PKZIP and ARJ.  For most compression jobs
     of less than a megabyte the speed will be acceptable.



     DISKINFO displays information which DOS is using to manage
     disks.  It may be useful for debugging a disk problem, but
     will not be of interest to most programmers.

     Using DISKINFO

     DISKINFO does not have any parameters, and can be executed
     simply by typeing "DISKINFO"

                             LOAN Payments


     LOAN is a sample program to show how floating point math can
     be performed.  It will calculate a 12 month table showing
     what portions of payments go to principal and interest.

     Using LOAN

     To calculate the loan parameters, type "LOAN"<Enter> and
     enter the loan amount, principal, and interest.  The
     program will do the rest.

     Floating Point Overview

     LOAN operates by first allocating 8 floating variables.  Then,
     three of the variables are set to the payment amount, principal,
     and interest respectivly.  Each of the 8 allocated variables
     are referenced by a number or token.  The first variable is #1,
     the second #2 etc.  This makes it vary easy to add two variables
     by just saying add #1 to #2.  When, the calculations are done,
     they are extracted by calling "text_out" to convert from 
     floating point format to a printable ascii text string.

                         EDREC (Edit Records)


     EDREC is both a sample program and ALIB utility program.  Files
     created by EDREC use ALIB database format which is also used by
     hyper message and error displays.  This greatly simplifies the
     process of creating a file of error messages or help screens.

     Using EDREC

     EDREC can be started by typing EDREC or by typing EDREC followed
     with a file name.  If the file exists, EDREC will display the first
     record and wait for input.  If the file does not exist the record
     window will be blank.

     The data entered using EDREC is probably going to be displayed in
     a window someday, so the window size should be selected to make
     data entry easier.  The record window size is set by the "Config"
     menu option.

     After setting the window size, select "Edit" to add or modify
     Database Format

     EDREC creates records in a window which can be configured to any size.
     Each record is variable length and terminated by a null (hex 00 char).


     Sort disk file using the "merge sort" algorithm.

     Using sort
     SORT <file> <starting column> <length of sort field>

     SORT reads the given file, sorts the records using the specified
     column.  One line ending with cr/lf is assumed to be one record.
     Example:  To sort all TEST.DAT using columns 1-5.

               SORT test.dat 1 5


     Scan disk for string.

     Using newscan
     SCAN <files/path> <pattern>

     SCAN starts searching from the current directory and checks each
     each file which matches the <files/path> specification for the

     Example:  To scan all .ASM files in the current directory
               for include files:

                     SCAN *.asm include

               To scan all the files in the current and its subdirectories
               for include files:

                     SCAN *.* include             

     The <files/path> parameter applies to both files and subdirectories.
     Thus, if you type "SCAN X*.* include" it will look in the current
     directory and all subdirectories which begin with "X" for files
     which begin with "X"


     HYPER.ASM is intended to demonstrate a simple hyper database
     which describes ALIB.LIB use.

     Using HYPER.ASM

     The files HYPER.EXE and HYPER.DAT must be in the same directory.
     HYPER is started by typing "HYPER"<cr> without any parameters.


     QUOTE.ASM is intended to demonstrate calling a random generator
     and finding files located in same directory as executable.
     It will display a random quote each time it is called.

     Using QUOTE.ASM

     The files QUOTE.EXE and QUOTE.DAT must be in the same directory.
     QUOTE is started by typing "QUOTE"<cr> without any parameters.


     MEMORY.ASM display the memory information available from
     ALIB.  Include are the MCB chain, and the size of DOS,
     XMS, and EMS memory.


     TIMER is a sample program to show how the timer funcitons can
     be used.  The unmodified program will time the execution of
     programs, but it can be modified to time code segments.

     Using TIMER

     To time a program, type "TIMER <program name>"<Enter>
     TIMER will execute the program and display the elapsed
     time when the program exits.


The following information summaries ALIB functions.  Functions are grouped
into categories and then into modules.  The module is the smallest unit
which the linker can handle.  The category is for descriptive purposes.

                                                               Category  Module
                                                               --------  ------
SHRINK - compress data block, adaptive huffman                 compress shrink1
EXPAND - expand data back to original state, adaptive huffman  compress shrink1
COMPRESS - compress data block, limpel-ziev algorithm          compress shrink2
UNCOMPRESS - uncompress data block, limpel-ziev algorithm      compress shrink2

GET_SETUP - read setup file from disk & write initial file      config   config
CHANGE_SETUP - allow user to change setup configuration.        config   config
WRITE_SETUP - write setup block to disk file                    config   config
SET_LIB_COLORS - set a color for library use                    config   config

COMPARE1 - compare asciiz strings, use case, registers updated  compare compar1
COMPARE2 - compare strings cx=len, use case, registers restore  compare compar2
COMPARE3 - compare asciiz strings, use case, registers updated  compare compar3
COMPARE4 - compare strings cx=len, use case, registers restore  compare compar4
COMPARE5 - compare asciiz strings,  no case, registers updated  compare compar5
COMPARE6 - compare strings cx=len,  no case, registers restore  compare compar6
COMPARE7 - compare asciiz strings,  no case, registers updated  compare compar7
COMPARE8 - compare strings cx=len,  no case, registers restore  compare compar8
COMPARE9 - compare characters, ignore case (no case)            compare compar9
COMPAREF - compare files, using case                            compare comparf

BYTE_TO_DEC_STDOUT - convert byte to decimal ascii and output   convert  conv20
BYTE_TO_HEX_STDOUT - convert byte to hex ascii and output       convert  conv23
BYTE_TO_HEX_CRT - convert hex byte to ascii and display         convert  conv06
BYTE_TO_HEX_STR - convert hex byte to two ascii characters      convert  conv06
DEC_STR_TO_WORD - convert unsigned asciiz string to word        convert  conv25
DEC_STR_TO_DWORD - convert unsigned asciiz string to word       convert  conv24
DEC_STRZ_TO_DWORD - convert unsigned asciiz string to word      convert  conv24
DEC_STR1_TO_WORD - convert unsigned asciiz string to word       convert  conv10
DEC_STR1_TO_DWORD - convert unsigned asciiz string to dword     convert  conv14
DEC_STR2_TO_WORD - convert unsigned ascii string to word        convert  conv11
DEC_STR2_TO_DWORD - convert unsigned ascii string to dword      convert  conv15
DEC_STR3_TO_WORD - convert signed asciiz string to word         convert  conv12
DEC_STR3_TO_DWORD - convert signed asciiz string to dword       convert  conv16
DEC_STR4_TO_WORD - convert signed ascii string to word          convert  conv13
DEC_STR4_TO_DWORD - convert signed ascii string to dword        convert  conv17
DWORD_TO_DEC_STRX - convert dword to decimal ascii & format     convert  conv07
DWORD_TO_DEC_CRTX - convert dword to decimal ascii and display  convert  conv07
DWORD_TO_DEC_STR - convert dword value and save in memory       convert  conv03
DWORD_TO_DEC_STDOUT - convert dword value to decimal and output convert  conv22
DWORD_TO_HEX_STR - convert hex double word to ascii             convert  conv06
DWORD_TO_HEX_CRT - convert hex double word to ascii and display convert  conv06
DWORD_TO_HEX_STDOUT - convert dword value to hex and output     convert  conv23
HEX_STR_TO_BYTE - convert 2 hex ascii characters to 1 hex byte  convert  conv05
HEX_STR_TO_WORD - convert 4 hex ascii characters to 2 hex bytes convert  conv05
WORD_TO_DEC_STR - convert an integer value to an ASCIIZ string  convert  conv04
WORD_TO_DEC_CRT - display integer as decimal value              convert  conv04
WORD_TO_DEC_STDOUT - convert word to decimal ascii and output   convert  conv21
WORD_TO_HEX_STR - convert hex word to four ascii characters     convert  conv06
WORD_TO_HEX_CRT - convert hex word to ascii and display         convert  conv06
WORD_TO_HEX_STDOUT - convert hex word to ascii and output       convert  conv23

DBASE_INIT  - initialize a database for use                     database dbase
DBASE_READ - read specific record from the database             database dbase
DBASE_READ_NEXT - read next sequential record                   database dbase
DBASE_READ_PREV - read previous record                          database dbase
DBASE_APPEND - append this record to end                        database dbase
DBASE_INSERT - insert this record before specific record        database dbase
DBASE_REPLACE - replace data for a specific record              database dbase
DBASE_REMOVE - delete specific record                           database dbase
DBASE_CLOSE - close & write any pending data to file            database dbase
DBASE_KILL - delete dbase file                                  database dbase

FILE_COPY - copy a file                                         disk     disk1
FILE_SIZE1 - find an open file's size                           disk     disk2
FILE_SIZE2 - find a closed file's size                          disk     disk2
FILE_COUNT - counts the number of files matching a filespec     disk     disk3
FILE_FLUSH - flushes the DOS output buffer for specified handle disk     disk4
FILE_EXIST - determines if a file exists and can be opened      disk     disk8
EXPAND_FILENAME - Expand a file string to the full path         disk     disk9
DECODE_FILENAME - build pointers to major portions of file name disk     diska
FIND_HOME_PATH - get executing programs disk location           disk     diskb
INSERT_HOME_PATH - build path to reach data                     disk     diskg
GET_PATH - finds paths in program environment                   disk     diskc
CHANGE_PATH - switch to new directory, save current path first  disk     diskd
RESTORE_PATH - switch to directory saved by CHANGE_PATH         disk     diskd
WALK_PATH - provide files matching pattern for processing       disk     diske
DiskWrite_open - open disk file for buffer write                disk     diskf
DiskWrite_buffer - open disk file for buffer write              disk     diskf
DiskWrite_close - close disk file used for buffer write         disk     diskf

PUT_CRT_CHR - display single character                          display  crt1
GET_CRT_CHR - read character and attribute from text screen     display  crt1
REPEAT_PUT_CRT - displays a single char CX times                display  crt1
PUT_CRT_BLK - copies a string to video memory buffer            display  crt2
VERTICAL_REPEAT_CHR - repeat columns of a character vertically  display  crt2
TABULAR_DRAW - Subroutine to draw using a table                 display  crt3
CLEAR_SCREEN - fill screen with specified character and color   display  crt4
DISPLAY_STRING - display string directly to video buffer        display  crt4
DISPLAY_STRING_FILL - display string at specified position      display  crt4
DISPLAY_STRING_LIST -  display a list of strings                display  crt4
CLEAR_WINDOW - fill a rectangular area of screen                display  crt5
DRAW_BOX - draw a box on screen                                 display  crt5
WINDOW_STRING - display string in a window, handles cr/lf       display  crt5
BOX_RIGHT - move box parameters right                           display  crt5
BOX_LEFT -  move box parameters left                            display  crt5
BOX_UP - move box parameters up one position                    display  crt5
BOX_DOWN - move box parameters down one position                display  crt5
BOX_EXPAND - expand box one position in all directions          display  crt5
BOX_SHRINK - shrink box parameters one position                 display  crt5
GET_ANSI_COLOR - find color attribute used by ANSI driver       display  crt6
CURSOR_ - like SHOW_CURSOR, but the underscore cursor is used   display  crt6
SHOW_CURSOR - move cursor to (row, col) and update cursor shape display  crt6
HIDE_CURSOR - make hardware cursor invisible                    display  crt6
BLINK_ON - enable blinking attributes                           display  crt6
BLINK_OFF - disable blinking attributes                         display  crt6
SAVE_WINDOW - save area of display in memory buffer             display  crt7
RESTORE_WINDOW - restore a previously saved area of display     display  crt7
DISK_TO_CRT - loads a screen image file saved by CRT_TO_DISK    display  crt8
CRT_TO_DISK - saves a screen image to disk                      display  crt8
POSN_TO_ADR - library internal usage only                       display  crt9
ADR_TO_POSN - library internal usage only                       display  crt9

LIB_ERROR_HANDLER1 - pre definded errors in a window            error    error1
ERROR_HANDLER1 - text in memory displayed in window             error    error1
ERROR_PRIME1 - setup error handler for window display           error    error2
ERROR_TABLE_HANDLER1 - windowed error messages from table       error    error2
ERROR_FILE_HANDLER1 - windowed error messages from file         error    error2
LIB_ERROR_HANDLER2 - pre defined errors to stdout               error    error3
ERROR_HANDLER2 - general stdout error handling                  error    error3
ERROR_PRIME2 - setup for ERROR_TABLE_HANDLER2                   error    error4
ERROR_TABLE_HANDLER2 - errors from table to stdout              error    error4

FLOAT_OPEN - open the floating point module & hardware for use  float    float1
FLOAT_CLOSE - release the memory allocated by FLOAT_OPEN        float    float1
BINARY_IN - double word binary to floating format               float    float2
BINARY_OUT - floating format to double word binary              float    float2
FMOVE - move floating point token variables                     float    float2
F_SUBTRACT - floating point subtract                            float    float2
F_ADDITION - floating point addition                            float    float2
F_COMP - floating point compare                                 float    float2
F_MULTIPLY - floating point multiply                            float    float2
F_DIVIDE - floating point divide                                float    float2
ROUND - round floating number to two decimal points             float    float2
TEXT_OUT - floating point to ascii conversion                   float    float2
TEXT_IN - ascii to floating point conversion                    float    float2
FLOAT_SET - enable/disable hardware (not used at present)       float    float2

DMUL_10_PLUS - multiply times ten & add value                   math     math01
DWORD_NEGATE - negate dwouble word                              math     math02
DWORD_DIVIDE - divide dword by word                             math     math02
DWORD_ADD    - add two double words                             math     math02
DWORD_SUB    - subtract two dwords                              math     math02
DWORD_MUL    - multiply two dwords                              math     math02
WORD_CRC1 - undate CRC word sum for next byte                   math     math07
WORD_CRC2 - fast 16bit CRC for a buffer of data                 math     math07
DWORD_CRC    - compute 32 bit crc                               math     math03
WORD_SQROOT  - compute square root of word value                math     math04
DWORD_COMPARE - unsigned 32 bit number compare                  math     math05
QUAD_MULTIPLY1 - multiply two dwords                            math     math05
QUAD_MULTIPLY2 - multiply two 32 bit unsigned numbers           math     math05
QUAD_DIVIDE - divide quad value by dword                        math     math05
BLOCK_ADD     Add two values in memory                          math     math06
BLOCK_NEGATE - negate block in memory                           math     math06
BLOCK_SUBTRACT - subtract two data blocks in memory             math     math06
BLOCK_DIVIDE - divide two variable blocks in memory             math     math06
BLOCK_MULTIPLY - multiply of two block in memory                math     math06

MEM_OPEN     - interrogate memory and setup database.           memory  memory1
MEM_ALLOCATE - allocate a block of memory.                      memory  memory1
MEM_PUT      - write to allocated memory area.                  memory  memory1
MEM_GET      - read from allocated memory area.                 memory  memory1
MEM_RELEASE  - release allocated memory block.                  memory  memory1
MEM_CLOSE    - close memory handler.                            memory  memory1
DOS_MEM_ALLOCATE - allocate dos memory for direct writes        memory  memory1
DOS_MEM_RELEASE - release DOS_MEM_ALLOCATE memory               memory  memory1

CMOS_TYPE - check cmos type                                     memory  memory2
CMOS_CHECKSUM - checksum a block of cmos memory                 memory  memory2
CMOS_READ_BYTE - read one char from cmos memory                 memory  memory2
CMOS_READ_WORD - read one word from cmos memory                 memory  memory2
CMOS_READ_BLOCK - read block of data from cmos memory           memory  memory2
CMOS_WRITE_BYTE - write one char to cmos memory                 memory  memory2
CMOS_WRITE_WORD - write one word to cmos memory                 memory  memory2
CMOS_WRITE_BLOCK - write block of data to cmos memory           memory  memory2

MCB_FIND_FIRST - scan for start of MCB chain                    memory  memory3
MCB_FIND_NEXT - scan for next MCB entry                         memory  memory3
MCB_CHECK_NAME - compare current MCB name against list of names memory  memroy3
MCB_FIND_NAME - scan current mcb to see if name is present      memory  memory3
MCB_DISPLAY_NAME - display program name if present              memory  memory3

CHECK_DOS_MEMORY - check DOS memory size and amount available   memory  memory4
XMS_CHECK - check XMS memory size and amount available          memory  memory5
XMS_UMB_CHECK - check if UMB area allocated by XMS driver       memory  memory5
XMS_ALLOCATE - allocate xms memory                              memory  memory5
XMS_READ - read XMS memory block                                memory  memory5
XMS_WRITE - write block of data to XMS memory                   memory  memory5
XMS_RELEASE - release current XMS memory block                  memory  memory5
EMS_CHECK - detects EMS driver                                  memory  memory6
EMS_ALLOCATE - allocate EMS memory                              memroy  memory6
EMS_PAGE - request page of ems memory                           memory  memory6
EMS_RELEASE - release allocated ems memory                      memory  memory6
EXT_CHECK - check if EXT memory is present                      memory  memory7
EXT_READ - read block of ext memory                             memory  memory8
EXT_WRITE - write to EXT memory                                 memory  memory8

MENU_SYSTEM - Menu bar display and decode of user selection     menu   puldown1
QMENU_SYSTEM - Quick pull down menu bar                         menu   puldown2

MESSAGE - boxed message display                                message   msg1
QMESSAGE - Quick message display (msg in file)                 message   msg3
QWARN - Quick message display (msg in mem)                     message   msg3

BIT_COUNT - count bits in -al-                                  misc     misc1
REGISTER_DUMP - dump registers for debugging                    misc     misc2
STACK_DUMP - dump stack for debugging                           misc     misc2
A20_CHECK - check if A20 line is active                         misc     misc3
A20_WRAP_OFF - check if A20 line is active                      misc     misc3
A20_WRAP_ON - check if A20 line is active                       misc     misc3
SEG_TO_ABS - convert segment:offset to absolute address         misc     misc3

IS_ALPHA - determines if a key from KEY_READ alpha char        mouse/key mkey01
IS_TEXT  - determines if key from KEY_READ is 20h-7eh or tab   mouse/key mkey01
IS_DIGIT - determines if a key from KEY_READ is number         mouse/key mkey02
IS_LOWER - determine if a key from KEY_READ is lower case      mouse/key mkey03
IS_UPPER - determine if a key from KEY_READ is upper case      mouse/key mkey04
TO_UPPER - converts keycode returned by KEY_READ to upper case mouse/key mkey05
TO_LOWER - converts keycode returned by KEY_READ to lower case mouse/key mkey06
IS_STDOUT_CONSOLE - check if stdout is redirected              mouse/key mkey19
CAPS_ON - keyboard capslock key enabled                        mouse/key mkey07
NUMLOCK_ON  - keyboard numlock key enabled                     mouse/key mkey07
SCROLL_ON - keyboard scroll lock key enabled                   mouse/key mkey07
INSERT_OFF - keyboard insert key disabled                      mouse/key mkey07
CAPS_OFF - keyboard capslock key disabled                      mouse/key mkey07
NUMLOCK_OFF - keyboard numlock key disabled                    mouse/key mkey07
SCROLL_OFF - keyboard scroll lock key disabled                 mouse/key mkey07
YES_OR_NO - wait for yes or no user response                   mouse/key mkey08
FLUSH_KEYBOARD - clears the keyboard's 'type-ahead' buffer     mouse/key mkey09
KEY_CHECK - determines if a key is waiting                     mouse/key mkey09
KEY_READ - returns next key pressed                            mouse/key mkey09
KEY_PUT - put key back into BIOS buffer                        mouse/key mkey10
KEY_IF_READY - Returns key if one is waiting                   mouse/key mkey11
SETUP_MOUSE - initializes mouse if present                     mouse/key mkey12
MOUSE_PARMS - determine mouse position & buttons pressed       mouse/key mkey12
KEY_OR_MOUSE - waits for keypress or mouse button click        mouse/key mkey13
MOVE_MOUSE - position the mouse cursor                         mouse/key mkey14
BOX_THE_MOUSE - limits mouse's range of motion                 mouse/key mkey15
MOUSE_CURSOR_ON - enable the mouse cursor at BIOS level        mouse/key mkey15
MOUSE_CURSOR_OFF - disable the mouse cursor at BIOS level      mouse/key mkey15
GET_STRING - read string from the keyboard.                    mouse/key mkey16
KEY_DECODE - analyze key and select processing                 mouse/key mkey16
QGET_STRING - Quick call to get string & return when done      mouse/key mkey16
window_edit - edit text within window                          mouse/key mkey17
window_cstring - display text with hyper formatting            mouse/key mkey17

RANDOM_BYTE1 - generate random byte value                      random   random3
RANDOM_DWORD1 - generate random dword value                    random   random4
RANDOM_WORD1 - generate random word value, using method 1      random   random1
RANDOM_WORD2 -  generate random word value, using method 2     random   random2
RANDOM_WORD3 - generate random word value, using method 3      random   random5
RANDOM_WORD4 - generate random word value, method 4            random   random6
RANDOM_WORD4_SCALED - random number within a specific range    random   random6
RANDOM_WORD5 - generate random word value, method 5            random   random7
SCALE - scale word value                                       random   random7
RANDOM_SEED - get low clock value for us as random number      random   random8

PARSE_FIRST - parse first argument from command line            parse    parse
PARSE_NEXT - parse next command line parameter                  parse    parse

SCAN_BLOCK_TINY1 - scan buffers for string, case match          search   scan01
SCAN_BLOCK_TINY2 - scan buffers for string, match either case   search   scan02
SCAN_BLOCK1 - scan buffers for string, match case               search   scan03
SCAN_BLOCK2 - scan buffers for string, match either case        search   scan04
SCAN_BLOCK_FOPEN - initialize fast scan of sequential buffers   search   scan05
SCAN_BLOCK_FCLOSE - terminate fast scan sequential buffers      search   scan05
SCAN_BLOCK_FAST - fast scan of sequential buffers for string    search   scan05
BUFFER_SEARCH - search string1 for the first string2            search   scan16
BUFFER_SEACHC - search a buffer for the first of a string       search   scan16
SCAN_CHAR1 - scan asciiz buffer for character, case match       search   scan06
SCAN_CHAR2 - scan asciiz buffer for char, match either case     search   scan07
SCAN_CHAR3 - scan  buffer for character, case match             search   scan08
SCAN_CHAR4 - scan buffer for character, match either case       search   scan09
SCAN_LAST_CHAR1 - scan asciiz string for last match, case match search   scan10
SCAN_LAST_CHAR2 - scan asciiz buffer for last occurance of char search   scan11
SCAN_LAST_CHAR3 - scan  buffer for last char match, case match  search   scan12
SCAN_LAST_CHAR4 - scan buffer for last match, match either case search   scan13
SCAN_LAST_STR1 -  find last match of str in buffer, case match  search   scan14
LAST_CHAR - find last char in block                             search   scan15
LAST_CHARC - find last char in block                            search   scan15

BUBBLE_SORT_BUFFER - bubble sort of buffer in memory             sort    sort30
BUBBLE_SORT_FILE - bubble sort of file                           sort    sort31
BUBBLE_SORT_ARRAYW - bubble sort array of word integers          sort    sort33
BUBBLE_SORT_ARRAYD - bubble sort array of double words           sort    sort34
MERGE_SORT_BUFFER - merge sort of buffer in memory               sort    sort20
MERGE_SORT_FILE - merge sort of file                             sort    sort21
MERGE_SORT_ARRAYW - merge sort array of words                    sort    sort23
MERGE_SORT_ARRAYD - merge sort array of double words             sort    sort24
SELECTION_SORT_BUFFER - selection sort of buffer in memory       sort    sort10
SELECTION_SORT_FILE - selection sort of file                     sort    sort11
SELECTION_SORT_ARRAYW - selection sort of array of words         sort    sort13

SOUND_ON - enable sounds on speaker from BEEP or ONE_BEEP       sound    sound1
SOUND_OFF - disable sounds on speaker from BEEP or ONE_BEEP     sound    sound1
ONE_BEEP - beep once                                            sound    sound2
MAKE_SOUND make sound for number of milliseconds.               sound    sound2

STRLEN1 - finds length of an ASCIIZ string in DS:SI             string   str01
STRLEN2 - finds length of an ASCIIZ string in DS:DI             string   str01
STRLEN3 - finds length of an ASCIIZ string in DS:BX             string   str01
LEGAL_CHAR_CHECK - scan target string for legal characters      string   str08
ILLEGAL_CHAR_CHECK - scan target string for illegal characters  string   str09
STR_UPPER - change lower-case characters to upper case          string   str16
STR_UPPERC - changes lower-case characters in n-length string   string   str17
STR_LOWER - changes bytes of a string to lower case             string   str19
STR_LOWERC - changes n bytes of a string to lower case          string   str20
STR_CENTER - centers a string in a fixed field                  string   str21
STR_LEFT - left-justifies a string in a fixed field             string   str22
STR_RIGHT - right-justifies a string in a fixed field           string   str23
STR_CLEANL - remove leading blanks from an ASCIIZ string        string   str24
STR_CLEANR - removes trailing blanks from an ASCIIZ string      string   str25
STR_REMOVE - remove all occurrences of a character from string  string   str26
STR_CHAR_DEL - deletes a character from a string                string   str27
STR_CHAR_DELC - deletes a character from string of known length string   str27
STR_REVERSE - reverses all characters in a string               string   str28
STR_REVERSEC - reverses n characters in a string                string   str28
STR_SWAP - swaps strings or portion of strings                  string   str29
STR_CLEAN - sets all bytes of string to a specified character   string   str30
STR_CLEANC - sets n bytes of string to a specified character    string   str30
STR_JOIN - appends string2 at end of string1                    string   str31
STR_INSERT - inserts string2 in string1 at specified offset.    string   str32
STR_INSERTC - inserts string2 in string1 at specified offset.   string   str32
STR_COPY - copy an ASCIIZ string to existing buffer             string   str33
STR_COPYC - copy CX bytes to an existing buffer                 string   str33

STDOUT_CHAR - put character to stdout                           stdout  stdout01
STDOUT_STRING - put asciiz string to stdout                     stdout  stdout01
STDOUT_CRLF   - put new line to stdout                          stdout  stdout01
STDOUT_SPACES - put spaces to stdout                            stdout  stdout01

LIBRARY_SETUP - setup library for use                           system   sys1
LIBRARY_TERMINATE - close out library for program exit          system   sys1
FIND_CPU_TYPE - detects cpu type                                system   sys1
MATH_HARDWARE - determines if 80x87 math coprocessor present    system   sys1
KEYBOARD_SETUP - determine type of keyboard attached            system   sys1
FIND_MOUSE - determines if a mouse is installed                 system   sys1
CHECK_ANSI - determines if ANSI is present                      system   sys1
DISPLAY_INFO - analyze display type and return parameters       system   sys1
DETECTVID -  determine display type                             system   sys1
FIND_DISPLAY_SEGMENT - scan for current display buffer segment  system   sys1
SPAWN_DOS - execute a second copy of DOS and application        system   sys2
COUNT_FLOP_DRIVES - determine the number of floppy drives       system   sys3
GET_DRV_TYPE - determine drive type                             system   sys3
BREAK_KEY_INTERCEPT - initialize Ctrl+Break trap                system   sys4
BREAK_KEY_RESTORE - restore previous Ctrl+Break handler         system   sys4
BREAK_CHECK -  check if break key pressed                       system   sys4

DAYS_TO_DATE - date for a given number of days since 1-1-1980   time     time1
MONTH_TO_ASCII - get ASCII string for specified month           time     time2
DAY_TO_ASCII - get ASCII string for specified day               time     time2
GET_TIME - get the current system time.                         time     time3
ASC_TIME: Creates an ASCIIZ time string of the form HH:MM Xm.   time     time3
GET_DATE - get the current system date and day of the week      time     time4
GET_DAY - get the day of the week for a given date.             time     time4
ASC_DATE - Creates an ASCIIZ date string of the form MM/DD/YY   time     time5
DATE_TO_DAYS - get days between Jan 1, 1980 and a given date    time     time6
START_TIMER - start high resolution timer                       time     time7
read_timer - read  high resolution timer                        time     time7
CONVERT_TIMER - convert timer ticks to seconds and microsecond  time     time7
DISPLAY_TIMER - display timer values to stdout                  time     time7
CALIBRATE_TIMER - calibrate timer                               time     time7

      ALIB Overview

        ALIB functions were written assuming a memory manager
        is present and that information about the system they
        are executing on is available.  This allows the code
        to make efficient use of memory, and avoids redundant
        system interrogation.  For example, the display 
        routines know the display mode, where display memory
        is located, and what colors the user prefers.  

        The information needed to run any program is supplied
        by the routine LIBRARY_SETUP.  This function needs to
        be at the start of every program, and LIBRARY_TERMINATE
        needs to be at the end.  Now the programmer can save
        display data to a buffer with ease.  The library knows
        where display memory is located, and it can allocate a
        buffer to hold the data.  The programmer simply calls
        SAVE_WINDOW, and eventually RESTORE_WINDOW to put the data
        back on the display.  This allows very complex library
        functions and very efficient use of memory.  Of course, it
        also has a few restrictions.  Programs must be in a fairly
        standard form.  The file TEMPLATE.ASM is a sample of the
        form needed.  Additionally, their are numerous sample
        programs which also show the form needed.

Tell a friend
Bookmark and Share

Similar Articles

The FREE Assembly Language Library
(by Tenie Remmel) General 3D math functions
A library with many math functions for 3d graphics
(by John McCarthy)

 Tags: asm library

webmaster jes
writers rguru, tech-g, aiguru, drAx

site optimized for IE/Firefox/Chrome with 1024x768 resolution

Valid HTML 4.01 Transitional


hosting&web -

find rguru on
... send an email ...
Your name

Destination email


captcha! Code