amos-professional/includes/libraries/dosextens.i

294 lines
9.5 KiB
OpenEdge ABL
Raw Normal View History

2020-04-26 00:58:13 +00:00
IFND LIBRARIES_DOSEXTENS_I
LIBRARIES_DOSEXTENS_I SET 1
**
** $Filename: libraries/dosextens.i $
** $Release: 1.3 $
**
** DOS structures not needed for the casual AmigaDOS user
**
** (C) Copyright 1985,1986,1987,1988 Commodore-Amiga, Inc.
** All Rights Reserved
**
IFND EXEC_TYPES_I
INCLUDE "exec/types.i"
ENDC
IFND EXEC_TASKS_I
INCLUDE "exec/tasks.i"
ENDC
IFND EXEC_PORTS_I
INCLUDE "exec/ports.i"
ENDC
IFND EXEC_LIBRARIES_I
INCLUDE "exec/libraries.i"
ENDC
IFND LIBRARIES_DOS_I
INCLUDE "libraries/dos.i"
ENDC
* All DOS processes have this STRUCTure
* Create and DeviceProc returns pointer to the MsgPort in this STRUCTure
* Process_addr = DeviceProc(..) - TC_SIZE
STRUCTURE Process,0
STRUCT pr_Task,TC_SIZE
STRUCT pr_MsgPort,MP_SIZE * This is BPTR address from DOS functions
WORD pr_Pad * Remaining variables on 4 byte boundaries
BPTR pr_SegList * Array of seg lists used by this process
LONG pr_StackSize * Size of process stack in bytes
APTR pr_GlobVec * Global vector for this process (BCPL)
LONG pr_TaskNum * CLI task number of zero if not a CLI
BPTR pr_StackBase * Ptr to high memory end of process stack
LONG pr_Result2 * Value of secondary result from last call
BPTR pr_CurrentDir * Lock associated with current directory
BPTR pr_CIS * Current CLI Input Stream
BPTR pr_COS * Current CLI Output Stream
APTR pr_ConsoleTask * Console handler process for current window
APTR pr_FileSystemTask * File handler process for current drive
BPTR pr_CLI * pointer to ConsoleLineInterpreter
APTR pr_ReturnAddr * pointer to previous stack frame
APTR pr_PktWait * Function to be called when awaiting msg
APTR pr_WindowPtr * Window pointer for errors
LABEL pr_SIZEOF * Process
* The long word address (BPTR) of this STRUCTure is returned by
* Open() and other routines that return a file. You need only worry
* about this STRUCT to do async io's via PutMsg() instead of
* standard file system calls
STRUCTURE FileHandle,0
APTR fh_Link * pointer to EXEC message
APTR fh_Interactive * Boolean; TRUE if interactive handle
APTR fh_Type * Port to do PutMsg() to
LONG fh_Buf
LONG fh_Pos
LONG fh_End
LONG fh_Funcs
fh_Func1 EQU fh_Funcs
LONG fh_Func2
LONG fh_Func3
LONG fh_Args
fh_Arg1 EQU fh_Args
LONG fh_Arg2
LABEL fh_SIZEOF * FileHandle
* This is the extension to EXEC Messages used by DOS
STRUCTURE DosPacket,0
APTR dp_Link * pointer to EXEC message
APTR dp_Port * pointer to Reply port for the packet
* * Must be filled in each send.
LONG dp_Type * See ACTION_... below and
* * 'R' means Read, 'W' means Write to the file system
LONG dp_Res1 * For file system calls this is the result
* * that would have been returned by the
* * function, e.g. Write ('W') returns actual
* * length written
LONG dp_Res2 * For file system calls this is what would
* * have been returned by IoErr()
LONG dp_Arg1
* Device packets common equivalents
dp_Action EQU dp_Type
dp_Status EQU dp_Res1
dp_Status2 EQU dp_Res2
dp_BufAddr EQU dp_Arg1
LONG dp_Arg2
LONG dp_Arg3
LONG dp_Arg4
LONG dp_Arg5
LONG dp_Arg6
LONG dp_Arg7
LABEL dp_SIZEOF * DosPacket
* A Packet does not require the Message to before it in memory, but
* for convenience it is useful to associate the two.
* Also see the function init_std_pkt for initializing this STRUCTure
STRUCTURE StandardPacket,0
STRUCT sp_Msg,MN_SIZE
STRUCT sp_Pkt,dp_SIZEOF
LABEL sp_SIZEOF * StandardPacket
* Packet types
ACTION_NIL EQU 0
ACTION_GET_BLOCK EQU 2 ;OBSOLETE
ACTION_SET_MAP EQU 4
ACTION_DIE EQU 5
ACTION_EVENT EQU 6
ACTION_CURRENT_VOLUME EQU 7
ACTION_LOCATE_OBJECT EQU 8
ACTION_RENAME_DISK EQU 9
ACTION_WRITE EQU 'W'
ACTION_READ EQU 'R'
ACTION_FREE_LOCK EQU 15
ACTION_DELETE_OBJECT EQU 16
ACTION_RENAME_OBJECT EQU 17
ACTION_MORE_CACHE EQU 18
ACTION_COPY_DIR EQU 19
ACTION_WAIT_CHAR EQU 20
ACTION_SET_PROTECT EQU 21
ACTION_CREATE_DIR EQU 22
ACTION_EXAMINE_OBJECT EQU 23
ACTION_EXAMINE_NEXT EQU 24
ACTION_DISK_INFO EQU 25
ACTION_INFO EQU 26
ACTION_FLUSH EQU 27
ACTION_SET_COMMENT EQU 28
ACTION_PARENT EQU 29
ACTION_TIMER EQU 30
ACTION_INHIBIT EQU 31
ACTION_DISK_TYPE EQU 32
ACTION_DISK_CHANGE EQU 33
ACTION_SET_DATE EQU 34
ACTION_SCREEN_MODE EQU 994
ACTION_READ_RETURN EQU 1001
ACTION_WRITE_RETURN EQU 1002
ACTION_SEEK EQU 1008
ACTION_FINDUPDATE EQU 1004
ACTION_FINDINPUT EQU 1005
ACTION_FINDOUTPUT EQU 1006
ACTION_END EQU 1007
ACTION_TRUNCATE EQU 1022 /* fast file system only */
ACTION_WRITE_PROTECT EQU 1023 /* fast file system only */
* DOS library node structure.
* This is the data at positive offsets from the library node.
* Negative offsets from the node is the jump table to DOS functions
* node = (STRUCT DosLibrary *) OpenLibrary( "dos.library" .. )
STRUCTURE DosLibrary,0
STRUCT dl_lib,LIB_SIZE
APTR dl_Root * Pointer to RootNode, described below
APTR dl_GV * Pointer to BCPL global vector
LONG dl_A2 * Private register dump of DOS
LONG dl_A5
LONG dl_A6
LABEL dl_SIZEOF * DosLibrary
*
STRUCTURE RootNode,0
BPTR rn_TaskArray * [0] is max number of CLI's
* * [1] is APTR to process id of CLI 1
* * [n] is APTR to process id of CLI n
BPTR rn_ConsoleSegment * SegList for the CLI
STRUCT rn_Time,ds_SIZEOF * Current time
LONG rn_RestartSeg * SegList for the disk validator process
BPTR rn_Info * Pointer ot the Info structure
BPTR rn_FileHandlerSegment * code for file handler
LABEL rn_SIZEOF * RootNode
STRUCTURE DosInfo,0
BPTR di_McName * Network name of this machine currently 0
BPTR di_DevInfo * Device List
BPTR di_Devices * Currently zero
BPTR di_Handlers * Currently zero
APTR di_NetHand * Network handler processid currently zero
LABEL di_SIZEOF * DosInfo
* DOS Processes started from the CLI via RUN or NEWCLI have this additional
* set to data associated with them
STRUCTURE CommandLineInterface,0
LONG cli_Result2 * Value of IoErr from last command
BSTR cli_SetName * Name of current directory
BPTR cli_CommandDir * Lock associated with command directory
LONG cli_ReturnCode * Return code from last command
BSTR cli_CommandName * Name of current command
LONG cli_FailLevel * Fail level (set by FAILAT)
BSTR cli_Prompt * Current prompt (set by PROMPT)
BPTR cli_StandardInput * Default (terminal) CLI input
BPTR cli_CurrentInput * Current CLI input
BSTR cli_CommandFile * Name of EXECUTE command file
LONG cli_Interactive * Boolean True if prompts required
LONG cli_Background * Boolean True if CLI created by RUN
BPTR cli_CurrentOutput * Current CLI output
LONG cli_DefaultStack * Stack size to be obtained in long words
BPTR cli_StandardOutput * Default (terminal) CLI output
BPTR cli_Module * SegList of currently loaded command
LABEL cli_SIZEOF * CommandLineInterface
* This structure can take on different values depending on whether it is
* a device, an assigned directory, or a volume. Below is the structure
* reflecting volumes only. Following that is the structure representing
* only devices. Following that is the unioned structure representing all
* the values
* structure representing a volume
STRUCTURE DevList,0
BPTR dl_Next ; bptr to next device list
LONG dl_Type ; see DLT below
APTR dl_Task ; ptr to handler task
BPTR dl_Lock ; not for volumes
STRUCT dl_VolumeDate,ds_SIZEOF ; creation date
BPTR dl_LockList ; outstanding locks
LONG dl_DiskType ; 'DOS', etc
LONG dl_unused
BSTR dl_Name ; bptr to bcpl name
LABEL DevList_SIZEOF
* device structure (same as the DeviceNode structure in filehandler.i
STRUCTURE DevInfo,0
BPTR dvi_Next
LONG dvi_Type
APTR dvi_Task
BPTR dvi_Lock
BSTR dvi_Handler
LONG dvi_Stacksize
LONG dvi_Priority
LONG dvi_Startup
BPTR dvi_SegList
BPTR dvi_GlobVec
BSTR dvi_Name
LABEL dvi_SIZEOF
* combined structure for devices, assigned directories, volumes
STRUCTURE DosList,0
BPTR dol_Next ; bptr to next device on lis
LONG dol_Type ; see DLT below
APTR dol_Task ; ptr to handler task
BPTR dol_Lock
STRUCT dol_VolumeDate,0 ; creation date (UNION)
BSTR dol_Handler ; file name to load if seglist is null
LONG dol_StackSize ; stacksize to use when starting process
LONG dol_Priority ; task priority when starting process
STRUCT dol_LockList,0 ; outstanding locks (UNION)
ULONG dol_Startup ; startup msg: FileSysStartupMsg
; for disks
STRUCT dol_DiskType,0 ; 'DOS', etc (UNION)
BPTR dol_SegList ; already loaded code for new task
BPTR dol_GlobVec ; BCPL global vector
BSTR dol_Name ; bptr to bcpl name
LABEL DosList_SIZEOF
* definitions for dl_Type
DLT_DEVICE EQU 0
DLT_DIRECTORY EQU 1
DLT_VOLUME EQU 2
* a lock structure, as returned by Lock() or DupLock()
STRUCTURE FileLock,0
BPTR fl_Link ; bcpl pointer to next lock
LONG fl_Key ; disk block number
LONG fl_Access ; exclusive or shared
APTR fl_Task ; handler task's port
BPTR fl_Volume ; bptr to a DeviceList
LABEL fl_SIZEOF
ENDC ; LIBRARIES_DOSEXTENS_I