| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268 |
- Listing:
- 1 (* Release 3.10 *)
- 2 (*-------------------------------------------------------------------------*
- 3 * *
- 4 * CDOS.DEF - Modula-2 interface to DOS.H *
- 5 * *
- 6 * COPYRIGHT (C) 1989..1992 Clarion Software Corporation. *
- 7 * All Rights Reserved *
- 8 * *
- 9 *--------------------------------------------------------------------------*)
- 10
- 11 (*# project("#set tsc='on'") *)
- 12 (*# call(o_a_size=>off, o_a_copy=>off, c_conv=>on, result_optional=>on) *)
- 13 (*# module(implementation=>off, init_code=>off) *)
- 14 (*# name(prefix=>c) *)
- 15
- 16
- 17 DEFINITION MODULE cdos;
- 18
- 19 CONST
- 20 FA_NORMAL = 00H; (* normal file *)
- 21 FA_RDONLY = 01H; (* Read only attribute *)
- 22 FA_HIDDEN = 02H; (* Hidden file *)
- 23 FA_SYSTEM = 04H; (* System file *)
- 24 FA_LABEL = 08H; (* Volume label *)
- 25 FA_DIREC = 10H; (* Directory *)
- 26 FA_ARCH = 20H; (* Archive *)
- 27
- 28 _HARDERR_IGNORE = 0; (* Ignore the error *)
- 29 _HARDERR_RETRY = 1; (* Retry the operation *)
- 30 _HARDERR_ABORT = 2; (* Abort program issuing Int 23 *)
- 31 _HARDERR_FAIL = 3; (* Fail the system call in progres*)
- 32
- 33 _A_NORMAL = 00H; (* normal file - no r/w restricted*)
- 34 _A_RDONLY = 01H; (* Read only attribute *)
- 35 _A_HIDDEN = 02H; (* Hidden file *)
- 36 _A_SYSTEM = 04H; (* System file *)
- 37 _A_VOLID = 08H; (* Volume ID file *)
- 38 _A_SUBDIR = 10H; (* subdirectory *)
- 39 _A_ARCH = 20H; (* Archive *)
- 40
- 41 TYPE
- 42 WORDREGS = RECORD
- 43 ax,bx,cx,dx,si,di,cflag,flags:CARDINAL;
- 44 END;
- ***** ^ not supported yet
- 45 BYTEREGS = RECORD
- 46 al,ah,bl,bh,cl,ch,dl,dh:BYTE;
- ***** ^ undeclared identifier
- 47 END;
- ***** ^ not supported yet
- 48 REGS = RECORD
- 49 CASE : BOOLEAN OF
- ***** ^ not supported yet
- ***** ^ 'POINTER' expected
- 50 TRUE : x : WORDREGS; |
- 51 FALSE : h : BYTEREGS; |
- 52 END;
- 53 END;
- 54 SREGS = RECORD
- 55 es,cs,ss,ds:CARDINAL;
- 56 END;
- 57 REGPACK = RECORD
- 58 r_ax,r_bx,r_cx,r_dx : CARDINAL;
- 59 r_bp,r_si,r_di,r_ds,r_es,r_flags : CARDINAL;
- 60 END;
- 61 find_t = RECORD
- 62 reserved : ARRAY[0..20] OF BYTE;
- 63 attrib : BYTE;
- 64 wr_ftime : CARDINAL;
- 65 wr_fdate : CARDINAL;
- 66 size : LONGCARD;
- 67 name : ARRAY[0..12] OF CHAR;
- 68 END;
- 69 country_t = RECORD
- 70 co_date : CARDINAL;
- 71 co_curr : ARRAY[0..4] OF CHAR;
- 72 co_thsep : ARRAY[0..1] OF CHAR;
- 73 co_desep : ARRAY[0..1] OF CHAR;
- 74 co_dtsep : ARRAY[0..1] OF CHAR;
- 75 co_tmsep : ARRAY[0..1] OF CHAR;
- 76 co_currstyle:SHORTCARD;
- 77 co_digits : SHORTCARD;
- 78 co_time : SHORTCARD;
- 79 co_case : LONGCARD;
- 80 co_dasep : ARRAY[0..1] OF CHAR;
- 81 co_fill : ARRAY[0..9] OF CHAR;
- 82 END;
- 83 dosdate_t = RECORD
- 84 day : SHORTCARD; (* 1-31 *)
- 85 month : SHORTCARD; (* 1-12 *)
- 86 year : CARDINAL; (* 1980-2099 *)
- 87 dayofweek : SHORTCARD; (* 0-6, 0=Sun *)
- 88 END;
- 89 dostime_t = RECORD
- 90 hour : SHORTCARD; (* 0 - 23 *)
- 91 minute : SHORTCARD; (* 0 - 59 *)
- 92 second : SHORTCARD; (* 0 - 59 *)
- 93 hsecond : SHORTCARD; (* 0 - 99 *)
- 94 END;
- 95 diskfree_t = RECORD
- 96 total_clusters : CARDINAL;
- 97 avail_clusters : CARDINAL;
- 98 sectors_per_cluster : CARDINAL;
- 99 bytes_per_sector : CARDINAL;
- 100 END;
- 101 ffblk = RECORD
- 102 ff_reserved: ARRAY[0..20] OF BYTE;
- 103 ff_attrib : BYTE;
- 104 ff_ftime : CARDINAL;
- 105 ff_fdate : CARDINAL;
- 106 ff_fsize : LONGCARD;
- 107 ff_name : ARRAY[0..12] OF CHAR;
- 108 END;
- 109 doserror = RECORD
- 110 exterror : CARDINAL;
- 111 class : SHORTCARD;
- 112 action : SHORTCARD;
- 113 locus : SHORTCARD;
- 114 END;
- 115 fcb = RECORD
- 116 fcb_drive : SHORTCARD; (* 0 = default, 1=A, 2=B *)
- 117 fcb_name : ARRAY[0..7] OF CHAR; (* file name *)
- 118 fcb_ext : ARRAY[0..2] OF CHAR; (* file extension *)
- 119 fcb_curblk : CARDINAL; (* current block number *)
- 120 fcb_recsize: CARDINAL; (* logical rec size bytes*)
- 121 fcb_filsize: LONGCARD; (* file size in bytes *)
- 122 fcb_date : CARDINAL; (* date file last written*)
- 123 fcb_resv : ARRAY[0..9] OF CHAR; (* reserved for DOS *)
- 124 fcb_currec : SHORTCARD; (* current rec in block *)
- 125 fcb_random : LONGCARD; (* random record number *)
- 126 END;
- 127 xfcb = RECORD
- 128 xfcb_flag : SHORTCARD; (* 0FFH to indicate xfcb *)
- 129 xfcb_resv : ARRAY[0..4] OF CHAR; (* reserved for DOS *)
- 130 xfcb_attr : SHORTCARD; (* search attribute *)
- 131 xfcb_fcb : fcb; (* the standard fcb *)
- 132 END;
- 133 dfree = RECORD
- 134 df_avail : CARDINAL;
- 135 df_total : CARDINAL;
- 136 df_bsec : CARDINAL;
- 137 df_sclus : CARDINAL;
- 138 END;
- 139 fatinfo = RECORD
- 140 fi_sclus : SHORTCARD;
- 141 fi_fatid : SHORTCARD;
- 142 fi_nclus : CARDINAL;
- 143 fi_bysec : CARDINAL;
- 144 END;
- 145 devhdr = RECORD
- 146 dh_next : LONGCARD; (* Next device pointer *)
- 147 dh_attr : CARDINAL; (* Attributes *)
- 148 dh_strat : CARDINAL; (* Driver strategy routine*)
- 149 dh_inter : CARDINAL; (* Driver interrupt routine*)
- 150 dh_name : ARRAY[0..7] OF CHAR; (* Device name *)
- 151 END;
- 152 date = RECORD
- 153 da_year : CARDINAL;
- 154 da_day : SHORTCARD;
- 155 da_mon : SHORTCARD;
- 156 END;
- 157 time = RECORD
- 158 ti_hour : SHORTCARD;
- 159 ti_min : SHORTCARD;
- 160 ti_sec : SHORTCARD;
- 161 ti_hund : SHORTCARD;
- 162 END;
- 163 CtrlBrkHandler = PROCEDURE():CARDINAL;
- 164
- 165 PROCEDURE bdos(dosfunc,dosdx,dosal:CARDINAL):CARDINAL;
- 166 PROCEDURE bdosptr(dosfunc:CARDINAL;dsdx:ADDRESS;dosal:CARDINAL):INTEGER;
- 167 PROCEDURE int86(intno:CARDINAL;VAR inregs,outregs:REGS):CARDINAL;
- 168 PROCEDURE int86x(intno:CARDINAL;VAR inregs,outregs:REGS;VAR segregs:SREGS):CARDINAL;
- 169 PROCEDURE intdos(VAR inregs,outregs:REGS):CARDINAL;
- 170 PROCEDURE intdosx(VAR inregs,outregs:REGS;segregs:SREGS):CARDINAL;
- 171
- 172 PROCEDURE _dos_allocmem(size:CARDINAL;seg:ADDRESS):CARDINAL;
- 173 PROCEDURE _dos_close(handle:CARDINAL):CARDINAL;
- 174 PROCEDURE _dos_creat(path:ARRAY OF CHAR;attrib,handle:CARDINAL):CARDINAL;
- 175 PROCEDURE _dos_creatnew(path:ARRAY OF CHAR;attrib,handle:CARDINAL):CARDINAL;
- 176 PROCEDURE _dos_findfirst(path:ARRAY OF CHAR;attrib:CARDINAL;VAR buffer:ffblk):CARDINAL;
- 177 PROCEDURE _dos_findnext(VAR buffer:ffblk):CARDINAL;
- 178 PROCEDURE _dos_freemem(seg:CARDINAL):CARDINAL;
- 179 PROCEDURE _dos_getdate(VAR buffer:dosdate_t);
- 180 PROCEDURE _dos_getdrive(VAR drive:CARDINAL);
- 181 PROCEDURE _dos_getdiskfree(drive:CARDINAL;VAR buffer:diskfree_t):CARDINAL;
- 182 PROCEDURE _dos_getfileattr(path:ARRAY OF CHAR;VAR attr:CARDINAL):CARDINAL;
- 183 PROCEDURE _dos_getftime(handle:CARDINAL;VAR date,time:BITSET):CARDINAL;
- 184 PROCEDURE _dos_gettime(VAR buffer:dostime_t);
- 185 PROCEDURE _dos_keep(retcode,paras:CARDINAL);
- 186 PROCEDURE _dos_open(path:ARRAY OF CHAR;mode:CARDINAL;VAR handle:CARDINAL):CARDINAL;
- 187 PROCEDURE _dos_setblock(size,seg:CARDINAL;VAR maxsize:CARDINAL):CARDINAL;
- 188 PROCEDURE _dos_setdate(VAR buffer:dosdate_t):CARDINAL;
- 189 PROCEDURE _dos_setdrive(drive:CARDINAL;VAR maxdrives:CARDINAL);
- 190 PROCEDURE _dos_setfileattr(path:ARRAY OF CHAR;attr:CARDINAL):CARDINAL;
- 191 PROCEDURE _dos_setftime(handle,date,time:CARDINAL):CARDINAL;
- 192 PROCEDURE _dos_settime(VAR buffer:dostime_t):CARDINAL;
- 193
- 194 PROCEDURE findfirst(path:ARRAY OF CHAR;VAR buffer:ffblk;attrib:CARDINAL):INTEGER;
- 195 PROCEDURE findnext(VAR buffer:ffblk):INTEGER;
- 196
- 197 (* **** These procedures have some fanci-danci call pragma associated with them *)
- 198 PROCEDURE _chain_intr(handler:PROC);
- 199 PROCEDURE _dos_getvect(intnum:CARDINAL):ADDRESS;
- 200 PROCEDURE _dos_setvect(intnum:CARDINAL;handler:PROC);
- 201
- 202 PROCEDURE _dos_read(handle:CARDINAL;buffer:ADDRESS;num:CARDINAL;VAR numread:CARDINAL):CARDINAL;
- 203 PROCEDURE _dos_write(handle:CARDINAL;buffer:ADDRESS;num:CARDINAL;VAR numwrit:CARDINAL):CARDINAL;
- 204
- 205 PROCEDURE _harderr(handler:PROC);
- 206 PROCEDURE _hardresume(code:CARDINAL);
- 207 PROCEDURE _hardretn(code:CARDINAL);
- 208
- 209 PROCEDURE dosexterr(VAR errbuf:doserror):CARDINAL;
- 210
- 211 PROCEDURE segread(VAR segbuf:SREGS);
- 212 PROCEDURE peek(segment,offset:CARDINAL):INTEGER;
- 213 PROCEDURE peekb(segment,offset:CARDINAL):BYTE;
- 214 PROCEDURE poke(segment,offset:CARDINAL;value:INTEGER);
- 215 PROCEDURE pokeb(segment,offset:CARDINAL;value:BYTE);
- 216
- 217 PROCEDURE inportb(port:CARDINAL):BYTE;
- 218 PROCEDURE outportb(port:CARDINAL;value:BYTE);
- 219 PROCEDURE inportw(port:CARDINAL):WORD;
- 220 PROCEDURE outportw(port:CARDINAL;value:WORD);
- 221
- 222 PROCEDURE geninterrupt(interruptnum:CARDINAL);
- 223 PROCEDURE _disable;
- 224 PROCEDURE _enable;
- 225
- 226 PROCEDURE absread(drive,nsects,lsect:CARDINAL;VAR buffer:ADDRESS):INTEGER;
- 227 PROCEDURE abswrite(drive,nsects,lsect:CARDINAL;VAR buffer:ADDRESS):INTEGER;
- 228 PROCEDURE allocmem(size:CARDINAL;VAR segp:CARDINAL):INTEGER;
- 229 PROCEDURE country(code:CARDINAL;VAR cp:country_t):country_t;
- 230 PROCEDURE ctrlbrk(handler:CtrlBrkHandler);
- 231 PROCEDURE freemem(segx:CARDINAL):INTEGER;
- 232 PROCEDURE getcbrk():INTEGER;
- 233 PROCEDURE getdate(VAR dptr:date);
- 234 PROCEDURE getdfree(drive:SHORTCARD;VAR dtable:dfree);
- 235 PROCEDURE getfat(drive:SHORTCARD;VAR dtable:fatinfo);
- 236 PROCEDURE getfatd(VAR dtable:fatinfo);
- 237 PROCEDURE getpsp():CARDINAL;
- 238 PROCEDURE gettime(VAR tptr:time);
- 239 PROCEDURE getverify():INTEGER;
- 240 PROCEDURE intr(intno:CARDINAL;VAR preg:REGPACK);
- 241 PROCEDURE keep(status:SHORTCARD;size:CARDINAL);
- 242 PROCEDURE nosound;
- 243 PROCEDURE parsefnm(VAR cmdline:ARRAY OF CHAR;VAR FCB:fcb;opt:CARDINAL):ADDRESS;
- 244 PROCEDURE randbrd(VAR FCB:fcb;rcnt:CARDINAL):CARDINAL;
- 245 PROCEDURE randbwr(VAR FCB:fcb;rcnt:CARDINAL):CARDINAL;
- 246 PROCEDURE setblock(segx,newsize:CARDINAL):INTEGER;
- 247 PROCEDURE setcbrk(val:CARDINAL):INTEGER;
- 248 PROCEDURE setdate(VAR dptr:date);
- 249 PROCEDURE settime(VAR tptr:time);
- 250 PROCEDURE setverify(value:INTEGER);
- 251 PROCEDURE sleep(secs:CARDINAL);
- 252 PROCEDURE sound(freq:CARDINAL);
- 253 PROCEDURE getdta():ADDRESS;
- 254 PROCEDURE setvect(intnum:CARDINAL;isr:PROC);
- 255 PROCEDURE getvect(intnum:CARDINAL):ADDRESS;
- 256
- 257 END cdos.
- 5 errors
|