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

  1. unit AmigaDOS;
  2.  
  3. INTERFACE
  4. uses Exec, Timer;
  5.  
  6.  
  7. type
  8.     BPTR = longint;
  9.     BSTR = longint;
  10.     pDateStamp = ^tDateStamp;
  11.     tDateStamp = record
  12.         ds_Days: longint;
  13.         ds_Minute: longint;
  14.         ds_Tick: longint;
  15.         end;
  16.  
  17.     pRootNode = ^tRootNode;
  18.     tRootNode = record
  19.         rn_TaskArray: BPTR;
  20.         rn_ConsoleSegment: BPTR;
  21.         rn_Time: tDateStamp;
  22.         rn_RestartSeg: longint;
  23.         rn_Info: BPTR;
  24.         rn_FileHandlerSegment: BPTR;
  25.         end;
  26.  
  27.     pDosPacket = ^tDosPacket;
  28.     tDosPacket = record
  29.         dp_Link: pMessage;
  30.         dp_Port: pMsgPort;
  31.         case integer of
  32.         0: (
  33.         dp_Action: longint;
  34.         dp_Status: longint;
  35.         dp_Status2: longint;
  36.         dp_BufAddr: longint;
  37.         );
  38.         1: (
  39.         dp_Type: longint;
  40.         dp_Res1: longint;
  41.         dp_Res2: longint;
  42.         dp_Arg1: longint;
  43.         dp_Arg2: longint;
  44.         dp_Arg3: longint;
  45.         dp_Arg4: longint;
  46.         dp_Arg5: longint;
  47.         dp_Arg6: longint;
  48.         dp_Arg7: longint;
  49.         );
  50.         end;
  51.  
  52.     pStandardPacket = ^tStandardPacket;
  53.     tStandardPacket = record
  54.         sp_Msg: tMessage;
  55.         sp_Pkt: tDosPacket;
  56.         end;
  57.  
  58.     pDosLibrary = ^tDosLibrary;
  59.     tDosLibrary = record
  60.         dl_lib: tLibrary;
  61.         dl_Root: pointer;
  62.         dl_GV: pointer;
  63.         dl_A2: longint;
  64.         dl_A5: longint;
  65.         dl_A6: longint;
  66.         end;
  67.  
  68.     pProcess = ^tProcess;
  69.     tProcess = record
  70.         pr_Task: tTask;
  71.         pr_MsgPort: tMsgPort;
  72.         pr_Pad: integer;
  73.         pr_SegList: BPTR;
  74.         pr_StackSize: longint;
  75.         pr_GlobVec: pointer;
  76.         pr_TaskNum: longint;
  77.         pr_StackBase: BPTR;
  78.         pr_Result2: longint;
  79.         pr_CurrentDir: BPTR;
  80.         pr_CIS: BPTR;
  81.         pr_COS: BPTR;
  82.         pr_ConsoleTask: pointer;
  83.         pr_FileSystemTask: pointer;
  84.         pr_CLI: BPTR;
  85.         pr_ReturnAddr: pointer;
  86.         pr_PktWait: pointer;
  87.         pr_WindowPtr: pointer;
  88.         end;
  89.  
  90.     pFileSysStartupMsg = ^tFileSysStartupMsg;
  91.     tFileSysStartupMsg = record
  92.         fssm_Unit: long;
  93.         fssm_Device: BSTR;
  94.         fssm_Environ: BPTR;
  95.         fssm_Flags: long;
  96.         end;
  97.  
  98.     pFileInfoBlock = ^tFileInfoBlock;
  99.     tFileInfoBlock = record
  100.         fib_DiskKey: longint;
  101.         fib_DirEntryType: longint;
  102.         fib_FileName: array [0..107] of byte;
  103.         fib_Protection: longint;
  104.         fib_EntryType: longint;
  105.         fib_Size: longint;
  106.         fib_NumBlocks: longint;
  107.         fib_Date: tDateStamp;
  108.         fib_Comment: array [0..79] of byte;
  109.         fib_Reserved: array [0..35] of byte;
  110.         end;
  111.  
  112.     pFileHandle = ^tFileHandle;
  113.     tFileHandle = record
  114.         fh_Link: pMessage;
  115.         fh_Port: pMsgPort;
  116.         fh_Type: pMsgPort;
  117.         fh_Buf: longint;
  118.         fh_Pos: longint;
  119.         fh_End: longint;
  120.         fh_Func1: longint;
  121.         fh_Func2: longint;
  122.         fh_Func3: longint;
  123.         fh_Arg1: longint;
  124.         fh_Arg2: longint;
  125.         end;
  126.  
  127.     pInfoData = ^tInfoData;
  128.     tInfoData = record
  129.         id_NumSoftErrors: longint;
  130.         id_UnitNumber: longint;
  131.         id_DiskState: longint;
  132.         id_NumBlocks: longint;
  133.         id_NumBlocksUsed: longint;
  134.         id_BytesPerBlock: longint;
  135.         id_DiskType: longint;
  136.         id_VolumeNode: BPTR;
  137.         id_InUse: longint;
  138.         end;
  139.  
  140.     pFileLock = ^tFileLock;
  141.     tFileLock = record
  142.         fl_Link: BPTR;
  143.         fl_Key: longint;
  144.         fl_Access: longint;
  145.         fl_Task: pMsgPort;
  146.         fl_Volume: BPTR;
  147.         end;
  148.  
  149.     pDeviceNode = ^tDeviceNode;
  150.     tDeviceNode = record
  151.         dn_Next: BPTR;
  152.         dn_Type: long;
  153.         dn_Task: pMsgPort;
  154.         dn_Lock: BPTR;
  155.         dn_Handler: BSTR;
  156.         dn_StackSize: long;
  157.         dn_Priority: longint;
  158.         dn_Startup: BPTR;
  159.         dn_SegList: BPTR;
  160.         dn_GlobalVec: BPTR;
  161.         dn_Name: BSTR;
  162.         end;
  163.  
  164.     pDevInfo = ^tDevInfo;
  165.     tDevInfo = record
  166.         dvi_Next: BPTR;
  167.         dvi_Type: longint;
  168.         dvi_Task: pointer;
  169.         dvi_Lock: BPTR;
  170.         dvi_Handler: BSTR;
  171.         dvi_StackSize: longint;
  172.         dvi_Priority: longint;
  173.         dvi_Startup: longint;
  174.         dvi_SegList: BPTR;
  175.         dvi_GlobVec: BPTR;
  176.         dvi_Name: BSTR;
  177.         end;
  178.  
  179.     pDosInfo = ^tDosInfo;
  180.     tDosInfo = record
  181.         case integer of
  182.         0: (
  183.         di_ResList: BPTR;
  184.         );
  185.         1: (
  186.         di_McName: BPTR;
  187.         di_DevInfo: BPTR;
  188.         di_Devices: BPTR;
  189.         di_Handlers: BPTR;
  190.         di_NetHand: pointer;
  191.         );
  192.         end;
  193.  
  194.     pDosEnvec = ^tDosEnvec;
  195.     tDosEnvec = record
  196.         de_TableSize: long;
  197.         de_SizeBlock: long;
  198.         de_SecOrg: long;
  199.         de_Surfaces: long;
  200.         de_SectorPerBlock: long;
  201.         de_BlocksPerTrack: long;
  202.         de_Reserved: long;
  203.         de_PreAlloc: long;
  204.         de_Interleave: long;
  205.         de_LowCyl: long;
  206.         de_HighCyl: long;
  207.         de_NumBuffers: long;
  208.         de_BufMemType: long;
  209.         de_MaxTransfer: long;
  210.         de_Mask: long;
  211.         de_BootPri: longint;
  212.         de_DosType: long;
  213.         end;
  214.  
  215.     pCommandLineInterface = ^tCommandLineInterface;
  216.     tCommandLineInterface = record
  217.         cli_Result2: longint;
  218.         cli_SetName: BSTR;
  219.         cli_CommandDir: BPTR;
  220.         cli_ReturnCode: longint;
  221.         cli_CommandName: BSTR;
  222.         cli_FailLevel: longint;
  223.         cli_Prompt: BSTR;
  224.         cli_StandardInput: BPTR;
  225.         cli_CurrentInput: BPTR;
  226.         cli_CommandFile: BSTR;
  227.         cli_Interactive: longint;
  228.         cli_Background: longint;
  229.         cli_CurrentOutput: BPTR;
  230.         cli_DefaultStack: longint;
  231.         cli_StandardOutput: BPTR;
  232.         cli_Module: BPTR;
  233.         end;
  234.  
  235.     pDeviceList = ^tDeviceList;
  236.     tDeviceList = record
  237.         dl_Next: BPTR;
  238.         dl_Type: longint;
  239.         dl_Task: pMsgPort;
  240.         dl_Lock: BPTR;
  241.         dl_VolumeDate: tDateStamp;
  242.         dl_LockList: BPTR;
  243.         dl_DiskType: longint;
  244.         dl_unused: longint;
  245.         dl_Name: BSTR;
  246.         end;
  247.  
  248.     pDosList = ^tDosList;
  249.     tDosList = record
  250.         dol_Next: BPTR;
  251.         dol_Type: longint;
  252.         dol_Task: pMsgPort;
  253.         dol_Lock: BPTR;
  254.         case integer of
  255.         0: (
  256.         dol_handler: record
  257.         dol_Handler: BSTR;
  258.         dol_StackSize: longint;
  259.         dol_Priority: longint;
  260.         dol_Startup: long;
  261.         dol_SegList: BPTR;
  262.         dol_GlobVec: BPTR;
  263.         end;
  264.         );
  265.         1: (
  266.         dol_volume: record
  267.         dol_VolumeDate: tDateStamp;
  268.         dol_LockList: BPTR;
  269.         dol_DiskType: longint;
  270.         end;
  271.         dol_Name: BSTR;
  272.         );
  273.         end;
  274.  
  275.  
  276.  
  277. const
  278.     ACTION_LOCATE_OBJECT = 8;
  279.     ACTION_RENAME_OBJECT = $11;
  280.     MODE_NEWFILE = $3EE;
  281.     FIBF_DELETE = 1;
  282.     DE_SIZEBLOCK = 1;
  283.     ACTION_SET_PROTECT = $15;
  284.     SIGBREAKB_CTRL_C = $C;
  285.     ACCESS_READ = $FFFFFFFE;
  286.     ID_KICKSTART_DISK = $4B49434B;
  287.     SIGBREAKB_CTRL_D = $D;
  288.     ERROR_LINE_TOO_LONG = $78;
  289.     ERROR_OBJECT_TOO_LARGE = $CF;
  290.     SIGBREAKB_CTRL_E = $E;
  291.     DLT_DIRECTORY = 1;
  292.     SIGBREAKB_CTRL_F = $F;
  293.     ERROR_NO_FREE_STORE = $67;
  294.     ERROR_DIR_NOT_FOUND = $CC;
  295.     SIGBREAKF_CTRL_C = $1000;
  296.     SIGBREAKF_CTRL_D = $2000;
  297.     SIGBREAKF_CTRL_E = $4000;
  298.     ERROR_BAD_STREAM_NAME = $CE;
  299.     SIGBREAKF_CTRL_F = $8000;
  300.     ACTION_GET_BLOCK = 2;
  301.     ACTION_FREE_LOCK = $F;
  302.     ID_NO_DISK_PRESENT = $FFFFFFFF;
  303.     DOSNAME = 'dos.library';
  304.     ERROR_INVALID_RESIDENT_LIBRARY = $7A;
  305.     ACTION_FINDOUTPUT = $3EE;
  306.     ACCESS_WRITE = $FFFFFFFF;
  307.     BYTESPERLONG = 4;
  308.     ACTION_READ = $52;
  309.     ACTION_TIMER = $1E;
  310.     OFFSET_BEGINING = $FFFFFFFF;
  311.     ACTION_EVENT = 6;
  312.     ACTION_FLUSH = $1B;
  313.     ACTION_FINDINPUT = $3ED;
  314.     ERROR_OBJECT_WRONG_TYPE = $D4;
  315.     ACTION_WAIT_CHAR = $14;
  316.     DE_NUMHEADS = 3;
  317.     ERROR_OBJECT_NOT_FOUND = $CD;
  318.     RETURN_OK = 0;
  319.     SHARED_LOCK = $FFFFFFFE;
  320.     ACTION_DISK_INFO = $19;
  321.     DE_BLKSPERTRACK = 5;
  322.     ACTION_WRITE = $57;
  323.     DE_MASK = $E;
  324.     ACTION_SEEK = $3F0;
  325.     DE_RESERVEDBLKS = 6;
  326.     ERROR_NO_DISK = $E2;
  327.     FIBB_SCRIPT = 6;
  328.     ERROR_FILE_NOT_OBJECT = $79;
  329.     BITSPERLONG = $20;
  330.     ACTION_INFO = $1A;
  331.     TICKS_PER_SECOND = $32;
  332.     FIBF_SCRIPT = $40;
  333.     ERROR_DISK_WRITE_PROTECTED = $D6;
  334.     ERROR_READ_PROTECTED = $E0;
  335.     BITSPERBYTE = 8;
  336.     ERROR_TASK_TABLE_FULL = $69;
  337.     ACTION_CURRENT_VOLUME = 7;
  338.     ID_UNREADABLE_DISK = $42414400;
  339.     ID_NOT_REALLY_DOS = $4E444F53;
  340.     ACTION_DIE = 5;
  341.     ACTION_DISK_CHANGE = $21;
  342.     ACTION_TRUNCATE = $3FE;
  343.     DOSTRUE = $FFFFFFFF;
  344.     ERROR_WRITE_PROTECTED = $DF;
  345.     ACTION_DISK_TYPE = $20;
  346.     ERROR_ACTION_NOT_KNOWN = $D1;
  347.     ERROR_COMMENT_TOO_BIG = $DC;
  348.     ACTION_SET_DATE = $22;
  349.     FIBB_READ = 3;
  350.     DLT_DEVICE = 0;
  351.     ACTION_END = $3EF;
  352.     ACTION_INHIBIT = $1F;
  353.     RETURN_FAIL = $14;
  354.     FIBF_READ = 8;
  355.     ID_DOS_DISK = $444F5300;
  356.     DE_UPPERCYL = $A;
  357.     ERROR_DISK_NOT_VALIDATED = $D5;
  358.     MODE_READWRITE = $3EC;
  359.     ERROR_INVALID_COMPONENT_NAME = $D2;
  360.     OFFSET_END = 1;
  361.     FIBB_WRITE = 2;
  362.     MININT = $80000000;
  363.     DE_PREFAC = 7;
  364.     RETURN_ERROR = $A;
  365.     ACTION_EXAMINE_NEXT = $18;
  366.     MAXINT = $7FFFFFFF;
  367.     ERROR_NO_DEFAULT_DIR = $C9;
  368.     ACTION_NIL = 0;
  369.     ACTION_WRITE_PROTECT = $3FF;
  370.     FIBF_WRITE = 4;
  371.     ERROR_SEEK_ERROR = $DB;
  372.     ACTION_RENAME_DISK = 9;
  373.     ACTION_COPY_DIR = $13;
  374.     ACTION_SCREEN_MODE = $3E2;
  375.     ERROR_NO_MORE_ENTRIES = $E8;
  376.     DE_MAXTRANSFER = $D;
  377.     ID_VALIDATING = $51;
  378.     DE_BOOTPRI = $F;
  379.     ACTION_FINDUPDATE = $3EC;
  380.     ACTION_MORE_CACHE = $12;
  381.     ERROR_RENAME_ACROSS_DEVICES = $D7;
  382.     ERROR_TOO_MANY_LEVELS = $D9;
  383.     DE_SECSPERBLK = 4;
  384.     ERROR_DEVICE_NOT_MOUNTED = $DA;
  385.     DE_INTERLEAVE = 8;
  386.     FIBB_ARCHIVE = 4;
  387.     DE_SECORG = 2;
  388.     DE_DOSTYPE = $10;
  389.     EXCLUSIVE_LOCK = $FFFFFFFF;
  390.     ERROR_DISK_FULL = $DD;
  391.     RETURN_WARN = 5;
  392.     ACTION_EXAMINE_OBJECT = $17;
  393.     FIBB_PURE = 5;
  394.     FIBF_ARCHIVE = $10;
  395.     ID_VALIDATED = $52;
  396.     ACTION_CREATE_DIR = $16;
  397.     FIBF_PURE = $20;
  398.     ACTION_SET_MAP = 4;
  399.     ERROR_DELETE_PROTECTED = $DE;
  400.     OFFSET_CURRENT = 0;
  401.     ERROR_INVALID_LOCK = $D3;
  402.     ACTION_READ_RETURN = $3E9;
  403.     DOSFALSE = 0;
  404.     DLT_VOLUME = 2;
  405.     DE_NUMBUFFERS = $B;
  406.     ERROR_OBJECT_EXISTS = $CB;
  407.     DE_MEMBUFTYPE = $C;
  408.     DE_BUFMEMTYPE = $C;
  409.     ACTION_SET_COMMENT = $1C;
  410.     ACTION_PARENT = $1D;
  411.     MODE_OLDFILE = $3ED;
  412.     ERROR_OBJECT_IN_USE = $CA;
  413.     FIBB_EXECUTE = 1;
  414.     ERROR_DIRECTORY_NOT_EMPTY = $D8;
  415.     ERROR_NOT_A_DOS_DISK = $E1;
  416.     ID_WRITE_PROTECTED = $50;
  417.     OFFSET_BEGINNING = $FFFFFFFF;
  418.     ACTION_DELETE_OBJECT = $10;
  419.     FIBF_EXECUTE = 2;
  420.     ACTION_WRITE_RETURN = $3EA;
  421.     FIBB_DELETE = 0;
  422.     DE_TABLESIZE = 0;
  423.     DE_LOWCYL = 9;
  424.  
  425.  
  426. function Open
  427.         (name: STRPTR;
  428.         accessMode: longint): BPTR;
  429.  
  430. procedure Close_ (file_: BPTR);
  431. function Read_
  432.         (file_: BPTR;
  433.         buffer: pointer;
  434.         length: longint): longint;
  435.  
  436. function Write_
  437.         (file_: BPTR;
  438.         buffer: pointer;
  439.         length: longint): longint;
  440.  
  441. function Input_: BPTR;
  442. function Output_: BPTR;
  443. function Seek_
  444.         (file_: BPTR;
  445.         position: longint;
  446.         offset: longint): longint;
  447.  
  448. function DeleteFile (name: STRPTR): boolean;
  449. function Rename_
  450.         (oldName: STRPTR;
  451.         newName: STRPTR): boolean;
  452.  
  453. function Lock
  454.         (name: STRPTR;
  455.         type_: longint): BPTR;
  456.  
  457. procedure UnLock (lock: BPTR);
  458. function DupLock (lock: BPTR): BPTR;
  459. function Examine
  460.         (lock: BPTR;
  461.         fileInfoBlock: pFileInfoBlock): boolean;
  462.  
  463. function ExNext
  464.         (lock: BPTR;
  465.         fileInfoBlock: pFileInfoBlock): boolean;
  466.  
  467. function Info
  468.         (lock: BPTR;
  469.         parameterBlock: pInfoData): boolean;
  470.  
  471. function CreateDir (name: STRPTR): BPTR;
  472. function CurrentDir (lock: BPTR): BPTR;
  473. function IoErr: longint;
  474. function CreateProc
  475.         (name: STRPTR;
  476.         pri: longint;
  477.         segList: BPTR;
  478.         stackSize: longint): pMsgPort;
  479.  
  480. procedure Exit_ (returnCode: longint);
  481. function LoadSeg (fileName: STRPTR): BPTR;
  482. function UnLoadSeg (segment: BPTR): boolean;
  483. function DeviceProc (name: STRPTR): pMsgPort;
  484. function SetComment
  485.         (name: STRPTR;
  486.         comment: STRPTR): boolean;
  487.  
  488. function SetProtection
  489.         (name: STRPTR;
  490.         mask: longint): boolean;
  491.  
  492. function DateStamp (date: pDateStamp): pDateStamp;
  493. procedure Delay_ (timeout: long);
  494. function WaitForChar
  495.         (file_: BPTR;
  496.         timeout: longint): boolean;
  497.  
  498. function ParentDir (lock: BPTR): BPTR;
  499. function IsInteractive (file_: BPTR): boolean;
  500. function Execute
  501.         (string_: STRPTR;
  502.         file_: BPTR;
  503.         file_: BPTR): boolean;
  504.  
  505.  
  506.  
  507. function BADDR (bval: BPTR): pointer;
  508. inline
  509.     $201F,        { move.l (sp)+,d0    }
  510.     $E580,        { asl.l  #2,d0        }
  511.     $2E80;        { move.l d0,(sp)    }
  512.  
  513. function MKBADDR (addr: pointer): BPTR;
  514. inline
  515.     $201F,        { move.l (sp)+,d0    }
  516.     $E480,        { asr.l  #2,d0        }
  517.     $2E80;        { move.l d0,(sp)    }
  518.  
  519.  
  520. IMPLEMENTATION
  521. function Open; xassembler;
  522. asm
  523.     move.l    a6,-(sp)
  524.     lea        8(sp),a6
  525.     move.l    (a6)+,d2
  526.     move.l    (a6)+,d1
  527.     move.l    DOSBase,a6
  528.     jsr        -$1E(a6)
  529.     move.l    d0,$10(sp)
  530.     move.l    (sp)+,a6
  531. end;
  532.  
  533. procedure Close_; xassembler;
  534. asm
  535.     move.l    a6,-(sp)
  536.     move.l    8(sp),d1
  537.     move.l    DOSBase,a6
  538.     jsr        -$24(a6)
  539.     move.l    (sp)+,a6
  540. end;
  541.  
  542. function Read_; xassembler;
  543. asm
  544.     movem.l    d3/a6,-(sp)
  545.     lea        $C(sp),a6
  546.     move.l    (a6)+,d3
  547.     move.l    (a6)+,d2
  548.     move.l    (a6)+,d1
  549.     move.l    DOSBase,a6
  550.     jsr        -$2A(a6)
  551.     move.l    d0,$18(sp)
  552.     movem.l    (sp)+,d3/a6
  553. end;
  554.  
  555. function Write_; xassembler;
  556. asm
  557.     movem.l    d3/a6,-(sp)
  558.     lea        $C(sp),a6
  559.     move.l    (a6)+,d3
  560.     move.l    (a6)+,d2
  561.     move.l    (a6)+,d1
  562.     move.l    DOSBase,a6
  563.     jsr        -$30(a6)
  564.     move.l    d0,$18(sp)
  565.     movem.l    (sp)+,d3/a6
  566. end;
  567.  
  568. function Input_; xassembler;
  569. asm
  570.     movem.l    d3/a6,-(sp)
  571.     move.l    DOSBase,a6
  572.     jsr        -$36(a6)
  573.     move.l    d0,$C(sp)
  574.     movem.l    (sp)+,d3/a6
  575. end;
  576.  
  577. function Output_; xassembler;
  578. asm
  579.     movem.l    d3/a6,-(sp)
  580.     move.l    DOSBase,a6
  581.     jsr        -$3C(a6)
  582.     move.l    d0,$C(sp)
  583.     movem.l    (sp)+,d3/a6
  584. end;
  585.  
  586. function Seek_; xassembler;
  587. asm
  588.     movem.l    d3/a6,-(sp)
  589.     lea        $C(sp),a6
  590.     move.l    (a6)+,d3
  591.     move.l    (a6)+,d2
  592.     move.l    (a6)+,d1
  593.     move.l    DOSBase,a6
  594.     jsr        -$42(a6)
  595.     move.l    d0,$18(sp)
  596.     movem.l    (sp)+,d3/a6
  597. end;
  598.  
  599. function DeleteFile; xassembler;
  600. asm
  601.     move.l    a6,-(sp)
  602.     move.l    8(sp),d1
  603.     move.l    DOSBase,a6
  604.     jsr        -$48(a6)
  605.     tst.l    d0
  606.     sne        d0
  607.     neg.b    d0
  608.     move.b    d0,$C(sp)
  609.     move.l    (sp)+,a6
  610. end;
  611.  
  612. function Rename_; xassembler;
  613. asm
  614.     move.l    a6,-(sp)
  615.     lea        8(sp),a6
  616.     move.l    (a6)+,d2
  617.     move.l    (a6)+,d1
  618.     move.l    DOSBase,a6
  619.     jsr        -$4E(a6)
  620.     tst.l    d0
  621.     sne        d0
  622.     neg.b    d0
  623.     move.b    d0,$10(sp)
  624.     move.l    (sp)+,a6
  625. end;
  626.  
  627. function Lock; xassembler;
  628. asm
  629.     move.l    a6,-(sp)
  630.     lea        8(sp),a6
  631.     move.l    (a6)+,d2
  632.     move.l    (a6)+,d1
  633.     move.l    DOSBase,a6
  634.     jsr        -$54(a6)
  635.     move.l    d0,$10(sp)
  636.     move.l    (sp)+,a6
  637. end;
  638.  
  639. procedure UnLock; xassembler;
  640. asm
  641.     move.l    a6,-(sp)
  642.     move.l    8(sp),d1
  643.     move.l    DOSBase,a6
  644.     jsr        -$5A(a6)
  645.     move.l    (sp)+,a6
  646. end;
  647.  
  648. function DupLock; xassembler;
  649. asm
  650.     move.l    a6,-(sp)
  651.     move.l    8(sp),d1
  652.     move.l    DOSBase,a6
  653.     jsr        -$60(a6)
  654.     move.l    d0,$C(sp)
  655.     move.l    (sp)+,a6
  656. end;
  657.  
  658. function Examine; xassembler;
  659. asm
  660.     move.l    a6,-(sp)
  661.     lea        8(sp),a6
  662.     move.l    (a6)+,d2
  663.     move.l    (a6)+,d1
  664.     move.l    DOSBase,a6
  665.     jsr        -$66(a6)
  666.     tst.l    d0
  667.     sne        d0
  668.     neg.b    d0
  669.     move.b    d0,$10(sp)
  670.     move.l    (sp)+,a6
  671. end;
  672.  
  673. function ExNext; xassembler;
  674. asm
  675.     move.l    a6,-(sp)
  676.     lea        8(sp),a6
  677.     move.l    (a6)+,d2
  678.     move.l    (a6)+,d1
  679.     move.l    DOSBase,a6
  680.     jsr        -$6C(a6)
  681.     tst.l    d0
  682.     sne        d0
  683.     neg.b    d0
  684.     move.b    d0,$10(sp)
  685.     move.l    (sp)+,a6
  686. end;
  687.  
  688. function Info; xassembler;
  689. asm
  690.     move.l    a6,-(sp)
  691.     lea        8(sp),a6
  692.     move.l    (a6)+,d2
  693.     move.l    (a6)+,d1
  694.     move.l    DOSBase,a6
  695.     jsr        -$72(a6)
  696.     tst.l    d0
  697.     sne        d0
  698.     neg.b    d0
  699.     move.b    d0,$10(sp)
  700.     move.l    (sp)+,a6
  701. end;
  702.  
  703. function CreateDir; xassembler;
  704. asm
  705.     move.l    a6,-(sp)
  706.     move.l    8(sp),d1
  707.     move.l    DOSBase,a6
  708.     jsr        -$78(a6)
  709.     move.l    d0,$C(sp)
  710.     move.l    (sp)+,a6
  711. end;
  712.  
  713. function CurrentDir; xassembler;
  714. asm
  715.     move.l    a6,-(sp)
  716.     move.l    8(sp),d1
  717.     move.l    DOSBase,a6
  718.     jsr        -$7E(a6)
  719.     move.l    d0,$C(sp)
  720.     move.l    (sp)+,a6
  721. end;
  722.  
  723. function IoErr; xassembler;
  724. asm
  725.     move.l    a6,-(sp)
  726.     move.l    DOSBase,a6
  727.     jsr        -$84(a6)
  728.     move.l    d0,8(sp)
  729.     move.l    (sp)+,a6
  730. end;
  731.  
  732. function CreateProc; xassembler;
  733. asm
  734.     movem.l    d3-d4/a6,-(sp)
  735.     lea        $10(sp),a6
  736.     move.l    (a6)+,d4
  737.     move.l    (a6)+,d3
  738.     move.l    (a6)+,d2
  739.     move.l    (a6)+,d1
  740.     move.l    DOSBase,a6
  741.     jsr        -$8A(a6)
  742.     move.l    d0,$20(sp)
  743.     movem.l    (sp)+,d3-d4/a6
  744. end;
  745.  
  746. procedure Exit_; xassembler;
  747. asm
  748.     move.l    a6,-(sp)
  749.     move.l    8(sp),d1
  750.     move.l    DOSBase,a6
  751.     jsr        -$90(a6)
  752.     move.l    (sp)+,a6
  753. end;
  754.  
  755. function LoadSeg; xassembler;
  756. asm
  757.     move.l    a6,-(sp)
  758.     move.l    8(sp),d1
  759.     move.l    DOSBase,a6
  760.     jsr        -$96(a6)
  761.     move.l    d0,$C(sp)
  762.     move.l    (sp)+,a6
  763. end;
  764.  
  765. function UnLoadSeg; xassembler;
  766. asm
  767.     move.l    a6,-(sp)
  768.     move.l    8(sp),d1
  769.     move.l    DOSBase,a6
  770.     jsr        -$9C(a6)
  771.     tst.l    d0
  772.     sne        d0
  773.     neg.b    d0
  774.     move.b    d0,$C(sp)
  775.     move.l    (sp)+,a6
  776. end;
  777.  
  778. function DeviceProc; xassembler;
  779. asm
  780.     move.l    a6,-(sp)
  781.     move.l    8(sp),d1
  782.     move.l    DOSBase,a6
  783.     jsr        -$AE(a6)
  784.     move.l    d0,$C(sp)
  785.     move.l    (sp)+,a6
  786. end;
  787.  
  788. function SetComment; xassembler;
  789. asm
  790.     move.l    a6,-(sp)
  791.     lea        8(sp),a6
  792.     move.l    (a6)+,d2
  793.     move.l    (a6)+,d1
  794.     move.l    DOSBase,a6
  795.     jsr        -$B4(a6)
  796.     tst.l    d0
  797.     sne        d0
  798.     neg.b    d0
  799.     move.b    d0,$10(sp)
  800.     move.l    (sp)+,a6
  801. end;
  802.  
  803. function SetProtection; xassembler;
  804. asm
  805.     move.l    a6,-(sp)
  806.     lea        8(sp),a6
  807.     move.l    (a6)+,d2
  808.     move.l    (a6)+,d1
  809.     move.l    DOSBase,a6
  810.     jsr        -$BA(a6)
  811.     tst.l    d0
  812.     sne        d0
  813.     neg.b    d0
  814.     move.b    d0,$10(sp)
  815.     move.l    (sp)+,a6
  816. end;
  817.  
  818. function DateStamp; xassembler;
  819. asm
  820.     move.l    a6,-(sp)
  821.     move.l    8(sp),d1
  822.     move.l    DOSBase,a6
  823.     jsr        -$C0(a6)
  824.     move.l    d0,$C(sp)
  825.     move.l    (sp)+,a6
  826. end;
  827.  
  828. procedure Delay_; xassembler;
  829. asm
  830.     move.l    a6,-(sp)
  831.     move.l    8(sp),d1
  832.     move.l    DOSBase,a6
  833.     jsr        -$C6(a6)
  834.     move.l    (sp)+,a6
  835. end;
  836.  
  837. function WaitForChar; xassembler;
  838. asm
  839.     move.l    a6,-(sp)
  840.     lea        8(sp),a6
  841.     move.l    (a6)+,d2
  842.     move.l    (a6)+,d1
  843.     move.l    DOSBase,a6
  844.     jsr        -$CC(a6)
  845.     tst.l    d0
  846.     sne        d0
  847.     neg.b    d0
  848.     move.b    d0,$10(sp)
  849.     move.l    (sp)+,a6
  850. end;
  851.  
  852. function ParentDir; xassembler;
  853. asm
  854.     move.l    a6,-(sp)
  855.     move.l    8(sp),d1
  856.     move.l    DOSBase,a6
  857.     jsr        -$D2(a6)
  858.     move.l    d0,$C(sp)
  859.     move.l    (sp)+,a6
  860. end;
  861.  
  862. function IsInteractive; xassembler;
  863. asm
  864.     move.l    a6,-(sp)
  865.     move.l    8(sp),d1
  866.     move.l    DOSBase,a6
  867.     jsr        -$D8(a6)
  868.     tst.l    d0
  869.     sne        d0
  870.     neg.b    d0
  871.     move.b    d0,$C(sp)
  872.     move.l    (sp)+,a6
  873. end;
  874.  
  875. function Execute; xassembler;
  876. asm
  877.     movem.l    d3/a6,-(sp)
  878.     lea        $C(sp),a6
  879.     move.l    (a6)+,d3
  880.     move.l    (a6)+,d2
  881.     move.l    (a6)+,d1
  882.     move.l    DOSBase,a6
  883.     jsr        -$DE(a6)
  884.     tst.l    d0
  885.     sne        d0
  886.     neg.b    d0
  887.     move.b    d0,$18(sp)
  888.     movem.l    (sp)+,d3/a6
  889. end;
  890.  
  891. end.
  892.