From 7bf2055ef950ce0b4eeea44b8f03c3b1c0a24272 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A1roly=20Balogh?= Date: Mon, 3 Oct 2016 23:12:05 +0000 Subject: [PATCH] atari: added an include file containing GEMDOS calls and other defines, to be used in the RTL git-svn-id: trunk@34609 - --- .gitattributes | 1 + rtl/atari/gemdos.inc | 120 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 121 insertions(+) create mode 100644 rtl/atari/gemdos.inc diff --git a/.gitattributes b/.gitattributes index 7c1f5c4fd5..7097ea66a9 100644 --- a/.gitattributes +++ b/.gitattributes @@ -8398,6 +8398,7 @@ rtl/aros/x86_64/prt0.as svneol=native#text/plain rtl/atari/Makefile svneol=native#text/plain rtl/atari/Makefile.fpc svneol=native#text/plain rtl/atari/classes.pp svneol=native#text/plain +rtl/atari/gemdos.inc svneol=native#text/plain rtl/atari/prt0.as svneol=native#text/plain rtl/atari/rtldefs.inc svneol=native#text/plain rtl/atari/sysdir.inc svneol=native#text/plain diff --git a/rtl/atari/gemdos.inc b/rtl/atari/gemdos.inc new file mode 100644 index 0000000000..671fde1576 --- /dev/null +++ b/rtl/atari/gemdos.inc @@ -0,0 +1,120 @@ +{ + This file is part of the Free Pascal run time library. + Copyright (c) 2016 by Free Pascal development team + + GEMDOS related defines for Atari TOS + + See the file COPYING.FPC, included in this distribution, + for details about the copyright. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + + **********************************************************************} + + +{ The API description of this file is based on the information available + online at: http://toshyp.atari.org } + +const + E_OK = 0; // OK. No error has arisen + EINVFN = -32; // Unknown function number + EFILNF = -33; // File not found + EPTHNF = -34; // Directory (folder) not found + ENHNDL = -35; // No more handles available + EACCDN = -36; // Access denied + EIHNDL = -37; // Invalid file handle + ENSMEM = -39; // Insufficient memory + EIMBA = -40; // Invalid memory block address + EDRIVE = -46; // Invalid drive specification + ECWD = -47; // Current directory cannot be deleted + ENSAME = -48; // Files on different logical drives + ENMFIL = -49; // No more files can be opened + ELOCKED = -58; // Segment of a file is protected (network) + ENSLOCK = -59; // Invalid lock removal request + ERANGE = -64; // File pointer in invalid segment (see also FreeMiNT message -88) + EINTRN = -65; // Internal error of GEMDOS + EPLFMT = -66; // Invalid program load format + EGSBF = -67; // Allocated memory block could not be enlarged + EBREAK = -68; // Program termination by Control-C + EXCPT = -69; // 68000 exception (bombs) + EPTHOV = -70; // Path overflow + ELOOP = -80; // Endless loop with symbolic links + EPIPE = -81; // Write to broken pipe. + +// as used by fseek +const + SEEK_FROM_START = 0; + SEEK_FROM_CURRENT = 1; + SEEK_FROM_END = 2; + +// as used by fcreate and fattrib +const + ATTRIB_WRITE_PROT = ( 1 shl 0 ); + ATTRIB_HIDDEN = ( 1 shl 1 ); + ATTRIB_SYSTEM = ( 1 shl 2 ); + ATTRIB_VOLUME_LABEL = ( 1 shl 3 ); + ATTRIB_DIRECTORY = ( 1 shl 4 ); + ATTRIB_ARCHIVE = ( 1 shl 5 ); + +// as used by fopen +const + OPEN_READ_ONLY = ( 1 shl 0 ); + OPEN_WRITE_ONLY = ( 1 shl 1 ); + OPEN_READ_WRITE = ( 1 shl 2 ); + +// as used by fattrib +const + FLAG_GET = 0; + FLAG_SET = 1; + +type + PDTA = ^TDTA; + TDTA = packed record + d_reserved: array[0..20] of shortint; {* Reserved for GEMDOS *} + d_attrib: byte; {* File attributes *} + d_time: word; {* Time *} + d_date: word; {* Date *} + d_length: dword; {* File length *} + d_fname: array[0..13] of char; {* Filename *} + end; + +type + PDISKINFO = ^TDISKINFO; + TDISKINFO = record + b_free: dword; {* Number of free clusters *} + b_total: dword; {* Total number of clusters *} + b_secsiz: dword; {* Bytes per sector *} + b_clsiz: dword; {* Sector per cluster *} + end; + + +function gemdos_dsetdrv(drv: smallint): longint; syscall 1 14; + +function gemdos_dgetdrv: smallint; syscall 1 25; +procedure gemdos_setdta(buf: PDTA); syscall 1 26; + +function gemdos_getdta: PDTA; syscall 1 47; + +function gemdos_dfree(buf: PDISKINFO; driveno: smallint): smallint; syscall 1 54; + +function gemdos_dsetpath(path: pchar): smallint; syscall 1 59; + +function gemdos_fcreate(fname: pchar; attr: smallint): smallint; syscall 1 60; +function gemdos_fopen(fname: pchar; mode: smallint): longint; syscall 1 61; +function gemdos_fclose(handle: smallint): smallint; syscall 1 62; +function gemdos_fread(handle: smallint; count: longint; buf: pointer): longint; syscall 1 63; +function gemdos_fwrite(handle: smallint; count: longint; buf: pointer): longint; syscall 1 64; +function gemdos_fdelete(fname: pchar): smallint; syscall 1 65; +function gemdos_fseek(offset: longint; handle: smallint; seekmode: smallint): longint; syscall 1 66; +function gemdos_fattrib(filename: pchar; wflag: smallint; attrib: smallint): smallint; syscall 1 67; + +function gemdos_dgetpath(path: pchar; driveno: smallint): smallint; syscall 1 71; +function gemdos_malloc(number: dword): pointer; syscall 1 72; +function gemdos_free(block: pointer): dword; syscall 1 73; + +function gemdos_fsfirst(filename: pchar; attr: smallint): longint; syscall 1 78; +function gemdos_fsnext: smallint; syscall 1 79; + +function gemdos_frename(oldname: pchar; newname: pchar): longint; syscall 1 86;