home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 8 / FreshFishVol8-CD2.bin / bbs / dev / ssl-4.1.lha / SSL / SS.i < prev    next >
Text File  |  1994-06-03  |  14KB  |  414 lines

  1. ; The Special Support Library
  2. ; (c) 1993,1994 Martin Mares, MJSoft System Software
  3. ; --------------------------------------------------------------------------
  4.  
  5. ; Fields marked with 'R' are read-only, 'P' are private...
  6.  
  7. ; Library Version
  8.  
  9. SSVer    equ    4
  10.  
  11. ; Library Vector Offsets
  12.  
  13. _FuncOffset    set    -30
  14. Func    macro    *fname
  15. _LVO\1    equ    _FuncOffset
  16. _FuncOffset    set    _FuncOffset-6
  17.     endm
  18.  
  19. ; Program startup and exit
  20.     Func    StartupInit    ; (A0=StartupStruct,D7=WbMsg)
  21.     Func    ExitCleanup    ; ()
  22.     Func    ExitError    ; (A0=Text,A1=Params)
  23.     Func    DisplayError    ; (A0=Text,A1=Params)
  24.     Func    DosError    ; (A0=optional text,A1=Params)
  25.     Func    ReportError    ; (D0=ErrorCode,A1/D2/D3=Params)
  26.     Func    TestBreak    ; ()
  27. ; Miscellaneous services
  28.     Func    Printf        ; (A0=Text,A1=Params)
  29.     Func    Puts        ; (A0=Text)
  30.     Func    PutsNL        ; (A0=Text)
  31.     Func    FormatStr    ; (A0=Format,A1=Data,A2=DestBuf)
  32.     Func    StrCat        ; (A0=Dest,A1=Source) -> A0=AfterPtr
  33.     Func    StrToL        ; (A0=String)
  34.     Func    ParseArgs    ; (A0=Src,A1=Tmpl,A2=ExHelp,A3=StoreTo,
  35.                 ;  D0=Flags)
  36. ; General tracking services
  37.     Func    CreateResList    ; ()
  38.     Func    GetResList    ; ()
  39.     Func    FreeResList    ; ()
  40.     Func    FreeAllResLists    ; ()
  41.     Func    TrackObject    ; (D0=type)
  42.     Func    FreeObject    ; (A0=tracker)
  43.     Func    TrackRoutine    ; (A0=routine,A1=args)
  44.     Func    TrackExtd    ; (D0=type,D1=extsize)
  45.     Func    TrackSlave    ; (A0=master,A1=slave)
  46. ; Special tracking services
  47.     Func    TrackAllocMem    ; (D0=size,D1=requirements)
  48.     Func    TrackAlloc    ; (D0=size)
  49.     Func    TrackOpen    ; (A0=name,D0=openmode)
  50.     Func    TrackLock    ; (A0=name,D0=lockmode)
  51.     Func    TrackPort    ; ()
  52.     Func    TrackIoRq    ; (A0=OptionalPort,D0=size or 0)
  53.     Func    TrackSignal    ; ()
  54.     Func    TrackDevice    ; (A0=DevName,A1=IORQ,D0=unit,D1=flags,
  55.                 ;  A2=ErrorTable)
  56.     Func    TrackLibrary    ; (A0=LibName,D0=version)
  57.     Func    TrackDosObject    ; (D0=Type,A0=Tags)
  58. ; File operations
  59.     Func    LoadFile    ; (A0=name)
  60.     Func    ChkRead        ; (A0=tracker,A1=buffer,D0=size)
  61.     Func    ChkWrite    ; (A0=tracker,A1=buffer,D0=size)
  62. ; Hashed trees
  63.     Func    InitHashTree    ; (D0=NumBranches,D1=Flags)
  64.     Func    AddHashItem    ; (A0=HashTree,A1=Name,D0=DataSize)
  65.     Func    FindHashItem    ; (A0=HashTree,A1=Name)
  66. ; Filename manipulation
  67.     Func    AddExtension    ; (A0=Source,A1=Dest,A2=Ext,D0=MaxSize)
  68.     Func    SetExtension    ; (A0=Source,A1=Dest,A2=Ext,D0=MaxSize)
  69.     Func    GetExtension    ; (A0=FileName)
  70.     Func    RemExtension    ; (A0=FileName)
  71. ; Next generation of names ...
  72.     Func    ChkDoIO        ; (A0=Messsage,A1=DeviceTracker)
  73.     Func    SimpleRequest    ; (A0=Msg,A1=Params,A2=Gadgets)
  74. ; Private functions allowing SS extensions
  75.     Func    AddSSExtens    ; (A0=ExtNode)
  76.     Func    RemSSExtens    ; (A0=ExtNode)
  77. ; Version 3: Memory allocation with pools
  78.     Func    TrackPool    ; (D0=Quantum,D1=Threshold,D2=Flags)
  79.     Func    PoolAlloc    ; (A0=Pool,D0=size)
  80.     Func    PoolFree    ; (A0=Pool,A1=Address,D0=Size)
  81.     Func    TrackLinPool    ; (D0=Quantum,D1=Flags)
  82.     Func    LinearAlloc    ; (A0=Pool,D1=size)
  83.     Func    LinearAllocN    ; (A0=Pool,D1=size)
  84. ; Version 4: Sorting and misc
  85.     Func    MergeResLists    ; ()
  86.     Func    CallBlock    ; (A0=Routine,D0=LeaveResources)
  87.     Func    QuickSort    ; (A0=Field,D0=NumEl,D1=ElSize,A1=CFunc)
  88.     Func    SortStrings    ; (A0=Field,D0=NumEl)
  89.     Func    SortLongs    ; (A0=Field,D0=NumEl)
  90.     Func    SortList    ; (A0=List,A1=CompFunc)
  91.     Func    SortListName    ; (A0=List)
  92.     Func    TrackAllocPub    ; (D0=Size)
  93.     Func    RelinkObject    ; (A0=Object)
  94.     Func    TestStack    ; ()
  95.  
  96. ; System Variables
  97.  
  98. _SysVarCnt    set    0
  99. SysVar    macro    *size,name
  100. _SysVarCnt    set    _SysVarCnt-\1
  101. \2    equ    _SysVarCnt
  102.     endm
  103.  
  104.     SysVar    0,ssbase    ;R Library base
  105.     SysVar    4,sv_basesize    ;P Size of system vars + user data above
  106.     SysVar    4,sv_wbmsg    ;R Workbench message (0=CLI)
  107.     SysVar    4,sv_thistask    ;R Pointer to task node
  108.     SysVar    4,sv_errsp    ;R Stack pointer to program return address
  109.     SysVar    4,sv_checkbase    ;P Base checkpoint - (0-BaseAddress)
  110.     SysVar    4,dosbase    ;R Dos base
  111.     SysVar    4,intuitionbase    ;R Intuition base
  112.     SysVar    4,gfxbase    ;R Graphics base
  113.     SysVar    4,gadtoolsbase    ;R Gadtools base
  114.     SysVar    4,utilitybase    ;R Utility base
  115.     SysVar    4,stdin        ;  Standard input stream
  116.     SysVar    4,stdout    ;  Standard output stream
  117.     SysVar    4,stderr    ;  Standard error stream
  118.     SysVar    4,sv_errsw    ;  Error switches (bitmap)
  119.     SysVar    4,sv_progname    ;  Program name
  120.     SysVar    4,sv_errrc    ;  ReturnCode for error, default=10
  121.  
  122.     SysVar    12,sv_reslistlist    ;P A list of resource lists
  123.     SysVar    8,sv_callernode    ;P Node of CallerList
  124.     SysVar    4,sv_rc        ;  ReturnCode
  125.  
  126.     SysVar    4,sv_wbcon    ;P Workbench console
  127.     SysVar    4,sv_template    ;P Program template
  128.     SysVar    4,sv_extrahelp    ;P Program extra help string
  129.     SysVar    4,sv_envvar    ;R Environment variable name
  130.     SysVar    4,sv_exitrout    ;  Subroutine called before res.freeing
  131.                 ;  (this pointer is cleared before calling)
  132.     SysVar    4,sv_msgrout    ;  Error message routine
  133.                 ;  (this pointer is cleared before calling)
  134.     SysVar    4,sv_oldexcept    ;P Pointer to original exception routine
  135.     SysVar    4,sv_flags    ;  Various flags (see below)
  136.     SysVar    4,sv_argdest    ;P Address to store arguments at
  137.     SysVar    4,sv_iconbase    ;P Pointer to IconBase
  138.     SysVar    4,sv_usertrk    ;  Pointer to UserTrkTypes structure or 0
  139.     SysVar    24,sv_mempool    ;P Task memory pool
  140.     SysVar    4,sv_lowmem    ;  Routine to be called when out of mem.
  141.     SysVar    4,sv_stklimit    ;  The lowest allowed SP value
  142.     SysVar    4,sv_defstderr    ;P Default stderr or 0
  143.  
  144.     SysVar    0,sv_sizeof    ; Size of system variables block
  145.  
  146. ; Flags in sv_flags
  147.  
  148. svfb_nowbargs    equ    0        ;  Ignore WB arguments
  149. svfb_noprogname    equ    1        ;  Don't print program's name in CLI error msgs
  150. svfb_errorreq    equ    2        ;  Always use requesters for error msgs
  151. svfb_intrap    equ    3        ;P Running trap handler
  152. svfb_nostderr    equ    4        ;P sst_nostderr specified
  153. svfb_noiconarg    equ    5        ;  Don't pass names of multiselected icons as arg #1
  154. svfb_dontfree    equ    7        ;P Don't free memory from task mempool
  155.  
  156. svfm_nowbargs    equ    1
  157. svfm_noprogname    equ    2
  158. svfm_errorreq    equ    4
  159. svfm_intrap    equ    8
  160. svfm_nostderr    equ    16
  161. svfm_noiconarg    equ    32
  162. svfm_dontfree    equ    128
  163.  
  164. ; SS.library Base
  165.  
  166.     ifnd    sizeof_Library
  167. sizeof_Library    equ    $0022
  168.     endc
  169. _LibCnt    set    sizeof_Library
  170. LibVar    macro    *size,name
  171. ssb_\2    equ    _LibCnt
  172. _LibCnt    set    _LibCnt+\1
  173.     endm
  174.  
  175.     LibVar    4,seglist    ;P SegList
  176.     LibVar    2,ksversion    ;R Kickstart version
  177.     LibVar    1,flags        ;  Some flags (see below)
  178.     LibVar    1,pad        ;P Not used yet
  179.     LibVar    4,dosbase    ;R DosBase
  180.     LibVar    4,intuibase    ;R IntuitionBase
  181.     LibVar    4,gfxbase    ;R GraphicsBase
  182.     LibVar    4,gadtoolsbase    ;R GadtoolsBase
  183.     LibVar    4,utilitybase    ;R UtilityBase
  184.     LibVar    12,callerlist    ;P A list of callers -used for crash recovery
  185.     LibVar    1,cputype    ;R CPU type (see tags for IDs)
  186.     LibVar    1,fputype    ;R FPU type ( --    ""    -- )
  187.     LibVar    16,extlist    ;P SS Extensions
  188.     LibVar    2,opencnt    ;P Private OpenCount
  189.     LibVar    SS_SIZE,callis    ;P Callerlist semaphore
  190.     LibVar    0,sizeof
  191.  
  192. ; Flags in ssb_flags
  193.  
  194. SSB_allow30    equ    0        ;R KS 3.0 services can be used
  195.  
  196. ; Startup structure
  197.  
  198. pa_varsize    equ    0        ;  Size of user's variables, incl. ssbase
  199. pa_reqssver    equ    2        ;  Required version of ss.library
  200. pa_firsttag    equ    4        ;  First tag
  201.  
  202. ; Tag types
  203.  
  204. sstag_old    equ    $0000        ; Old SSLib tags
  205. sstag_ext    equ    $4000        ; Extended tags
  206. sstag_std    equ    $8000        ; Standard tags (two longwords)
  207. sstag_new    equ    $C000        ; New tags (ignored when not understood)
  208.  
  209. sstag_nopar    equ    $0000        ; No parameters or special processing
  210. sstag_word    equ    $1000        ; One word
  211. sstag_long    equ    $2000        ; One longword
  212. sstag_string    equ    $3000        ; One string
  213.  
  214. ; Tags
  215. ; (The tag array = { DC.W TagType [ Parameters ] EVEN } ... )
  216. ; RelPtr = APTR - *
  217.  
  218. sst_finish    equ    0    ; End of the TagList
  219. sst_wbconsole    equ    1    ; Create console if started from WB
  220. sst_template    equ    2    ; Template: STR,A5-offset-to-store-args-on
  221. sst_usertrk    equ    3    ; Define UserTrkTypes: WORD RelPtr
  222. sst_extrahelp    equ    4    ; Extra help string: STR
  223. sst_exitrout    equ    5    ; Exit routine: WORD RelPTR
  224. sst_usererr    equ    6    ; Err routine: WORD RelPTR
  225. sst_nowbstart    equ    7    ; Forbid start from workbench
  226. sst_library    equ    8    ; Open library: STR,WORD MinVer,WORD BaseOffset
  227. sst_trylib    equ    9    ; Try to open library (don't fail) - same as ^
  228. sst_nowbargs    equ    10    ; Ignore WB arguments
  229. sst_noprogname    equ    11    ; Don't print program's name in error messages
  230. sst_cputype    equ    12    ; Required CPU type: BYTE Min,Max
  231.             ; 0..4=68000..68040,-1=NoMax
  232. sst_fputype    equ    13    ; Required FPU type: BYTE Min,-1 (max not supported)
  233.             ; 0=none,1=68881,2=68882,3=68040
  234. sst_sysver    equ    14    ; Required kickstart version: BYTE Min,Max(-1=NoMax)
  235. sst_errorreq    equ    15    ; Forces using of requesters for error messages
  236. sst_nostderr    equ    16    ; stderr=stdout (don't o