home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Programming / Pascal / HISOFTPASCAL2,0-2.DMS / in.adf / Extras / ARP.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1992-05-20  |  21.1 KB  |  1,296 lines

  1. unit ARP;
  2.  
  3. INTERFACE
  4. uses Exec, AmigaDOS, Intuition;
  5.  
  6.  
  7. type
  8.     pZombieMsg = ^tZombieMsg;
  9.     tZombieMsg = record
  10.         zm_ExecMessage: tMessage;
  11.         zm_TaskNum: long;
  12.         zm_ReturnCode: long;
  13.         zm_Result2: long;
  14.         zm_ExitTime: tDateStamp;
  15.         zm_UserInfo: long;
  16.         end;
  17.  
  18.     pResidentPrgNode = ^tResidentPrgNode;
  19.     tResidentPrgNode = record
  20.         rpn_Next: pResidentPrgNode;
  21.         rpn_Usage: longint;
  22.         rpn_CheckSum: long;
  23.         rpn_Segment: BPTR;
  24.         rpn_Name: array [0..0] of byte;
  25.         end;
  26.  
  27.     pResList = ^tResList;
  28.     tResList = record
  29.         rl_Node: tMinNode;
  30.         rl_TaskID: pTask;
  31.         rl_FirstItem: tMinList;
  32.         rl_Link: pResList;
  33.         end;
  34.  
  35.     pDefaultTracker = ^tDefaultTracker;
  36.     tDefaultTracker = record
  37.         case integer of
  38.         0: (
  39.         dt_Resource: long;
  40.         dt_Window2: pWindow;
  41.         );
  42.         1: (
  43.         tg_Verify: longint;
  44.         tg_Function: pointer;
  45.         );
  46.         end;
  47.  
  48.     pResidentProgramTag = ^tResidentProgramTag;
  49.     tResidentProgramTag = record
  50.         rpt_NextSeg: BPTR;
  51.         rpt_BRA: word;
  52.         rpt_Magic: word;
  53.         rpt_StackSize: long;
  54.         rpt_DataSize: long;
  55.         end;
  56.  
  57.     pTrackedResource = ^tTrackedResource;
  58.     tTrackedResource = record
  59.         tr_Node: tMinNode;
  60.         tr_Flags: shortint;
  61.         tr_Lock: shortint;
  62.         tr_ID: integer;
  63.         case integer of
  64.         0: (
  65.         tr_Resource: long;
  66.         tr_Window2: pWindow;
  67.         );
  68.         1: (
  69.         tg_Verify: longint;
  70.         tg_Function: pointer;
  71.         );
  72.         end;
  73.  
  74.     pFileRequester = ^tFileRequester;
  75.     tFileRequester = record
  76.         fr_Hail: pbyte;
  77.         fr_File: pbyte;
  78.         fr_Dir: pbyte;
  79.         fr_Window: pWindow;
  80.         fr_FuncFlags: byte;
  81.         fr_reserved1: byte;
  82.         fr_Function: pointer;
  83.         fr_reserved2: longint;
  84.         end;
  85.  
  86.     pProcessControlBlock = ^tProcessControlBlock;
  87.     tProcessControlBlock = record
  88.         pcb_StackSize: long;
  89.         pcb_Pri: shortint;
  90.         pcb_Control: shortint;
  91.         pcb_TrapCode: pointer;
  92.         pcb_Input: long;
  93.         p_Output: long;
  94.         case integer of
  95.         0: (
  96.         pcb_SplatFile: long;
  97.         );
  98.         1: (
  99.         pcb_ConName: pbyte;
  100.         pcb_LoadedCode: long;
  101.         pcb_LastGasp: pZombieMsg;
  102.         pcb_WBProcess: pMsgPort;
  103.         );
  104.         end;
  105.  
  106.     pProcessMemory = ^tProcessMemory;
  107.     tProcessMemory = record
  108.         pm_Node: tNode;
  109.         pm_Num: word;
  110.         pm_Stack: long;
  111.         pm_StackSize: long;
  112.         pm_Data: long;
  113.         pm_DataSize: long;
  114.         end;
  115.  
  116.     pArpBase = ^tArpBase;
  117.     tArpBase = record
  118.         LibNode: tLibrary;
  119.         SegList: BPTR;
  120.         Flags: byte;
  121.         ESCChar: byte;
  122.         ArpReserved1: longint;
  123.         EnvBase: pLibrary;
  124.         DosBase: pLibrary;
  125.         GfxBase: pLibrary;
  126.         IntuiBase: pLibrary;
  127.         ResLists: tMinList;
  128.         ResidentPrgList: pResidentPrgNode;
  129.         ResPrgProtection: tSignalSemaphore;
  130.         end;
  131.  
  132.     pDirectoryEntry = ^tDirectoryEntry;
  133.     tDirectoryEntry = record
  134.         de_Next: pDirectoryEntry;
  135.         de_Type: shortint;
  136.         de_Flags: shortint;
  137.         de_Name: array [0..0] of byte;
  138.         end;
  139.  
  140.     pDateTime = ^tDateTime;
  141.     tDateTime = record
  142.         dat_Stamp: tDateStamp;
  143.         dat_Format: byte;
  144.         dat_Flags: byte;
  145.         dat_StrDay: pbyte;
  146.         dat_StrDate: pbyte;
  147.         dat_StrTime: pbyte;
  148.         end;
  149.  
  150.     pAnchor = ^tAnchor;
  151.     pAnchorPath = ^tAnchorPath;
  152.     tAnchorPath = record
  153.         ap_Base: pAnchor;
  154.         ap_Last: pAnchor;
  155.         ap_BreakBits: longint;
  156.         ap_FoundBreak: longint;
  157.         ap_Length: long;
  158.         ap_Info: tFileInfoBlock;
  159.         ap_Buf: array [0..0] of byte;
  160.         end;
  161.  
  162.     tAnchor = record
  163.         an_Next: pAnchor;
  164.         an_Pred: pAnchor;
  165.         an_Lock: pFileLock;
  166.         an_Info: pFileInfoBlock;
  167.         an_Status: longint;
  168.         case integer of
  169.         0: (
  170.         an_Text: integer;
  171.         );
  172.         1: (
  173.         an_Actual: array [0..1] of byte;
  174.         );
  175.         end;
  176.  
  177.     ppDirectoryEntry = ^pDirectoryEntry;
  178.  
  179.  
  180. var
  181.     LastTracker: pDefaultTracker;
  182.     Errno: longint;
  183.     ArpBase: pArpBase;
  184.  
  185.  
  186. const
  187.     AN_ArpLib = $3600000;
  188.     PRB_CODE = 4;
  189.     AO_ArpLib = $8036;
  190.     AN_ArpNoGfx = $3630002;
  191.     TRAK_GENERIC = $B;
  192.     PR_ARGERR = $FFFFFFF8;
  193.     PR_NOOUTPUT = $FFFFFFFA;
  194.     P_ANY = $80;
  195.     TRF_MOVED = $20;
  196.     PRB_STDIO = 5;
  197.     P_TAGEND = $86;
  198.     PRF_CODE = $10;
  199.     PR_NOLOCK = $FFFFFFF9;
  200.     DLB_DIRS = 3;
  201.     P_REPBEG = $89;
  202.     LCK_DIFVOL1 = 2;
  203.     PR_NOINPUT = $FFFFFFFB;
  204.     LCK_DIFVOL2 = 3;
  205.     PRF_STDIO = $20;
  206.     DTB_SUBST = 0;
  207.     DLF_DIRS = 8;
  208.     DLX_FILE = 0;
  209.     TRAK_MEMNODE = 7;
  210.     FRB_ListFunc = 0;
  211.     DTF_SUBST = 1;
  212.     DLB_DEVICES = 0;
  213.     FRF_ListFunc = 1;
  214.     P_REPEND = $8A;
  215.     DLF_DEVICES = 1;
  216.     DLB_DISKONLY = 1;
  217.     TRAK_MEM = $A;
  218.     ASSIGN_NODEV = 1;
  219.     P_SINGLE = $81;
  220.     DLX_UNMOUNTED = $20;
  221.     DLF_DISKONLY = 2;
  222.     ArpVersion = $22;
  223.     PR_NOCLI = $FFFFFFFD;
  224.     TRAK_LIBRARY = 5;
  225.     TRAK_MAX = $D;
  226.     P_ORSTART = $82;
  227.     EXAMINE_BIT = 2;
  228.     PR_NOSLOT = $FFFFFFFC;
  229.     FRB_AddGadFunc = 2;
  230.     AN_ArpInputMem = $3610002;
  231.     TRAK_SEGLIST = 8;
  232.     PR_NOMEM = $FFFFFFFE;
  233.     ERROR_NOT_CLI = $190;
  234.     FRF_AddGadFunc = 4;
  235.     FCHARS = $20;
  236.     TRAK_ANCHOR = $D;
  237.     ERROR_BUFFER_OVERFLOW = $12F;
  238.     ERROR_BREAK = $130;
  239.     AN_ArpNoDOS = $3630001;
  240.     TRAK_SCREEN = 4;
  241.     AN_ArpNoIntuit = $3630003;
  242.     AN_ArpScattered = $3600002;
  243.     TRAK_RESLIST = 9;
  244.     TRAK_DALIST = $C;
  245.     PRB_INTERACTIVE = 3;
  246.     AN_Zombie = $3600003;
  247.     P_CLASS = $88;
  248.     RESIDENT_MAGIC = $4AFC;
  249.     DLX_DIR = 8;
  250.     P_OREND = $84;
  251.     COMPLEX_BIT = 1;
  252.     PRF_INTERACTIVE = 8;
  253.     TRAK_AAMEM = 0;
  254.     P_ORNEXT = $83;
  255.     TRAK_DAMEM = 6;
  256.     FR_FIRST_GADGET = $7680;
  257.     DLB_VOLUMES = 2;
  258.     DLX_DEVICE = $10;
  259.     DLF_VOLUMES = 4;
  260.     FORMAT_CDN = 3;
  261.     ERRBADINT = 1;
  262.     ASSIGN_CANCEL = 3;
  263.     TRAK_WINDOW = 3;
  264.     PR_BADLIB = $FFFFFFF6;
  265.     ARPB_WILD_BCPL = 1;
  266.     NOCMD = '\n';
  267.     FRB_NewIDCMP = 4;
  268.     ARPB_WILD_WORLD = 0;
  269.     ARPF_WILD_BCPL = 2;
  270.     ArpName = 'arp.library';
  271.     FRF_NewIDCMP = $10;
  272.     PRB_SAVEIO = 0;
  273.     ARPF_WILD_WORLD = 1;
  274.     FRB_DoMsgFunc = 6;
  275.     DLX_ASSIGN = $28;
  276.     PRB_CLOSESPLAT = 1;
  277.     PRF_SAVEIO = 1;
  278.     FORMAT_DOS = 0;
  279.     FORMAT_MAX = 3;
  280.     FRB_DoWildFunc = 7;
  281.     FRF_DoMsgFunc = $40;
  282.     AN_BadPackBlues = $3640000;
  283.     LCK_VOLUME = 1;
  284.     FORMAT_USA = 2;
  285.     PRF_CLOSESPLAT = 2;
  286.     FRF_DoWildFunc = $80;
  287.     DSIZE = $21;
  288.     FORMAT_INT = 1;
  289.     PMEM_NAME = 'ARP_MEM';
  290.     DTB_FUTURE = 1;
  291.     FRB_GEventFunc = 1;
  292.     P_NOTCLASS = $87;
  293.     TRAK_FILE = 2;
  294.     LCK_EQUAL = 0;
  295.     AN_ArpNoMakeEnv = $3610003;
  296.     TRB_UNLINK = 7;
  297.     DTF_FUTURE = 2;
  298.     FRF_GEventFunc = 2;
  299.     TRF_UNLINK = $80;
  300.     PRB_NOCLI = 2;
  301.     P_TAG = $85;
  302.     DLX_VOLUME = $18;
  303.     TRAK_LOCK = 1;
  304.     FRB_DoColor = 5;
  305.     TRB_RELOC = 6;
  306.     PRF_NOCLI = 4;
  307.     PR_NOSTDIO = $FFFFFFF5;
  308.     AN_ArpNoMem = $3610000;
  309.     ASSIGN_OK = 0;
  310.     FRB_NewWindFunc = 3;
  311.     PR_NOFILE = $FFFFFFFF;
  312.     MaxInputBuf = $100;
  313.     PR_NOBCPL = $FFFFFFF7;
  314.     LEN_DATSTRING = $A;
  315.     FRF_DoColor = $20;
  316.     TRF_RELOC = $40;
  317.     ASSIGN_FATAL = 2;
  318.     FRF_NewWindFunc = 8;
  319.     TRB_MOVED = 5;
  320.  
  321.  
  322. function Puts (string_: pbyte): longint;
  323. function ReadLine (buffer: pbyte): longint;
  324. function EscapeString (string_: pbyte): long;
  325. function CheckAbort (func: pointer): longint;
  326. function CheckBreak
  327.         (masks: longint;
  328.         func: pointer): longint;
  329.  
  330. function Getenv
  331.         (string_: pbyte;
  332.         buffer: pbyte;
  333.         size: longint): pshortint;
  334.  
  335. function Setenv
  336.         (varname: pbyte;
  337.         value: pbyte): boolean;
  338.  
  339. function FileRequest (FileRequester: pFileRequester): pshortint;
  340. procedure CloseWindowSafely
  341.         (Window1: pWindow;
  342.         Window2: longint);
  343.  
  344. function CreatePort
  345.         (name: pbyte;
  346.         pri: longint): pMsgPort;
  347.  
  348. procedure DeletePort (port: pMsgPort);
  349. function SendPacket
  350.         (action: longint;
  351.         args: plongint;
  352.         handler: pMsgPort): longint;
  353.  
  354. procedure InitStdPacket
  355.         (action: longint;
  356.         args: plongint;
  357.         packet: pDosPacket;
  358.         replyport: pMsgPort);
  359.  
  360. function PathName
  361.         (lock: BPTR;
  362.         buffer: pbyte;
  363.         componentcount: longint): long;
  364.  
  365. function Assign
  366.         (logical: pbyte;
  367.         physical: pbyte): long;
  368.  
  369. function DosAllocMem (size: longint): pointer;
  370. procedure DosFreeMem (dosblock: pointer);
  371. function BtoCStr
  372.         (cstr: pbyte;
  373.         bstr: BSTR;
  374.         maxlength: longint): long;
  375.  
  376. function CtoBStr
  377.         (cstr: pbyte;
  378.         bstr: BSTR;
  379.         maxlength: longint): long;
  380.  
  381. function GetDevInfo (devnode: pDeviceList): pDeviceList;
  382. function FreeTaskResList: boolean;
  383. procedure ArpExit
  384.         (rc: longint;
  385.         result2: longint);
  386.  
  387. function FindCLI (clinum: longint): pProcess;
  388. function QSort
  389.         (base: pointer;
  390.         rsize: longint;
  391.         bsize: longint;
  392.         comp: plongint): boolean;
  393.  
  394. function PatternMatch
  395.         (pattern: pbyte;
  396.         string_: pbyte): boolean;
  397.  
  398. function FindFirst
  399.         (pattern: pbyte;
  400.         AnchorPath: pAnchorPath): longint;
  401.  
  402. function FindNext (AnchorPath: pAnchorPath): longint;
  403. procedure FreeAnchorChain (AnchorPath: pAnchorPath);
  404. function CompareLock
  405.         (lock1: BPTR;
  406.         lock2: BPTR): long;
  407.  
  408. function FindTaskResList: pResList;
  409. function CreateTaskResList: pResList;
  410. procedure FreeResList (freelist: pResList);
  411. procedure FreeTrackedItem (item: pDefaultTracker);
  412. function GetAccess (tracker: pDefaultTracker): pointer;
  413. procedure FreeAccess (tracker: pDefaultTracker);
  414. procedure FreeDAList (node: pDirectoryEntry);
  415. function AddDANode
  416.         (data: pbyte;
  417.         dalist: ppDirectoryEntry;
  418.         length: longint;
  419.         id: longint): pDirectoryEntry;
  420.  
  421. function AddDADevs
  422.         (dalist: ppDirectoryEntry;
  423.         select: longint): long;
  424.  
  425. function Strcmp
  426.         (s1: pbyte;
  427.         s2: pbyte): longint;
  428.  
  429. function Strncmp
  430.         (s1: pbyte;
  431.         s2: pbyte;
  432.         count: longint): longint;
  433.  
  434. function Toupper (character: shortint): shortint;
  435. function SyncRun
  436.         (name: pbyte;
  437.         command: pbyte;
  438.         input_: BPTR;
  439.         output_: BPTR): longint;
  440.  
  441. function ASyncRun
  442.         (name: pbyte;
  443.         command: pbyte;
  444.         pcb: pProcessControlBlock): longint;
  445.  
  446. function LoadPrg (name: pbyte): BPTR;
  447. function PreParse
  448.         (source: pbyte;
  449.         dest: pbyte): boolean;
  450.  
  451. function StamptoStr (datetime: pDateTime): boolean;
  452. function StrtoStamp (datetime: pDateTime): boolean;
  453. function ObtainResidentPrg (name: pbyte): pResidentPrgNode;
  454. function AddResidentPrg
  455.         (Segment: BPTR;
  456.         name: pbyte): pResidentPrgNode;
  457.  
  458. function RemResidentPrg (name: pbyte): longint;
  459. procedure UnLoadPrg (segment: BPTR);
  460. function LMult
  461.         (a: longint;
  462.         b: longint): longint;
  463.  
  464. function LDiv
  465.         (a: longint;
  466.         b: longint): longint;
  467.  
  468. function LMod
  469.         (a: longint;
  470.         b: longint): longint;
  471.  
  472. function CheckSumPrg (ResidentNode: pResidentPrgNode): long;
  473. procedure TackOn
  474.         (pathname: pbyte;
  475.         filename: pbyte);
  476.  
  477. function BaseName (name: pbyte): pshortint;
  478. function ReleaseResidentPrg (segment: BPTR): pResidentPrgNode;
  479.  
  480.  
  481. function GADS
  482.         (line: pbyte;
  483.         len: longint;
  484.         help: pbyte;
  485.         args: ppbyte;
  486.         tplate: pbyte): longint;
  487.  
  488. function Atol (string_: pbyte): longint;
  489. function ArpAlloc (size: longint): pointer;
  490. function ArpAllocMem
  491.         (size: longint;
  492.         requirements: longint): pointer;
  493.  
  494. function ArpOpen
  495.         (name: pbyte;
  496.         mode: longint): BPTR;
  497.  
  498. function ArpDupLock (lock: BPTR): BPTR;
  499. function ArpLock
  500.         (name: pbyte;
  501.         mode: longint): BPTR;
  502.  
  503. function RListAlloc
  504.         (reslist: pResList;
  505.         size: longint): pointer;
  506.  
  507. function GetTracker (id: integer): pDefaultTracker;
  508. procedure CLEAR_ID (t: pDefaultTracker);
  509. function IsWild (ptr: pointer): boolean;
  510.  
  511.  
  512. IMPLEMENTATION
  513. procedure CLEAR_ID; assembler;
  514. asm
  515.     move.l    t,a0
  516.     clr.w    -(a0)
  517. end;
  518.  
  519. function IsWild; assembler;
  520. asm
  521.     move.l    ptr,a0
  522.     move.l    (a0),@result
  523.     beq        @1
  524.     moveq    #1,d0
  525.     move.l    d0,@result
  526. @1:
  527. end;
  528.  
  529. function GADS; xassembler;
  530. asm
  531.     movem.l    a2-a3/a6,-(sp)
  532.     lea        $10(sp),a6
  533.     move.l    (a6)+,a3
  534.     move.l    (a6)+,a2
  535.     move.l    (a6)+,a1
  536.     move.l    (a6)+,d0
  537.     move.l    (a6)+,a0
  538.     move.l    ArpBase,a6
  539.     jsr        -$36(a6)
  540.     move.l    d0,$24(sp)
  541.     movem.l    (sp)+,a2-a3/a6
  542. end;
  543.  
  544. function Atol; xassembler;
  545. asm
  546.     move.l    a6,-(sp)
  547.     move.l    8(sp),a0
  548.     move.l    ArpBase,a6
  549.     jsr        -$3C(a6)
  550.     bne        @1
  551.     move.l    #ERRBADINT,Errno
  552. @1:
  553.     move.l    d0,$C(sp)
  554.     move.l    (sp)+,a6
  555. end;
  556.  
  557. function ArpAlloc; xassembler;
  558. asm
  559.     move.l    a6,-(sp)
  560.     move.l    8(sp),d0
  561.     move.l    ArpBase,a6
  562.     jsr        -$BA(a6)
  563.     move.l    d0,$C(sp)
  564.     move.l    a1,LastTracker
  565.     move.l    (sp)+,a6
  566. end;
  567.  
  568. function ArpAllocMem; xassembler;
  569. asm
  570.     move.l    a6,-(sp)
  571.     lea        8(sp),a6
  572.     move.l    (a6)+,d1
  573.     move.l    (a6)+,d0
  574.     move.l    ArpBase,a6
  575.     jsr        -$C0(a6)
  576.     move.l    d0,$10(sp)
  577.     move.l    a1,LastTracker
  578.     move.l    (sp)+,a6
  579. end;
  580.  
  581. function ArpOpen; xassembler;
  582. asm
  583.     move.l    a6,-(sp)
  584.     lea        8(sp),a6
  585.     move.l    (a6)+,d2
  586.     move.l    (a6)+,d1
  587.     move.l    ArpBase,a6
  588.     jsr        -$C6(a6)
  589.     move.l    d0,$10(sp)
  590.     move.l    a1,LastTracker
  591.     move.l    (sp)+,a6
  592. end;
  593.  
  594. function ArpDupLock; xassembler;
  595. asm
  596.     move.l    a6,-(sp)
  597.     move.l    8(sp),d1
  598.     move.l    ArpBase,a6
  599.     jsr        -$CC(a6)
  600.     move.l    d0,$C(sp)
  601.     move.l    a1,LastTracker
  602.     move.l    (sp)+,a6
  603. end;
  604.  
  605. function ArpLock; xassembler;
  606. asm
  607.     move.l    a6,-(sp)
  608.     lea        8(sp),a6
  609.     move.l    (a6)+,d2
  610.     move.l    (a6)+,d1
  611.     move.l    ArpBase,a6
  612.     jsr        -$D2(a6)
  613.     move.l    d0,$10(sp)
  614.     move.l    a1,LastTracker
  615.     move.l    (sp)+,a6
  616. end;
  617.  
  618. function RListAlloc; xassembler;
  619. asm
  620.     move.l    a6,-(sp)
  621.     movem.l    8(sp),d0/a0
  622.     move.l    ArpBase,a6
  623.     jsr        -$D8(a6)
  624.     move.l    d0,$10(sp)
  625.     move.l    a1,LastTracker
  626.     move.l    (sp)+,a6
  627. end;
  628.  
  629. function GetTracker; xassembler;
  630. asm
  631.     move.l    a6,-(sp)
  632.     move.l    ArpBase,a6
  633.     jsr        -$120(a6)
  634.     move.l    a1,$A(sp)
  635.     move.l    a1,LastTracker
  636.     beq        @1
  637.     move.w    8(sp),-(a1)
  638. @1:
  639.     move.l    (sp)+,a6
  640. end;
  641.  
  642. function Puts; xassembler;
  643. asm
  644.     move.l    a6,-(sp)
  645.     move.l    8(sp),a1
  646.     move.l    ArpBase,a6
  647.     jsr        -$F0(a6)
  648.     move.l    d0,$C(sp)
  649.     move.l    (sp)+,a6
  650. end;
  651.  
  652. function ReadLine; xassembler;
  653. asm
  654.     move.l    a6,-(sp)
  655.     move.l    8(sp),a0
  656.     move.l    ArpBase,a6
  657.     jsr        -$F6(a6)
  658.     move.l    d0,$C(sp)
  659.     move.l    (sp)+,a6
  660. end;
  661.  
  662. function EscapeString; xassembler;
  663. asm
  664.     move.l    a6,-(sp)
  665.     move.l    8(sp),a0
  666.     move.l    ArpBase,a6
  667.     jsr        -$108(a6)
  668.     move.l    d0,$C(sp)
  669.     move.l    (sp)+,a6
  670. end;
  671.  
  672. function CheckAbort; xassembler;
  673. asm
  674.     move.l    a6,-(sp)
  675.     move.l    8(sp),a1
  676.     move.l    ArpBase,a6
  677.     jsr        -$10E(a6)
  678.     move.l    d0,$C(sp)
  679.     move.l    (sp)+,a6
  680. end;
  681.  
  682. function CheckBreak; xassembler;
  683. asm
  684.     move.l    a6,-(sp)
  685.     lea        8(sp),a6
  686.     move.l    (a6)+,a1
  687.     move.l    (a6)+,d1
  688.     move.l    ArpBase,a6
  689.     jsr        -$114(a6)
  690.     move.l    d0,$10(sp)
  691.     move.l    (sp)+,a6
  692. end;
  693.  
  694. function Getenv; xassembler;
  695. asm
  696.     move.l    a6,-(sp)
  697.     lea        8(sp),a6
  698.     move.l    (a6)+,d0
  699.     move.l    (a6)+,a1
  700.     move.l    (a6)+,a0
  701.     move.l    ArpBase,a6
  702.     jsr        -$11A(a6)
  703.     move.l    d0,$14(sp)
  704.     move.l    (sp)+,a6
  705. end;
  706.  
  707. function Setenv; xassembler;
  708. asm
  709.     move.l    a6,-(sp)
  710.     lea        8(sp),a6
  711.     move.l    (a6)+,a1
  712.     move.l    (a6)+,a0
  713.     move.l    ArpBase,a6
  714.     jsr        -$120(a6)
  715.     tst.l    d0
  716.     sne        d0
  717.     neg.b    d0
  718.     move.b    d0,$10(sp)
  719.     move.l    (sp)+,a6
  720. end;
  721.  
  722. function FileRequest; xassembler;
  723. asm
  724.     move.l    a6,-(sp)
  725.     move.l    8(sp),a0
  726.     move.l    ArpBase,a6
  727.     jsr        -$126(a6)
  728.     move.l    d0,$C(sp)
  729.     move.l    (sp)+,a6
  730. end;
  731.  
  732. procedure CloseWindowSafely; xassembler;
  733. asm
  734.     move.l    a6,-(sp)
  735.     lea        8(sp),a6
  736.     move.l    (a6)+,a1
  737.     move.l    (a6)+,a0
  738.     move.l    ArpBase,a6
  739.     jsr        -$12C(a6)
  740.     move.l    (sp)+,a6
  741. end;
  742.  
  743. function CreatePort; xassembler;
  744. asm
  745.     move.l    a6,-(sp)
  746.     movem.l    8(sp),d0/a0
  747.     move.l    ArpBase,a6
  748.     jsr        -$132(a6)
  749.     move.l    d0,$10(sp)
  750.     move.l    (sp)+,a6
  751. end;
  752.  
  753. procedure DeletePort; xassembler;
  754. asm
  755.     move.l    a6,-(sp)
  756.     move.l    8(sp),a1
  757.     move.l    ArpBase,a6
  758.     jsr        -$138(a6)
  759.     move.l    (sp)+,a6
  760. end;
  761.  
  762. function SendPacket; xassembler;
  763. asm
  764.     move.l    a6,-(sp)
  765.     lea        8(sp),a6
  766.     move.l    (a6)+,a1
  767.     move.l    (a6)+,a0
  768.     move.l    (a6)+,d0
  769.     move.l    ArpBase,a6
  770.     jsr        -$13E(a6)
  771.     move.l    d0,$14(sp)
  772.     move.l    (sp)+,a6
  773. end;
  774.  
  775. procedure InitStdPacket; xassembler;
  776. asm
  777.     movem.l    a2/a6,-(sp)
  778.     lea        $C(sp),a6
  779.     move.l    (a6)+,a2
  780.     move.l    (a6)+,a1
  781.     move.l    (a6)+,a0
  782.     move.l    (a6)+,d0
  783.     move.l    ArpBase,a6
  784.     jsr        -$144(a6)
  785.     movem.l    (sp)+,a2/a6
  786. end;
  787.  
  788. function PathName; xassembler;
  789. asm
  790.     move.l    a6,-(sp)
  791.     lea        8(sp),a6
  792.     move.l    (a6)+,d1
  793.     move.l    (a6)+,a0
  794.     move.l    (a6)+,d0
  795.     move.l    ArpBase,a6
  796.     jsr        -$14A(a6)
  797.     move.l    d0,$14(sp)
  798.     move.l    (sp)+,a6
  799. end;
  800.  
  801. function Assign; xassembler;
  802. asm
  803.     move.l    a6,-(sp)
  804.     lea        8(sp),a6
  805.     move.l    (a6)+,a1
  806.     move.l    (a6)+,a0
  807.     move.l    ArpBase,a6
  808.     jsr        -$150(a6)
  809.     move.l    d0,$10(sp)
  810.     move.l    (sp)+,a6
  811. end;
  812.  
  813. function DosAllocMem; xassembler;
  814. asm
  815.     move.l    a6,-(sp)
  816.     move.l    8(sp),d0
  817.     move.l    ArpBase,a6
  818.     jsr        -$156(a6)
  819.     move.l    d0,$C(sp)
  820.     move.l    (sp)+,a6
  821. end;
  822.  
  823. procedure DosFreeMem; xassembler;
  824. asm
  825.     move.l    a6,-(sp)
  826.     move.l    8(sp),a1
  827.     move.l    ArpBase,a6
  828.     jsr        -$15C(a6)
  829.     move.l    (sp)+,a6
  830. end;
  831.  
  832. function BtoCStr; xassembler;
  833. asm
  834.     move.l    a6,-(sp)
  835.     lea        8(sp),a6
  836.     move.l    (a6)+,d1
  837.     move.l    (a6)+,d0
  838.     move.l    (a6)+,a0
  839.     move.l    ArpBase,a6
  840.     jsr        -$162(a6)
  841.     move.l    d0,$14(sp)
  842.     move.l    (sp)+,a6
  843. end;
  844.  
  845. function CtoBStr; xassembler;
  846. asm
  847.     move.l    a6,-(sp)
  848.     lea        8(sp),a6
  849.     move.l    (a6)+,d1
  850.     move.l    (a6)+,d0
  851.     move.l    (a6)+,a0
  852.     move.l    ArpBase,a6
  853.     jsr        -$168(a6)
  854.     move.l    d0,$14(sp)
  855.     move.l    (sp)+,a6
  856. end;
  857.  
  858. function GetDevInfo; xassembler;
  859. asm
  860.     movem.l    a2/a6,-(sp)
  861.     move.l    $C(sp),a2
  862.     move.l    ArpBase,a6
  863.     jsr        -$16E(a6)
  864.     move.l    d0,$10(sp)
  865.     movem.l    (sp)+,a2/a6
  866. end;
  867.  
  868. function FreeTaskResList; xassembler;
  869. asm
  870.     movem.l    a2/a6,-(sp)
  871.     move.l    ArpBase,a6
  872.     jsr        -$174(a6)
  873.     tst.l    d0
  874.     sne        d0
  875.     neg.b    d0
  876.     move.b    d0,$C(sp)
  877.     movem.l    (sp)+,a2/a6
  878. end;
  879.  
  880. procedure ArpExit; xassembler;
  881. asm
  882.     move.l    a6,-(sp)
  883.     lea        8(sp),a6
  884.     move.l    (a6)+,d2
  885.     move.l    (a6)+,d0
  886.     move.l    ArpBase,a6
  887.     jsr        -$17A(a6)
  888.     move.l    (sp)+,a6
  889. end;
  890.  
  891. function FindCLI; xassembler;
  892. asm
  893.     move.l    a6,-(sp)
  894.     move.l    8(sp),d0
  895.     move.l    ArpBase,a6
  896.     jsr        -$1A4(a6)
  897.     move.l    d0,$C(sp)
  898.     move.l    (sp)+,a6
  899. end;
  900.  
  901. function QSort; xassembler;
  902. asm
  903.     move.l    a6,-(sp)
  904.     lea        8(sp),a6
  905.     move.l    (a6)+,a1
  906.     move.l    (a6)+,d1
  907.     move.l    (a6)+,d0
  908.     move.l    (a6)+,a0
  909.     move.l    ArpBase,a6
  910.     jsr        -$1AA(a6)
  911.     tst.l    d0
  912.     sne        d0
  913.     neg.b    d0
  914.     move.b    d0,$18(sp)
  915.     move.l    (sp)+,a6
  916. end;
  917.  
  918. function PatternMatch; xassembler;
  919. asm
  920.     move.l    a6,-(sp)
  921.     lea        8(sp),a6
  922.     move.l    (a6)+,a1
  923.     move.l    (a6)+,a0
  924.     move.l    ArpBase,a6
  925.     jsr        -$1B0(a6)
  926.     tst.l    d0
  927.     sne        d0
  928.     neg.b    d0
  929.     move.b    d0,$10(sp)
  930.     move.l    (sp)+,a6
  931. end;
  932.  
  933. function FindFirst; xassembler;
  934. asm
  935.     move.l    a6,-(sp)
  936.     lea        8(sp),a6
  937.     move.l    (a6)+,a0
  938.     move.l    (a6)+,d0
  939.     move.l    ArpBase,a6
  940.     jsr        -$1B6(a6)
  941.     move.l    d0,$10(sp)
  942.     move.l    (sp)+,a6
  943. end;
  944.  
  945. function FindNext; xassembler;
  946. asm
  947.     move.l    a6,-(sp)
  948.     move.l    8(sp),a0
  949.     move.l    ArpBase,a6
  950.     jsr        -$1BC(a6)
  951.     move.l    d0,$C(sp)
  952.     move.l    (sp)+,a6
  953. end;
  954.  
  955. procedure FreeAnchorChain; xassembler;
  956. asm
  957.     move.l    a6,-(sp)
  958.     move.l    8(sp),a0
  959.     move.l    ArpBase,a6
  960.     jsr        -$1C2(a6)
  961.     move.l    (sp)+,a6
  962. end;
  963.  
  964. function CompareLock; xassembler;
  965. asm
  966.     move.l    a6,-(sp)
  967.     lea        8(sp),a6
  968.     move.l    (a6)+,d1
  969.     move.l    (a6)+,d0
  970.     move.l    ArpBase,a6
  971.     jsr        -$1C8(a6)
  972.     move.l    d0,$10(sp)
  973.     move.l    (sp)+,a6
  974. end;
  975.  
  976. function FindTaskResList; xassembler;
  977. asm
  978.     move.l    a6,-(sp)
  979.     move.l    ArpBase,a6
  980.     jsr        -$1CE(a6)
  981.     move.l    d0,8(sp)
  982.     move.l    (sp)+,a6
  983. end;
  984.  
  985. function CreateTaskResList; xassembler;
  986. asm
  987.     move.l    a6,-(sp)
  988.     move.l    ArpBase,a6
  989.     jsr        -$1D4(a6)
  990.     move.l    d0,8(sp)
  991.     move.l    (sp)+,a6
  992. end;
  993.  
  994. procedure FreeResList; xassembler;
  995. asm
  996.     move.l    a6,-(sp)
  997.     move.l    8(sp),a1
  998.     move.l    ArpBase,a6
  999.     jsr        -$1DA(a6)
  1000.     move.l    (sp)+,a6
  1001. end;
  1002.  
  1003. procedure FreeTrackedItem; xassembler;
  1004. asm
  1005.     move.l    a6,-(sp)
  1006.     move.l    8(sp),a1
  1007.     move.l    ArpBase,a6
  1008.     jsr        -$1E0(a6)
  1009.     move.l    (sp)+,a6
  1010. end;
  1011.  
  1012. function GetAccess; xassembler;
  1013. asm
  1014.     move.l    a6,-(sp)
  1015.     move.l    8(sp),a1
  1016.     move.l    ArpBase,a6
  1017.     jsr        -$1EC(a6)
  1018.     move.l    d0,$C(sp)
  1019.     move.l    (sp)+,a6
  1020. end;
  1021.  
  1022. procedure FreeAccess; xassembler;
  1023. asm
  1024.     move.l    a6,-(sp)
  1025.     move.l    8(sp),a1
  1026.     move.l    ArpBase,a6
  1027.     jsr        -$1F2(a6)
  1028.     move.l    (sp)+,a6
  1029. end;
  1030.  
  1031. procedure FreeDAList; xassembler;
  1032. asm
  1033.     move.l    a6,-(sp)
  1034.     move.l    8(sp),a1
  1035.     move.l    ArpBase,a6
  1036.     jsr        -$1F8(a6)
  1037.     move.l    (sp)+,a6
  1038. end;
  1039.  
  1040. function AddDANode; xassembler;
  1041. asm
  1042.     move.l    a6,-(sp)
  1043.     lea        8(sp),a6
  1044.     move.l    (a6)+,d1
  1045.     move.l    (a6)+,d0
  1046.     move.l    (a6)+,a1
  1047.     move.l    (a6)+,a0
  1048.     move.l    ArpBase,a6
  1049.     jsr        -$1FE(a6)
  1050.     move.l    d0,$18(sp)
  1051.     move.l    (sp)+,a6
  1052. end;
  1053.  
  1054. function AddDADevs; xassembler;
  1055. asm
  1056.     move.l    a6,-(sp)
  1057.     movem.l    8(sp),d0/a0
  1058.     move.l    ArpBase,a6
  1059.     jsr        -$204(a6)
  1060.     move.l    d0,$10(sp)
  1061.     move.l    (sp)+,a6
  1062. end;
  1063.  
  1064. function Strcmp; xassembler;
  1065. asm
  1066.     move.l    a6,-(sp)
  1067.     lea        8(sp),a6
  1068.     move.l    (a6)+,a1
  1069.     move.l    (a6)+,a0
  1070.     move.l    ArpBase,a6
  1071.     jsr        -$20A(a6)
  1072.     move.l    d0,$10(sp)
  1073.     move.l    (sp)+,a6
  1074. end;
  1075.  
  1076. function Strncmp; xassembler;
  1077. asm
  1078.     move.l    a6,-(sp)
  1079.     lea        8(sp),a6
  1080.     move.l    (a6)+,d0
  1081.     move.l    (a6)+,a1
  1082.     move.l    (a6)+,a0
  1083.     move.l    ArpBase,a6
  1084.     jsr        -$210(a6)
  1085.     move.l    d0,$14(sp)
  1086.     move.l    (sp)+,a6
  1087. end;
  1088.  
  1089. function Toupper; xassembler;
  1090. asm
  1091.     move.l    a6,-(sp)
  1092.     move.b    8(sp),d0
  1093.     move.l    ArpBase,a6
  1094.     jsr        -$216(a6)
  1095.     move.b    d0,$A(sp)
  1096.     move.l    (sp)+,a6
  1097. end;
  1098.  
  1099. function SyncRun; xassembler;
  1100. asm
  1101.     move.l    a6,-(sp)
  1102.     lea        8(sp),a6
  1103.     move.l    (a6)+,d1
  1104.     move.l    (a6)+,d0
  1105.     move.l    (a6)+,a1
  1106.     move.l    (a6)+,a0
  1107.     move.l    ArpBase,a6
  1108.     jsr        -$21C(a6)
  1109.     move.l    d0,$18(sp)
  1110.     move.l    (sp)+,a6
  1111. end;
  1112.  
  1113. function ASyncRun; xassembler;
  1114. asm
  1115.     movem.l    a2/a6,-(sp)
  1116.     lea        $C(sp),a6
  1117.     move.l    (a6)+,a2
  1118.     move.l    (a6)+,a1
  1119.     move.l    (a6)+,a0
  1120.     move.l    ArpBase,a6
  1121.     jsr        -$222(a6)
  1122.     move.l    d0,$18(sp)
  1123.     movem.l    (sp)+,a2/a6
  1124. end;
  1125.  
  1126. function LoadPrg; xassembler;
  1127. asm
  1128.     move.l    a6,-(sp)
  1129.     move.l    8(sp),d1
  1130.     move.l    ArpBase,a6
  1131.     jsr        -$228(a6)
  1132.     move.l    d0,$C(sp)
  1133.     move.l    (sp)+,a6
  1134. end;
  1135.  
  1136. function PreParse; xassembler;
  1137. asm
  1138.     move.l    a6,-(sp)
  1139.     lea        8(sp),a6
  1140.     move.l    (a6)+,a1
  1141.     move.l    (a6)+,a0
  1142.     move.l    ArpBase,a6
  1143.     jsr        -$22E(a6)
  1144.     tst.l    d0
  1145.     sne        d0
  1146.     neg.b    d0
  1147.     move.b    d0,$10(sp)
  1148.     move.l    (sp)+,a6
  1149. end;
  1150.  
  1151. function StamptoStr; xassembler;
  1152. asm
  1153.     move.l    a6,-(sp)
  1154.     move.l    8(sp),a0
  1155.     move.l    ArpBase,a6
  1156.     jsr        -$234(a6)
  1157.     tst.l    d0
  1158.     sne        d0
  1159.     neg.b    d0
  1160.     move.b    d0,$C(sp)
  1161.     move.l    (sp)+,a6
  1162. end;
  1163.  
  1164. function StrtoStamp; xassembler;
  1165. asm
  1166.     move.l    a6,-(sp)
  1167.     move.l    8(sp),a0
  1168.     move.l    ArpBase,a6
  1169.     jsr        -$23A(a6)
  1170.     tst.l    d0
  1171.     sne        d0
  1172.     neg.b    d0
  1173.     move.b    d0,$C(sp)
  1174.     move.l    (sp)+,a6
  1175. end;
  1176.  
  1177. function ObtainResidentPrg; xassembler;
  1178. asm
  1179.     move.l    a6,-(sp)
  1180.     move.l    8(sp),a0
  1181.     move.l    ArpBase,a6
  1182.     jsr        -$240(a6)
  1183.     move.l    d0,$C(sp)
  1184.     move.l    (sp)+,a6
  1185. end;
  1186.  
  1187. function AddResidentPrg; xassembler;
  1188. asm
  1189.     move.l    a6,-(sp)
  1190.     lea        8(sp),a6
  1191.     move.l    (a6)+,a0
  1192.     move.l    (a6)+,d1
  1193.     move.l    ArpBase,a6
  1194.     jsr        -$246(a6)
  1195.     move.l    d0,$10(sp)
  1196.     move.l    (sp)+,a6
  1197. end;
  1198.  
  1199. function RemResidentPrg; xassembler;
  1200. asm
  1201.     move.l    a6,-(sp)
  1202.     move.l    8(sp),a0
  1203.     move.l    ArpBase,a6
  1204.     jsr        -$24C(a6)
  1205.     move.l    d0,$C(sp)
  1206.     move.l    (sp)+,a6
  1207. end;
  1208.  
  1209. procedure UnLoadPrg; xassembler;
  1210. asm
  1211.     move.l    a6,-(sp)
  1212.     move.l    8(sp),d1
  1213.     move.l    ArpBase,a6
  1214.     jsr        -$252(a6)
  1215.     move.l    (sp)+,a6
  1216. end;
  1217.  
  1218. function LMult; xassembler;
  1219. asm
  1220.     move.l    a6,-(sp)
  1221.     lea        8(sp),a6
  1222.     move.l    (a6)+,d1
  1223.     move.l    (a6)+,d0
  1224.     move.l    ArpBase,a6
  1225.     jsr        -$258(a6)
  1226.     move.l    d0,$10(sp)
  1227.     move.l    (sp)+,a6
  1228. end;
  1229.  
  1230. function LDiv; xassembler;
  1231. asm
  1232.     move.l    a6,-(sp)
  1233.     lea        8(sp),a6
  1234.     move.l    (a6)+,d1
  1235.     move.l    (a6)+,d0
  1236.     move.l    ArpBase,a6
  1237.     jsr        -$25E(a6)
  1238.     move.l    d0,$10(sp)
  1239.     move.l    (sp)+,a6
  1240. end;
  1241.  
  1242. function LMod; xassembler;
  1243. asm
  1244.     move.l    a6,-(sp)
  1245.     lea        8(sp),a6
  1246.     move.l    (a6)+,d1
  1247.     move.l    (a6)+,d0
  1248.     move.l    ArpBase,a6
  1249.     jsr        -$264(a6)
  1250.     move.l    d0,$10(sp)
  1251.     move.l    (sp)+,a6
  1252. end;
  1253.  
  1254. function CheckSumPrg; xassembler;
  1255. asm
  1256.     move.l    a6,-(sp)
  1257.     move.l    8(sp),d0
  1258.     move.l    ArpBase,a6
  1259.     jsr        -$26A(a6)
  1260.     move.l    d0,$C(sp)
  1261.     move.l    (sp)+,a6
  1262. end;
  1263.  
  1264. procedure TackOn; xassembler;
  1265. asm
  1266.     move.l    a6,-(sp)
  1267.     lea        8(sp),a6
  1268.     move.l    (a6)+,a1
  1269.     move.l    (a6)+,a0
  1270.     move.l    ArpBase,a6
  1271.     jsr        -$270(a6)
  1272.     move.l    (sp)+,a6
  1273. end;
  1274.  
  1275. function BaseName; xassembler;
  1276. asm
  1277.     move.l    a6,-(sp)
  1278.     move.l    8(sp),a0
  1279.     move.l    ArpBase,a6
  1280.     jsr        -$276(a6)
  1281.     move.l    d0,$C(sp)
  1282.     move.l    (sp)+,a6
  1283. end;
  1284.  
  1285. function ReleaseResidentPrg; xassembler;
  1286. asm
  1287.     move.l    a6,-(sp)
  1288.     move.l    8(sp),d1
  1289.     move.l    ArpBase,a6
  1290.     jsr        -$27C(a6)
  1291.     move.l    d0,$C(sp)
  1292.     move.l    (sp)+,a6
  1293. end;
  1294.  
  1295. end.
  1296.