[Lissner BBS FILE 7]

; Book SubHost contains many of the host routines.

SMCountAvail

; SMCountAvail returns accum with count of K-bytes
; still available in the pool

SMGetCell

; SMGetCell returns Newstr with the contents of a specific cell of a specific
; record.  This routine should try to be fast.
;  1.  Address (bank pointer) for this record
;  2.  In accum, category, or column, number
;  Returns Newstr with contents of area
;  Returns true or false whether Newstr has anything


SMGetBlock

; SMGetBlock is gets a block of information from memory pool
; 1.  Address of a bank pointer
; 2.  Where it goes in work area. (Actual)
;     CArg is returned with number of bytes gotten.


SMGetStrings

; SMGetStrings loads work area with string data, and CRSPT with the
; addresses of these various strings.  Accum has number of fields
; wanted.  If data has too many strings, ignore remainder.  If data
; has too few, fill the remaining pointers with zeroes.  Data ends
; with FF byte
; 1.  Address of a bank pointer
; 2.  Where the pointers go (Actual)
; 3.  Where the strings go (Actual)



SMPutBlock

; SMPutBlock puts a block into the memory pool.  If possible, uses previous
; address in pool.  Otherwise releases the previous address.
; 1.  Address of a bank pointer
; 2.  Address of area to store (Actual)
; 3.  Length (bytes) of area to store: CArg
; Returns:  New address in pool in whereever parm 1 points
; Returns:  True or false, able to do it.
; This ain't gonna be fun on the //e.


SMPutCell

; SMPutCell replaces the contents of a specific cell.  This is used only
; by the spread sheet, during recalculation and adjust entries
;  1.  Address (bank pointer) for this record
;  2.  In accum, column, number
;  3.  Newstr must have new data for cell.  It must be the same length
;      as the current contents of the cell.


SMPutStrings

; SMPutStrings puts string data into the memory pool.  # of fields in accum.
; If possible, uses previous address in pool.  Otherwise releases the
; previous address.
; 1.  Address of a bank pointer
; 2.  Address of pointers (Actual)
; Returns:  New address in pool in whereever parm 1 points
; Returns: True or false in accum; 
; fun, o fun, on the //e.


SMRelBlock

; SMRelBlock releases a block. 
; 1.  Address of a bank pointer
; Since the address is no longer valid, it is cleared.


SMReturnSize


; SMReturnSize returns CArg containing the number of bytes of real data
; for the specified area.
; 1.  Address of a bank pointer


ReleaseKB

; ReleaseKB goes through the klipboard and frees up any memory that is
; in use.  Watch out for D0 or more in second byte, means Typewriter
; formatting, not bank switched address.



Conv1TDec

; Conv1TDec converts accum to 'xx.x inches'  in Newstr.  
                
                
DispEsc
                
; Routine to display Escape situation, and help info


DispFE

; Routine to display function (centered, top line of screen) and escape map

DispFR

; Routine to display file name, if any, on top left line of screen
                
DivWord

; Routine to Divide two words.  Addresses follow the JSR DivWord
; Args: A (First)  divided by A(second), Result in MReg

GetStr

; Routine to read a string.  Max Length is in Accum.  
; Returns FoundEscape,FouncCommand,FoundReturn

GetMenuBar

; This is quite a little routine to do inversed menu bars.  Let the
; user select an item by typing its NUMBER, or pressing return
; when the item is highlighted.  Use arrows to move highlighting.
; MBP means Menu Bar processing.  Upon exit, capitalize the select one.
; Following comes from call
MBPEscape       .Word                   ; Where to go if escape hit
MBPCount        .Byte                   ; Number of params
MBPOptData      .Word                   ; Addr of description
MBPOptRtn       .Word                   ; Routine to process this opt.
                .Block          28.     ; 7 more options.
                .Block          5       ; Buffer space.
                
                
GetDec
                
; Routine to get a number between 0 and 25.6.  Pack into one byte (accum)


GetNum
                
; Routine to get a number.  Accum has maximum permissible value.  Returns
; in accum.  Zero means that escape was found.

GetYN

Uses menu bar routines to get a yes or no.  Zero in accum means escape.,

POS

; Routine to find position of first string in second string
; First string must be upper case, second can be upper/lower.
; It will match upper against lower, etc. and still find equal.
; Stolen from Leventhal Page 357.  Improved as needed
; Accum has (starting position-1)  in second string--usually zero


STR

; Routine to convert a two-byte integer  into printable.
; Result in Newstr, left jusified.  Length of Newstr is from 1 to 5,
; depending on the number of significant digits
; Watch it, it is tricky and fast and tight

UndoHelp

; Routine to undo the help on screen.  Puts K available on screen


VerifyDelete

VerifyDelete puts a box on the screen warning the user that something
big is about to be killed.  Asks for a yes/no response.

