Category : Assembly Language Source Code
Archive   : ASMLIB35.ZIP
Filename : SOURCE.DOC

 
Output of file : SOURCE.DOC contained in archive : ASMLIB35.ZIP
SOURCE.DOC Copyright (C) 1992, 1993 Douglas Herr þ all rights reserved

ASMLIB uses a number of subroutines which are not applicable to general
programming. These subroutines include "$" in their names. All "$"
subroutines require a near call, so the calling program must be in the same
segment as the called subroutine. The segment names used by ASMLIB are:

asmtiny: _TEXT (assumes CS:DGROUP, DS:DGROUP)
asmsmall: _TEXT (assumes CS:_TEXT, DS:DGROUP)
asmlib: _MEDIUM (assumes CS:_MEDIUM, DS:DGROUP)
asmhuge: _HUGE (assumes CS:_HUGE, DS:DGROUP)


°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°

$emspage: position logical EMS page at page frame
source: $emspage.asm

Call with: DS:[BX] pointing to 4-byte offset into allocated EMS block
DX = EMS handle
Returns: if CF = 0, no error
if CF = 1, AH = error code
Uses: AX, flags

°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°

$fget: read more data into file buffer
Source: $fget.asm

Call with: BX = file handle
ES = buffer segment address
Returns: if CF = 1, AX = DOS error code
Uses: AX, DX, SI, DS, flags

°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°

$handle: verify handle for buffered file I/O
Source: fopen.asm

Call with: BX = file handle
ASSUMES DS:DGROUP
Returns: if CF = 0, SI points to file handle in ASMLIB buffer data area
segment address of buffer associated with this handle
at 2[SI]
if CF = 1, handle in BX not managed by ASMLIB buffer system
Uses: SI, flags

°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°

a$putw: module used by several ASMLIB text subroutines to copy
a character/attribute pair to a window of the screen;
includes snow control logic for CGA systems.
Source: a$putw.asm

Call with: CX = column width of window
DX = 0 to disable snow control
= 3DAh to enable snow control
SI = row height of window
ES:[DI] points to video buffer
AL = character
AH = color attribute
BX = bytes per screen row (80-column screen has 160 bytes per row)
DF = 0 (clear direction flag with CLD)
Uses: DI, SI, flags


°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°

a$paint: used to change color of the screen; used by Paint and
WPaint subroutines. Includes snow control logic for CGA
systems.
Source: a$paint.asm



°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°

a$recolor: used to change color of the screen; used by ReColor and
WReColor subroutines. Includes snow control logic for CGA
systems.
Source: a$recolor.asm


°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°

a$wdata: parameter manager for ASMLIB's Window subroutines.
Source: a$wdata.asm (crtinfo.asm)

Detailed parameter requirements and output listed in
source code; do not call this subroutine unless you know
what you're doing.


°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°

$gpick: select string from fixed-field string block; graph mode
source: $gpick.asm (heap.asm, strncpy.asm, drawbox.asm, fillbox.asm,
gprint.asm, dosalloc.asm, bitblock.asm, bbbytes.asm,
strlen.asm, gcolor.asm, a$menu.asm, $graph.asm, m$input.asm,
v$extkey.asm, m$chrn.asm, m$nkey.asm)

call with: ES = segment address of string list
AX = number of strings
CX = field size
BX = initial choice
DS:[DX] pointing to initial coordinates
assumes DS:DGROUP
returns: AX = returning keycode
BX = returned selection number
uses: AX, BX, CX, DX, SI, DI, flags

°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°

$herc: detects Hercules-compatible equipment; does not determine
if Hercules equipment is the default monitor (see IsHerc)
Source: $herc.asm

Call with: no parameters; NEAR CALL REQUIRED
Returns: if CF = 1, no Hercules-compatible equipment installed
if CF = 0, AX = Hercules model
128 = Hercules Graphics Card or compatible
144 = Hercules Graphics Card Plus
208 = Hercules InColor card
Uses: AX, flags


°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°

$strstr: string search module used by several ASMLIB subroutines
Source: $strstr.asm

Call with: ES:[DI] -> search string, DS:[SI] -> substring
BX = substring length, DX = search string length
NEAR CALL REQUIRED
Returns: CF = 1, AX = -1 if no match
AX = match offset
Uses: AX, BX, CX, DX, SI, DI, flags



°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°

$wcopy: copies word data from one portion of memory to another;
includes snow control logic for CGA systems.
Source: $wcopy.asm

