home *** CD-ROM | disk | FTP | other *** search
- unit AmigaDOS;
-
- INTERFACE
- uses Exec, Timer;
-
-
- type
- BPTR = longint;
- BSTR = longint;
- pDateStamp = ^tDateStamp;
- tDateStamp = record
- ds_Days: longint;
- ds_Minute: longint;
- ds_Tick: longint;
- end;
-
- pRootNode = ^tRootNode;
- tRootNode = record
- rn_TaskArray: BPTR;
- rn_ConsoleSegment: BPTR;
- rn_Time: tDateStamp;
- rn_RestartSeg: longint;
- rn_Info: BPTR;
- rn_FileHandlerSegment: BPTR;
- end;
-
- pDosPacket = ^tDosPacket;
- tDosPacket = record
- dp_Link: pMessage;
- dp_Port: pMsgPort;
- case integer of
- 0: (
- dp_Action: longint;
- dp_Status: longint;
- dp_Status2: longint;
- dp_BufAddr: longint;
- );
- 1: (
- dp_Type: longint;
- dp_Res1: longint;
- dp_Res2: longint;
- dp_Arg1: longint;
- dp_Arg2: longint;
- dp_Arg3: longint;
- dp_Arg4: longint;
- dp_Arg5: longint;
- dp_Arg6: longint;
- dp_Arg7: longint;
- );
- end;
-
- pStandardPacket = ^tStandardPacket;
- tStandardPacket = record
- sp_Msg: tMessage;
- sp_Pkt: tDosPacket;
- end;
-
- pDosLibrary = ^tDosLibrary;
- tDosLibrary = record
- dl_lib: tLibrary;
- dl_Root: pointer;
- dl_GV: pointer;
- dl_A2: longint;
- dl_A5: longint;
- dl_A6: longint;
- end;
-
- pProcess = ^tProcess;
- tProcess = record
- pr_Task: tTask;
- pr_MsgPort: tMsgPort;
- pr_Pad: integer;
- pr_SegList: BPTR;
- pr_StackSize: longint;
- pr_GlobVec: pointer;
- pr_TaskNum: longint;
- pr_StackBase: BPTR;
- pr_Result2: longint;
- pr_CurrentDir: BPTR;
- pr_CIS: BPTR;
- pr_COS: BPTR;
- pr_ConsoleTask: pointer;
- pr_FileSystemTask: pointer;
- pr_CLI: BPTR;
- pr_ReturnAddr: pointer;
- pr_PktWait: pointer;
- pr_WindowPtr: pointer;
- end;
-
- pFileSysStartupMsg = ^tFileSysStartupMsg;
- tFileSysStartupMsg = record
- fssm_Unit: long;
- fssm_Device: BSTR;
- fssm_Environ: BPTR;
- fssm_Flags: long;
- end;
-
- pFileInfoBlock = ^tFileInfoBlock;
- tFileInfoBlock = record
- fib_DiskKey: longint;
- fib_DirEntryType: longint;
- fib_FileName: array [0..107] of byte;
- fib_Protection: longint;
- fib_EntryType: longint;
- fib_Size: longint;
- fib_NumBlocks: longint;
- fib_Date: tDateStamp;
- fib_Comment: array [0..79] of byte;
- fib_Reserved: array [0..35] of byte;
- end;
-
- pFileHandle = ^tFileHandle;
- tFileHandle = record
- fh_Link: pMessage;
- fh_Port: pMsgPort;
- fh_Type: pMsgPort;
- fh_Buf: longint;
- fh_Pos: longint;
- fh_End: longint;
- fh_Func1: longint;
- fh_Func2: longint;
- fh_Func3: longint;
- fh_Arg1: longint;
- fh_Arg2: longint;
- end;
-
- pInfoData = ^tInfoData;
- tInfoData = record
- id_NumSoftErrors: longint;
- id_UnitNumber: longint;
- id_DiskState: longint;
- id_NumBlocks: longint;
- id_NumBlocksUsed: longint;
- id_BytesPerBlock: longint;
- id_DiskType: longint;
- id_VolumeNode: BPTR;
- id_InUse: longint;
- end;
-
- pFileLock = ^tFileLock;
- tFileLock = record
- fl_Link: BPTR;
- fl_Key: longint;
- fl_Access: longint;
- fl_Task: pMsgPort;
- fl_Volume: BPTR;
- end;
-
- pDeviceNode = ^tDeviceNode;
- tDeviceNode = record
- dn_Next: BPTR;
- dn_Type: long;
- dn_Task: pMsgPort;
- dn_Lock: BPTR;
- dn_Handler: BSTR;
- dn_StackSize: long;
- dn_Priority: longint;
- dn_Startup: BPTR;
- dn_SegList: BPTR;
- dn_GlobalVec: BPTR;
- dn_Name: BSTR;
- end;
-
- pDevInfo = ^tDevInfo;
- tDevInfo = record
- dvi_Next: BPTR;
- dvi_Type: longint;
- dvi_Task: pointer;
- dvi_Lock: BPTR;
- dvi_Handler: BSTR;
- dvi_StackSize: longint;
- dvi_Priority: longint;
- dvi_Startup: longint;
- dvi_SegList: BPTR;
- dvi_GlobVec: BPTR;
- dvi_Name: BSTR;
- end;
-
- pDosInfo = ^tDosInfo;
- tDosInfo = record
- case integer of
- 0: (
- di_ResList: BPTR;
- );
- 1: (
- di_McName: BPTR;
- di_DevInfo: BPTR;
- di_Devices: BPTR;
- di_Handlers: BPTR;
- di_NetHand: pointer;
- );
- end;
-
- pDosEnvec = ^tDosEnvec;
- tDosEnvec = record
- de_TableSize: long;
- de_SizeBlock: long;
- de_SecOrg: long;
- de_Surfaces: long;
- de_SectorPerBlock: long;
- de_BlocksPerTrack: long;
- de_Reserved: long;
- de_PreAlloc: long;
- de_Interleave: long;
- de_LowCyl: long;
- de_HighCyl: long;
- de_NumBuffers: long;
- de_BufMemType: long;
- de_MaxTransfer: long;
- de_Mask: long;
- de_BootPri: longint;
- de_DosType: long;
- end;
-
- pCommandLineInterface = ^tCommandLineInterface;
- tCommandLineInterface = record
- cli_Result2: longint;
- cli_SetName: BSTR;
- cli_CommandDir: BPTR;
- cli_ReturnCode: longint;
- cli_CommandName: BSTR;
- cli_FailLevel: longint;
- cli_Prompt: BSTR;
- cli_StandardInput: BPTR;
- cli_CurrentInput: BPTR;
- cli_CommandFile: BSTR;
- cli_Interactive: longint;
- cli_Background: longint;
- cli_CurrentOutput: BPTR;
- cli_DefaultStack: longint;
- cli_StandardOutput: BPTR;
- cli_Module: BPTR;
- end;
-
- pDeviceList = ^tDeviceList;
- tDeviceList = record
- dl_Next: BPTR;
- dl_Type: longint;
- dl_Task: pMsgPort;
- dl_Lock: BPTR;
- dl_VolumeDate: tDateStamp;
- dl_LockList: BPTR;
- dl_DiskType: longint;
- dl_unused: longint;
- dl_Name: BSTR;
- end;
-
- pDosList = ^tDosList;
- tDosList = record
- dol_Next: BPTR;
- dol_Type: longint;
- dol_Task: pMsgPort;
- dol_Lock: BPTR;
- case integer of
- 0: (
- dol_handler: record
- dol_Handler: BSTR;
- dol_StackSize: longint;
- dol_Priority: longint;
- dol_Startup: long;
- dol_SegList: BPTR;
- dol_GlobVec: BPTR;
- end;
- );
- 1: (
- dol_volume: record
- dol_VolumeDate: tDateStamp;
- dol_LockList: BPTR;
- dol_DiskType: longint;
- end;
- dol_Name: BSTR;
- );
- end;
-
-
-
- const
- ACTION_LOCATE_OBJECT = 8;
- ACTION_RENAME_OBJECT = $11;
- MODE_NEWFILE = $3EE;
- FIBF_DELETE = 1;
- DE_SIZEBLOCK = 1;
- ACTION_SET_PROTECT = $15;
- SIGBREAKB_CTRL_C = $C;
- ACCESS_READ = $FFFFFFFE;
- ID_KICKSTART_DISK = $4B49434B;
- SIGBREAKB_CTRL_D = $D;
- ERROR_LINE_TOO_LONG = $78;
- ERROR_OBJECT_TOO_LARGE = $CF;
- SIGBREAKB_CTRL_E = $E;
- DLT_DIRECTORY = 1;
- SIGBREAKB_CTRL_F = $F;
- ERROR_NO_FREE_STORE = $67;
- ERROR_DIR_NOT_FOUND = $CC;
- SIGBREAKF_CTRL_C = $1000;
- SIGBREAKF_CTRL_D = $2000;
- SIGBREAKF_CTRL_E = $4000;
- ERROR_BAD_STREAM_NAME = $CE;
- SIGBREAKF_CTRL_F = $8000;
- ACTION_GET_BLOCK = 2;
- ACTION_FREE_LOCK = $F;
- ID_NO_DISK_PRESENT = $FFFFFFFF;
- DOSNAME = 'dos.library';
- ERROR_INVALID_RESIDENT_LIBRARY = $7A;
- ACTION_FINDOUTPUT = $3EE;
- ACCESS_WRITE = $FFFFFFFF;
- BYTESPERLONG = 4;
- ACTION_READ = $52;
- ACTION_TIMER = $1E;
- OFFSET_BEGINING = $FFFFFFFF;
- ACTION_EVENT = 6;
- ACTION_FLUSH = $1B;
- ACTION_FINDINPUT = $3ED;
- ERROR_OBJECT_WRONG_TYPE = $D4;
- ACTION_WAIT_CHAR = $14;
- DE_NUMHEADS = 3;
- ERROR_OBJECT_NOT_FOUND = $CD;
- RETURN_OK = 0;
- SHARED_LOCK = $FFFFFFFE;
- ACTION_DISK_INFO = $19;
- DE_BLKSPERTRACK = 5;
- ACTION_WRITE = $57;
- DE_MASK = $E;
- ACTION_SEEK = $3F0;
- DE_RESERVEDBLKS = 6;
- ERROR_NO_DISK = $E2;
- FIBB_SCRIPT = 6;
- ERROR_FILE_NOT_OBJECT = $79;
- BITSPERLONG = $20;
- ACTION_INFO = $1A;
- TICKS_PER_SECOND = $32;
- FIBF_SCRIPT = $40;
- ERROR_DISK_WRITE_PROTECTED = $D6;
- ERROR_READ_PROTECTED = $E0;
- BITSPERBYTE = 8;
- ERROR_TASK_TABLE_FULL = $69;
- ACTION_CURRENT_VOLUME = 7;
- ID_UNREADABLE_DISK = $42414400;
- ID_NOT_REALLY_DOS = $4E444F53;
- ACTION_DIE = 5;
- ACTION_DISK_CHANGE = $21;
- ACTION_TRUNCATE = $3FE;
- DOSTRUE = $FFFFFFFF;
- ERROR_WRITE_PROTECTED = $DF;
- ACTION_DISK_TYPE = $20;
- ERROR_ACTION_NOT_KNOWN = $D1;
- ERROR_COMMENT_TOO_BIG = $DC;
- ACTION_SET_DATE = $22;
- FIBB_READ = 3;
- DLT_DEVICE = 0;
- ACTION_END = $3EF;
- ACTION_INHIBIT = $1F;
- RETURN_FAIL = $14;
- FIBF_READ = 8;
- ID_DOS_DISK = $444F5300;
- DE_UPPERCYL = $A;
- ERROR_DISK_NOT_VALIDATED = $D5;
- MODE_READWRITE = $3EC;
- ERROR_INVALID_COMPONENT_NAME = $D2;
- OFFSET_END = 1;
- FIBB_WRITE = 2;
- MININT = $80000000;
- DE_PREFAC = 7;
- RETURN_ERROR = $A;
- ACTION_EXAMINE_NEXT = $18;
- MAXINT = $7FFFFFFF;
- ERROR_NO_DEFAULT_DIR = $C9;
- ACTION_NIL = 0;
- ACTION_WRITE_PROTECT = $3FF;
- FIBF_WRITE = 4;
- ERROR_SEEK_ERROR = $DB;
- ACTION_RENAME_DISK = 9;
- ACTION_COPY_DIR = $13;
- ACTION_SCREEN_MODE = $3E2;
- ERROR_NO_MORE_ENTRIES = $E8;
- DE_MAXTRANSFER = $D;
- ID_VALIDATING = $51;
- DE_BOOTPRI = $F;
- ACTION_FINDUPDATE = $3EC;
- ACTION_MORE_CACHE = $12;
- ERROR_RENAME_ACROSS_DEVICES = $D7;
- ERROR_TOO_MANY_LEVELS = $D9;
- DE_SECSPERBLK = 4;
- ERROR_DEVICE_NOT_MOUNTED = $DA;
- DE_INTERLEAVE = 8;
- FIBB_ARCHIVE = 4;
- DE_SECORG = 2;
- DE_DOSTYPE = $10;
- EXCLUSIVE_LOCK = $FFFFFFFF;
- ERROR_DISK_FULL = $DD;
- RETURN_WARN = 5;
- ACTION_EXAMINE_OBJECT = $17;
- FIBB_PURE = 5;
- FIBF_ARCHIVE = $10;
- ID_VALIDATED = $52;
- ACTION_CREATE_DIR = $16;
- FIBF_PURE = $20;
- ACTION_SET_MAP = 4;
- ERROR_DELETE_PROTECTED = $DE;
- OFFSET_CURRENT = 0;
- ERROR_INVALID_LOCK = $D3;
- ACTION_READ_RETURN = $3E9;
- DOSFALSE = 0;
- DLT_VOLUME = 2;
- DE_NUMBUFFERS = $B;
- ERROR_OBJECT_EXISTS = $CB;
- DE_MEMBUFTYPE = $C;
- DE_BUFMEMTYPE = $C;
- ACTION_SET_COMMENT = $1C;
- ACTION_PARENT = $1D;
- MODE_OLDFILE = $3ED;
- ERROR_OBJECT_IN_USE = $CA;
- FIBB_EXECUTE = 1;
- ERROR_DIRECTORY_NOT_EMPTY = $D8;
- ERROR_NOT_A_DOS_DISK = $E1;
- ID_WRITE_PROTECTED = $50;
- OFFSET_BEGINNING = $FFFFFFFF;
- ACTION_DELETE_OBJECT = $10;
- FIBF_EXECUTE = 2;
- ACTION_WRITE_RETURN = $3EA;
- FIBB_DELETE = 0;
- DE_TABLESIZE = 0;
- DE_LOWCYL = 9;
-
-
- function Open
- (name: STRPTR;
- accessMode: longint): BPTR;
-
- procedure Close_ (file_: BPTR);
- function Read_
- (file_: BPTR;
- buffer: pointer;
- length: longint): longint;
-
- function Write_
- (file_: BPTR;
- buffer: pointer;
- length: longint): longint;
-
- function Input_: BPTR;
- function Output_: BPTR;
- function Seek_
- (file_: BPTR;
- position: longint;
- offset: longint): longint;
-
- function DeleteFile (name: STRPTR): boolean;
- function Rename_
- (oldName: STRPTR;
- newName: STRPTR): boolean;
-
- function Lock
- (name: STRPTR;
- type_: longint): BPTR;
-
- procedure UnLock (lock: BPTR);
- function DupLock (lock: BPTR): BPTR;
- function Examine
- (lock: BPTR;
- fileInfoBlock: pFileInfoBlock): boolean;
-
- function ExNext
- (lock: BPTR;
- fileInfoBlock: pFileInfoBlock): boolean;
-
- function Info
- (lock: BPTR;
- parameterBlock: pInfoData): boolean;
-
- function CreateDir (name: STRPTR): BPTR;
- function CurrentDir (lock: BPTR): BPTR;
- function IoErr: longint;
- function CreateProc
- (name: STRPTR;
- pri: longint;
- segList: BPTR;
- stackSize: longint): pMsgPort;
-
- procedure Exit_ (returnCode: longint);
- function LoadSeg (fileName: STRPTR): BPTR;
- function UnLoadSeg (segment: BPTR): boolean;
- function DeviceProc (name: STRPTR): pMsgPort;
- function SetComment
- (name: STRPTR;
- comment: STRPTR): boolean;
-
- function SetProtection
- (name: STRPTR;
- mask: longint): boolean;
-
- function DateStamp (date: pDateStamp): pDateStamp;
- procedure Delay_ (timeout: long);
- function WaitForChar
- (file_: BPTR;
- timeout: longint): boolean;
-
- function ParentDir (lock: BPTR): BPTR;
- function IsInteractive (file_: BPTR): boolean;
- function Execute
- (string_: STRPTR;
- file_: BPTR;
- file_: BPTR): boolean;
-
-
-
- function BADDR (bval: BPTR): pointer;
- inline
- $201F, { move.l (sp)+,d0 }
- $E580, { asl.l #2,d0 }
- $2E80; { move.l d0,(sp) }
-
- function MKBADDR (addr: pointer): BPTR;
- inline
- $201F, { move.l (sp)+,d0 }
- $E480, { asr.l #2,d0 }
- $2E80; { move.l d0,(sp) }
-
-
- IMPLEMENTATION
- function Open; xassembler;
- asm
- move.l a6,-(sp)
- lea 8(sp),a6
- move.l (a6)+,d2
- move.l (a6)+,d1
- move.l DOSBase,a6
- jsr -$1E(a6)
- move.l d0,$10(sp)
- move.l (sp)+,a6
- end;
-
- procedure Close_; xassembler;
- asm
- move.l a6,-(sp)
- move.l 8(sp),d1
- move.l DOSBase,a6
- jsr -$24(a6)
- move.l (sp)+,a6
- end;
-
- function Read_; xassembler;
- asm
- movem.l d3/a6,-(sp)
- lea $C(sp),a6
- move.l (a6)+,d3
- move.l (a6)+,d2
- move.l (a6)+,d1
- move.l DOSBase,a6
- jsr -$2A(a6)
- move.l d0,$18(sp)
- movem.l (sp)+,d3/a6
- end;
-
- function Write_; xassembler;
- asm
- movem.l d3/a6,-(sp)
- lea $C(sp),a6
- move.l (a6)+,d3
- move.l (a6)+,d2
- move.l (a6)+,d1
- move.l DOSBase,a6
- jsr -$30(a6)
- move.l d0,$18(sp)
- movem.l (sp)+,d3/a6
- end;
-
- function Input_; xassembler;
- asm
- movem.l d3/a6,-(sp)
- move.l DOSBase,a6
- jsr -$36(a6)
- move.l d0,$C(sp)
- movem.l (sp)+,d3/a6
- end;
-
- function Output_; xassembler;
- asm
- movem.l d3/a6,-(sp)
- move.l DOSBase,a6
- jsr -$3C(a6)
- move.l d0,$C(sp)
- movem.l (sp)+,d3/a6
- end;
-
- function Seek_; xassembler;
- asm
- movem.l d3/a6,-(sp)
- lea $C(sp),a6
- move.l (a6)+,d3
- move.l (a6)+,d2
- move.l (a6)+,d1
- move.l DOSBase,a6
- jsr -$42(a6)
- move.l d0,$18(sp)
- movem.l (sp)+,d3/a6
- end;
-
- function DeleteFile; xassembler;
- asm
- move.l a6,-(sp)
- move.l 8(sp),d1
- move.l DOSBase,a6
- jsr -$48(a6)
- tst.l d0
- sne d0
- neg.b d0
- move.b d0,$C(sp)
- move.l (sp)+,a6
- end;
-
- function Rename_; xassembler;
- asm
- move.l a6,-(sp)
- lea 8(sp),a6
- move.l (a6)+,d2
- move.l (a6)+,d1
- move.l DOSBase,a6
- jsr -$4E(a6)
- tst.l d0
- sne d0
- neg.b d0
- move.b d0,$10(sp)
- move.l (sp)+,a6
- end;
-
- function Lock; xassembler;
- asm
- move.l a6,-(sp)
- lea 8(sp),a6
- move.l (a6)+,d2
- move.l (a6)+,d1
- move.l DOSBase,a6
- jsr -$54(a6)
- move.l d0,$10(sp)
- move.l (sp)+,a6
- end;
-
- procedure UnLock; xassembler;
- asm
- move.l a6,-(sp)
- move.l 8(sp),d1
- move.l DOSBase,a6
- jsr -$5A(a6)
- move.l (sp)+,a6
- end;
-
- function DupLock; xassembler;
- asm
- move.l a6,-(sp)
- move.l 8(sp),d1
- move.l DOSBase,a6
- jsr -$60(a6)
- move.l d0,$C(sp)
- move.l (sp)+,a6
- end;
-
- function Examine; xassembler;
- asm
- move.l a6,-(sp)
- lea 8(sp),a6
- move.l (a6)+,d2
- move.l (a6)+,d1
- move.l DOSBase,a6
- jsr -$66(a6)
- tst.l d0
- sne d0
- neg.b d0
- move.b d0,$10(sp)
- move.l (sp)+,a6
- end;
-
- function ExNext; xassembler;
- asm
- move.l a6,-(sp)
- lea 8(sp),a6
- move.l (a6)+,d2
- move.l (a6)+,d1
- move.l DOSBase,a6
- jsr -$6C(a6)
- tst.l d0
- sne d0
- neg.b d0
- move.b d0,$10(sp)
- move.l (sp)+,a6
- end;
-
- function Info; xassembler;
- asm
- move.l a6,-(sp)
- lea 8(sp),a6
- move.l (a6)+,d2
- move.l (a6)+,d1
- move.l DOSBase,a6
- jsr -$72(a6)
- tst.l d0
- sne d0
- neg.b d0
- move.b d0,$10(sp)
- move.l (sp)+,a6
- end;
-
- function CreateDir; xassembler;
- asm
- move.l a6,-(sp)
- move.l 8(sp),d1
- move.l DOSBase,a6
- jsr -$78(a6)
- move.l d0,$C(sp)
- move.l (sp)+,a6
- end;
-
- function CurrentDir; xassembler;
- asm
- move.l a6,-(sp)
- move.l 8(sp),d1
- move.l DOSBase,a6
- jsr -$7E(a6)
- move.l d0,$C(sp)
- move.l (sp)+,a6
- end;
-
- function IoErr; xassembler;
- asm
- move.l a6,-(sp)
- move.l DOSBase,a6
- jsr -$84(a6)
- move.l d0,8(sp)
- move.l (sp)+,a6
- end;
-
- function CreateProc; xassembler;
- asm
- movem.l d3-d4/a6,-(sp)
- lea $10(sp),a6
- move.l (a6)+,d4
- move.l (a6)+,d3
- move.l (a6)+,d2
- move.l (a6)+,d1
- move.l DOSBase,a6
- jsr -$8A(a6)
- move.l d0,$20(sp)
- movem.l (sp)+,d3-d4/a6
- end;
-
- procedure Exit_; xassembler;
- asm
- move.l a6,-(sp)
- move.l 8(sp),d1
- move.l DOSBase,a6
- jsr -$90(a6)
- move.l (sp)+,a6
- end;
-
- function LoadSeg; xassembler;
- asm
- move.l a6,-(sp)
- move.l 8(sp),d1
- move.l DOSBase,a6
- jsr -$96(a6)
- move.l d0,$C(sp)
- move.l (sp)+,a6
- end;
-
- function UnLoadSeg; xassembler;
- asm
- move.l a6,-(sp)
- move.l 8(sp),d1
- move.l DOSBase,a6
- jsr -$9C(a6)
- tst.l d0
- sne d0
- neg.b d0
- move.b d0,$C(sp)
- move.l (sp)+,a6
- end;
-
- function DeviceProc; xassembler;
- asm
- move.l a6,-(sp)
- move.l 8(sp),d1
- move.l DOSBase,a6
- jsr -$AE(a6)
- move.l d0,$C(sp)
- move.l (sp)+,a6
- end;
-
- function SetComment; xassembler;
- asm
- move.l a6,-(sp)
- lea 8(sp),a6
- move.l (a6)+,d2
- move.l (a6)+,d1
- move.l DOSBase,a6
- jsr -$B4(a6)
- tst.l d0
- sne d0
- neg.b d0
- move.b d0,$10(sp)
- move.l (sp)+,a6
- end;
-
- function SetProtection; xassembler;
- asm
- move.l a6,-(sp)
- lea 8(sp),a6
- move.l (a6)+,d2
- move.l (a6)+,d1
- move.l DOSBase,a6
- jsr -$BA(a6)
- tst.l d0
- sne d0
- neg.b d0
- move.b d0,$10(sp)
- move.l (sp)+,a6
- end;
-
- function DateStamp; xassembler;
- asm
- move.l a6,-(sp)
- move.l 8(sp),d1
- move.l DOSBase,a6
- jsr -$C0(a6)
- move.l d0,$C(sp)
- move.l (sp)+,a6
- end;
-
- procedure Delay_; xassembler;
- asm
- move.l a6,-(sp)
- move.l 8(sp),d1
- move.l DOSBase,a6
- jsr -$C6(a6)
- move.l (sp)+,a6
- end;
-
- function WaitForChar; xassembler;
- asm
- move.l a6,-(sp)
- lea 8(sp),a6
- move.l (a6)+,d2
- move.l (a6)+,d1
- move.l DOSBase,a6
- jsr -$CC(a6)
- tst.l d0
- sne d0
- neg.b d0
- move.b d0,$10(sp)
- move.l (sp)+,a6
- end;
-
- function ParentDir; xassembler;
- asm
- move.l a6,-(sp)
- move.l 8(sp),d1
- move.l DOSBase,a6
- jsr -$D2(a6)
- move.l d0,$C(sp)
- move.l (sp)+,a6
- end;
-
- function IsInteractive; xassembler;
- asm
- move.l a6,-(sp)
- move.l 8(sp),d1
- move.l DOSBase,a6
- jsr -$D8(a6)
- tst.l d0
- sne d0
- neg.b d0
- move.b d0,$C(sp)
- move.l (sp)+,a6
- end;
-
- function Execute; xassembler;
- asm
- movem.l d3/a6,-(sp)
- lea $C(sp),a6
- move.l (a6)+,d3
- move.l (a6)+,d2
- move.l (a6)+,d1
- move.l DOSBase,a6
- jsr -$DE(a6)
- tst.l d0
- sne d0
- neg.b d0
- move.b d0,$18(sp)
- movem.l (sp)+,d3/a6
- end;
-
- end.
-