Call with: CX = words to copy
DS:[SI] -> source
ES:[DI] -> destination
DX = CRTC status port if CGA, else 0
DF = 0 or 1
Returns: ES:[DI] pointing past end of destination
DS:[SI] pointing past end of block
CX = 0
Uses: AX, CX, DI, SI, flags
Called by: WSave, WRestore, GetScreen, PutScreen, TCopy, VScroll, HScroll


°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°

m$putwindow: save screen, clear window & print window frame
Source: m$putw.asm (wsize.asm, wsave.asm, dosalloc.asm, wframe.asm,
wclear.asm)

Call with: DS:[BX] pointing to window corner data
Returns: ES = segment address of saved screen area
Uses: ES, flags
Called by: PICKSTR


°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°

$strlist: copy group of ASCIIZ strings to block of fixed-length strings
source: $strlist.asm (dosalloc.asm, strlen.asm, m$count.asm)

Call with: DS:[SI] pointing to first string to copy
string group terminated with double NUL
requires sufficient free DOS memory

Returns: if CF = 1, insufficient DOS memory available
if CF = 0:
ES = base segment address of string block
AX = number of strings
CX = string field size
Uses: AX, CX, ES, flags
Called by: PICKSTR, GPICKSTR


°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°

m$count: counts a group of ASCIIZ strings
Source: m$count.asm (strlen.asm)

Call with: DS:[BX] pointing to first string
string group terminated with double NUL
Returns: AX = number of strings
CX = length of longest string counted
Uses: AX, BX, CX, flags
Called by: PICKSTR, PULLDOWN


°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°

m$nkey: process normal keystroke for menu subroutines
Source: m$nkey.asm (isupper.asm, m$chr.asm)

Call with: AL = key code
BX = initial cursor position
CX = field width
DX = number of menu choices
ES:[DI] pointing to first menu choice
Returns: BX = output position
if CF = 0, found matching character
if CF = 1, no match
Uses: AX, BX, CX, DX, DI, flags
Called by: $pick


°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°

m$chr: determines if a keycode is the first uppercase character
in a string
Source: m$chr.asm (strlen.asm)

Call with: AX = keycode
DS:[BX] pointing to string
Returns: if CF = 1, string length = 0
if CF = 0:
CX = 0 if no upper case characters in the string
if CX <> 0, AH = first UCASE character
ZF = 1 if character is first ucase in string
DS:[BX] points to first ucase character
Uses: AX, BX, CX, flags
Called by: $pick, PULLDOWN


°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°

$listwindow: calculates window dimensions for input list; adjusts
upper left corner coordinates if required to fit on screen
Source: $listw.asm (crtinfo.asm)

Call with: DS:[BX] pointing to 8-byte data area for window corner data
AX = number of choices in list
CX = list field width
DH = desired first screen row for list
DL = desired first column for list
$listwindow assumes that DH < total screen rows
Returns: DH = adjusted first row for $pick
DL = adjusted first column for $pick
8 bytes at DS:[BX] are updated with window corner coordinates
for WSave, WFrame, WRestore, etc.
Uses: DX; all other registers and flags are saved
Called by: PICKSTR, PICKFILE


°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°

$pick: select one string from a list of fixed-length strings
Source: $pick.asm (crtinfo.asm, str2vbuf.asm, a$putw.asm, m$input.asm,
m$chr.asm, m$nkey.asm, a$menu.asm, v$extkey.asm))

Call with: ES:[DI] pointing to list of choices
AX = number of menu choices
CX = field width
BX = initial cursor position
DH = top screen row
DL = left screen column
Returns to calling program when Esc, Enter or ^C pressed

Returns: if BreakTrap enabled:
if CF = 1, ^C or ^Break was pressed
AX = last key pressed (AX = 3 if ^C pressed)
BX = string number selected (first string = 0)
Uses: AX, BX, CF
Called by: PICKSTR, PICKFILE

°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°

v$extkey: extended keycode processor for ASMLIB vertical list menus
(text and graph modes)
Source: v$extkey.asm

Call with: AL = low word of ASMLIB extended key code
[bp-2] = field width of string list
[bp-4] = number of choices
[bp-6] = current choice
[bp-8] = first string to print (for scrolling if required)
[bp-10] = number of strings to print
( = number of choices if no scrolling required)

Returns: if CF = 0, modifies [bp-6] and [bp-8]
if CF = 1, keycode not a valid cursor movement key
valid keys: Up, Down, Home, End, PgUp, PgDown

Uses: AX, flags
Called by: $pick, $gpick


  3 Responses to “Category : Assembly Language Source Code
Archive   : ASMLIB35.ZIP
Filename : SOURCE.DOC

  1. Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!

  2. This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.

  3. But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: http://www.os2museum.com/wp/mtswslnk/