Microsoft Fortran v5.0

This commit is contained in:
davidly 2024-07-02 07:02:04 -07:00
parent e476d8fafc
commit 979ffce0f7
52 changed files with 3164 additions and 0 deletions

View File

@ -0,0 +1,36 @@
program e
integer*2 high, n, x
integer*2 a(200)
high = 200
x = 0
n = high - 1
150 if ( n .le. 0 ) goto 200
a( n + 1 ) = 1
n = n - 1
goto 150
200 a( 2 ) = 2
a( 1 ) = 0
220 if ( high .le. 9 ) goto 400
high = high - 1
n = high
240 if ( n .eq. 0 ) goto 300
a( n + 1 ) = MOD( x, n )
x = ( 10 * a( n ) ) + ( x / n )
n = n - 1
goto 240
300 if ( x .ge. 10 ) goto 320
write( *, 2000 ) x
goto 220
320 write( *, 2001 ) x
goto 220
400 write( *, 2010 )
2000 format( '+', I1 )
2001 format( '+', I2 )
2010 format( ' done' )
end

View File

@ -0,0 +1,113 @@
c FOREXEC.INC - interface file for C library routines
c This include file along with the CEXEC.LIB library has been included
c with your FORTRAN 3.30 to show you how easy it is to call routines
c written in our new C 3.00 release. The CEXEC.LIB contains several
c routines from the C library which we think you will find useful in
c extending the power of your FORTRAN programs.
c
c The new Microsoft FORTRAN 3.30, PASCAL 3.30, and C 3.00 releases
c have been designed so that libraries or subprograms can be written
c in any one of these languages and used in any other.
c
c Try compiling and running the demonstration program DEMOEXEC.FOR
c to see some actual examples.
c C function
c
c int system(string)
c char *string;
c
c The system() function passes the given C string (00hex terminated)
c to the DOS command interpreter (COMMAND.COM), which interprets and
c executes the string as an MS-DOS command. This allows MS-DOS commands
c (i.e., DIR or DEL), batch files, and programs to be executed.
c
c Example usage in FORTRAN
c
c integer*2 system (the return type must be declared)
c ...
c i = system('dir *.for'c) (notice the C literal string '...'c)
c
c The interface to system is given below. The [c] attribute is given
c after the function name. The argument string has the attribute
c [reference] to indicate that the argument is passed by reference.
c Normally, arguments are passed to C procedures by value.
interface to integer*2 function system [c]
+ (string[reference])
character*1 string
end
c C function
c
c int spawnlp(mode,path,arg0,arg1,...,argn)
c int mode; /* spawn mode */
c char *path; /* pathname of program to execute */
c char *arg0; /* should be the same as path */
c char *arg1,...,*argn; /* command line arguments */
c /* argn must be NULL */
c
c The spawnlp (to be referenced in FORTRAN as spawn) creates and
c executes a new child process. There must be enough memory to load
c and execute the child process. The mode argument determines which
c form of spawn is executed as follows:
c
c Value Action
c
c 0 Suspend parent program and execute the child program.
c When the child program terminates, the parent program
c resumes execution. The return value from spawn is -1
c if an error has occured or if the child process has
c run, the return value is the child processes return
c code.
c
c 2 Overlay parent program with the child program. The
c child program is now the running process and the
c parent process is terminated. spawn only returns
c a value if there has been a recoverable error. Some
c errors can not be recovered from and execution will
c terminate by safely returning to DOS. This might
c happen if there is not enough memory to run the new
c process.
c
c The path argument specifies the file to be executed as the child
c process. The path can specify a full path name (from the root
c directory \), a partial path name (from the current working directory),
c or just a file name. If the path argument does not have a filename
c extension or end with a period (.), the spawn call first appends
c the extension ".COM" and searches for the file; if unsuccessful, the
c extension ".EXE" is tried. The spawn routine will also search for
c the file in any of the directories specified in the PATH environment
c variable (using the same procedure as above).
c
c Example usage in FORTRAN
c
c integer*2 spawn (the return type must be declared)
c ...
c i = spawn(0, loc('exemod'c), loc('exemod'c),
c + loc('demoexec.exe'c), int4(0)) (execute as a child)
c
c The interface to spawnlp is given below. The [c] attribute is given
c after the function name. The [varying] attribute indicates that a
c variable number of arguments may be given to the function. The
c [alias] attribute has to be used because the C name for the function
c spawnlp has 7 characters. Names in FORTRAN are only significant to
c 6 characters, so we 'alias' the FORTRAN name spawn to the actual C
c name spawnlp. Notice in the example above the C strings are passed
c differently from the system function. This is because the string
c arguments to spawn are undeclared in the interface below and assumed
c to be passed by value. The C spawnlp function is expecting the
c addresses of the strings (not the actual characters), so we use the
c LOC() function to pass the address (remember that functions with the
c [c] attribute pass arguments by value). The last parameter to the
c spawn routine must be a C NULL pointer which is a 32-bit integer 0,
c so we use the INT4(0) function to pass this number by value as the
c last parameter.
interface to integer*2 function spawn
+ [c,varying,alias:'spawnlp']
+ (mode)
integer*2 mode
end

View File

@ -0,0 +1,28 @@
C Eratosthenes Sieve from BYTE magazine
program sieve
logical flags( 8191 )
integer*2 i, prime, k, count
integer*2 iter
write( *, 50 )
50 format( ' 10 iterations' )
do 92 iter = 1, 10
count = 0
do 10 i = 0, 8190
10 flags( i ) = .true.
do 91 i = 0, 8190
if ( .not. flags( i ) ) go to 91
prime = i + i + 3
k = i + prime
20 if ( k .gt. 8190 ) go to 90
flags( k ) = .false.
k = k + prime
go to 20
90 count = count + 1
91 continue
92 continue
write( *, 200 ) count
200 format( 1X, I6, ' primes' )
stop
100 format( 1X, I6 )
end

View File

@ -0,0 +1,214 @@
C fortran version of proving you can't win at tic-tac-toe if the opponent is competent
C constants:
C score win: 6
C score tie: 5
C score lose: 4
C score max: 9
C score min: 2
C piece X: 1
C piece O: 2
C piece blank: 0
$include : 'forexec.inc'
program ttt
integer*4 moves
integer*2 b(9), sp(10), sv(10), sa(10), sb(10), sm(10)
integer*2 mc
integer*2 alpha, beta, wi, st, sc, v, p, pm, m
common /area/ b,sp,sv,sa,sb,sm,mc,alpha,beta,wi,st,sc,v,p,pm,m
integer*2 system
do 6 l = 1, 9, 1
b( l ) = 0
6 continue
l = system('tm'c)
moves = 0
do 10 l = 1, 10, 1
C do 10 l = 1, 1, 1
mc = 0
m = 1
call runmm
m = 2
call runmm
m = 5
call runmm
moves = moves + mc
10 continue
l = system('tm'c)
write( *, 20 ) moves
20 format( ' moves: ', I6 )
end
1000 subroutine runmm
integer*2 b(9), sp(10), sv(10), sa(10), sb(10), sm(10)
integer*2 mc
integer*2 alpha, beta, wi, st, sc, v, p, pm, m
common /area/ b,sp,sv,sa,sb,sm,mc,alpha,beta,wi,st,sc,v,p,pm,m
alpha = 2
beta = 9
p = m
b(m) = 1
call minmax
b(m) = 0
return
end
2000 subroutine winner
integer*2 b(9), sp(10), sv(10), sa(10), sb(10), sm(10)
integer*2 mc
integer*2 alpha, beta, wi, st, sc, v, p, pm, m
common /area/ b,sp,sv,sa,sb,sm,mc,alpha,beta,wi,st,sc,v,p,pm,m
wi = b( 1 )
if ( 0 .eq. wi ) go to 2100
if ( ( wi .eq. b( 2 ) ) .and. ( wi .eq. b( 3 ) ) ) return
if ( ( wi .eq. b( 4 ) ) .and. ( wi .eq. b( 7 ) ) ) return
2100 wi = b( 4 )
if ( 0 .eq. wi ) go to 2200
if ( ( wi .eq. b( 5 ) ) .and. ( wi .eq. b( 6 ) ) ) return
2200 wi = b( 7 )
if ( 0 .eq. wi ) go to 2300
if ( ( wi .eq. b( 8 ) ) .and. ( wi .eq. b( 9 ) ) ) return
2300 wi = b( 2 )
if ( 0 .eq. wi ) go to 2400
if ( ( wi .eq. b( 5 ) ) .and. ( wi .eq. b( 8 ) ) ) return
2400 wi = b( 3 )
if ( 0 .eq. wi ) go to 2500
if ( ( wi .eq. b( 6 ) ) .and. ( wi .eq. b( 9 ) ) ) return
2500 wi = b( 5 )
if ( 0 .eq. wi ) return
if ( ( wi .eq. b( 1 ) ) .and. ( wi .eq. b( 9 ) ) ) return
if ( ( wi .eq. b( 3 ) ) .and. ( wi .eq. b( 7 ) ) ) return
wi = 0
end
4000 subroutine minmax
integer*2 b(9), sp(10), sv(10), sa(10), sb(10), sm(10)
integer*2 mc
integer*2 alpha, beta, wi, st, sc, v, p, pm, m
common /area/ b,sp,sv,sa,sb,sm,mc,alpha,beta,wi,st,sc,v,p,pm,m
st = 0
v = 0
4100 mc = mc + 1
if ( st .lt. 4 ) go to 4150
C the computed goto is about 20% faster than calling winner
C call winner
go to ( 5010, 5020, 5030, 5040, 5050, 5060, 5070, 5080, 5090 ), p
4110 if ( wi .eq. 0 ) go to 4140
if ( wi .ne. 1 ) go to 4130
sc = 6
go to 4280
4130 sc = 4
go to 4280
4140 if ( st .ne. 8 ) go to 4150
sc = 5
go to 4280
4150 if ( b( p ) .eq. 1 ) go to 4160
v = 2
pm = 1
go to 4170
4160 v = 9
pm = 2
4170 p = 1
4180 if ( b( p ) .ne. 0 ) go to 4500
b( p ) = pm
4182 st = st + 1
sp( st ) = p
sv( st ) = v
sa( st ) = alpha
sb( st ) = beta
sm( st ) = pm
go to 4100
4280 p = sp( st )
v = sv( st )
alpha = sa( st )
beta = sb( st )
pm = sm( st )
st = st - 1
b( p ) = 0
if ( pm .eq. 1 ) go to 4340
if ( sc .eq. 4 ) go to 4530
if ( sc .lt. v ) v = sc
if ( v .lt. beta ) beta = v
if ( beta .le. alpha ) go to 4520
go to 4500
4340 if ( sc .eq. 6 ) go to 4530
if ( sc .gt. v ) v = sc
if ( v .gt. alpha ) alpha = v
if ( alpha .ge. beta ) go to 4520
4500 p = p + 1
if ( p .lt. 10 ) go to 4180
4520 sc = v
4530 if ( st .eq. 0 ) return
go to 4280
5010 wi = b(1)
if ( ( wi .eq. b(2) ) .and. ( wi .eq. b(3) ) ) goto 4110
if ( ( wi .eq. b(4) ) .and. ( wi .eq. b(7) ) ) goto 4110
if ( ( wi .eq. b(5) ) .and. ( wi .eq. b(9) ) ) goto 4110
wi = 0
go to 4110
5020 wi = b(2)
if ( ( wi .eq. b(1) ) .and. ( wi .eq. b(3) ) ) goto 4110
if ( ( wi .eq. b(5) ) .and. ( wi .eq. b(8) ) ) goto 4110
wi = 0
go to 4110
5030 wi = b(3)
if ( ( wi .eq. b(1) ) .and. ( wi .eq. b(2) ) ) goto 4110
if ( ( wi .eq. b(6) ) .and. ( wi .eq. b(9) ) ) goto 4110
if ( ( wi .eq. b(5) ) .and. ( wi .eq. b(7) ) ) goto 4110
wi = 0
go to 4110
5040 wi = b(4)
if ( ( wi .eq. b(5) ) .and. ( wi .eq. b(6) ) ) goto 4110
if ( ( wi .eq. b(1) ) .and. ( wi .eq. b(7) ) ) goto 4110
wi = 0
go to 4110
5050 wi = b(5)
if ( ( wi .eq. b(1) ) .and. ( wi .eq. b(9) ) ) goto 4110
if ( ( wi .eq. b(3) ) .and. ( wi .eq. b(7) ) ) goto 4110
if ( ( wi .eq. b(2) ) .and. ( wi .eq. b(8) ) ) goto 4110
if ( ( wi .eq. b(4) ) .and. ( wi .eq. b(6) ) ) goto 4110
wi = 0
go to 4110
5060 wi = b(6)
if ( ( wi .eq. b(4) ) .and. ( wi .eq. b(5) ) ) goto 4110
if ( ( wi .eq. b(3) ) .and. ( wi .eq. b(9) ) ) goto 4110
wi = 0
go to 4110
5070 wi = b(7)
if ( ( wi .eq. b(8) ) .and. ( wi .eq. b(9) ) ) goto 4110
if ( ( wi .eq. b(1) ) .and. ( wi .eq. b(4) ) ) goto 4110
if ( ( wi .eq. b(5) ) .and. ( wi .eq. b(3) ) ) goto 4110
wi = 0
go to 4110
5080 wi = b(8)
if ( ( wi .eq. b(7) ) .and. ( wi .eq. b(9) ) ) goto 4110
if ( ( wi .eq. b(2) ) .and. ( wi .eq. b(5) ) ) goto 4110
wi = 0
go to 4110
5090 wi = b(9)
if ( ( wi .eq. b(7) ) .and. ( wi .eq. b(8) ) ) goto 4110
if ( ( wi .eq. b(3) ) .and. ( wi .eq. b(6) ) ) goto 4110
if ( ( wi .eq. b(1) ) .and. ( wi .eq. b(5) ) ) goto 4110
wi = 0
go to 4110
end

Binary file not shown.

View File

@ -0,0 +1,509 @@
[M MEP]
; TOOLS.INI file for BRIEF(tm) configuration
NotBrief:=arg "No equivalent in the Microsoft Editor" message
ToolsIni:=arg "$INIT:tools.ini" setfile
;
; GLOBAL CONFIGURATION
;
autosave:no
undocount:30
autostart:=toggle_re
vscroll:1
errprompt:no
nounixre:
rmargin:70
;
; Backup File Toggle. Toggle through M.E.'s backup options and let
; the user know that something extra is going on.
;
backup:bak
baknone:=arg "backup:none" assign arg "File backups turned off!" message \
arg "bakbak:Ctrl+W" assign
bakbak:=arg "backup:bak" assign arg "Single backups enabled" message \
arg "bakundel:Ctrl+W" assign
bakundel:= arg "backup:undel" assign arg "Multiple backups enabled" message \
arg "baknone:Ctrl+W" assign
bakundel:Ctrl+W
;
; Beginning of Line
;
beginning_of_line:=meta begline
beginning_of_line:Home
;
; Buffer List
;
Information:Alt+B
;
; Case Sensitivity Toggle
;
case:yes
caseon:=arg "case:" assign arg "Enabled Case Sensitivity" message \
arg "caseoff:ctrl+f5" assign
caseoff:=arg "nocase:" assign arg "Disabled Case Sensitivity" message \
arg "caseon:ctrl+f5" assign
caseoff:ctrl+f5
;
; Center Line Horizontally
; Center Line in Window.
; There are no centering functions in M.E.
;
center:=NotBrief
NotBrief:Ctrl+C
;
; Change Output File
;
output_file:=arg arg "Enter new output file name: " prompt -> setfile
output_file:Alt+O
;
; Change Window
;
Window:F2
;
; Color. To set colors in M.E., assign a new value to one of the
; following switches. The value is a two digit hex number where the
; first digit is the background color and the second is the foreground.
; The number to color mapping is the same as in Brief. The color change
; will not take effect until you restart the editor. To see an immediate
; change, mark (select) the color assignment lines and press Alt+=.
;
color:=ToolsIni begfile arg "color:=ToolsIni" psearch up up up up up up up
fgColor:07 ; Text color
selColor:70 ; Selection color
hgColor:02 ; Search text color
infColor:06 ; Message color
staColor:03 ; Status Line
errColor:04 ; Error Color
wdColor:07 ; Window Borders
;
; Compile Buffer. Compile command is set with the 'extmake' switch
; (see documentation).
;
compile_it:=Arg Compile
compile_it:Alt+F10
;
; Create Key Assignment
;
assign_to_key:=arg <assign> setfile
;
; Create Window. Window handling is very different in M.E.
;
; To create a new window, move the cursor to the line or column where
; the new border is to be placed and do:
;
; Alt+A F3 - to create a horizontal border
; Alt+A Alt+A F3 - to create a vertical border
;
; To change the current window, press F3.
;
; To delete an existing window, go to that window and press F4.
;
; Windows cannot be resized.
;
create_edge:=ToolsIni begfile arg "create_edge:=" psearch up up up up \
up up up up up up up up up up arg "window:F3" assign
create_edge:F3
;
; Cut to Scrap. Doesn't take current line if nothing is selected.
;
delete:num-
;
; Delete
;
clear:=meta delete
clear:del
;
; Delete Current Buffer
;
delete_curr_buffer:=arg refresh
delete_curr_buffer:Ctrl+_
;
; Delete Line. In M.E., the line goes to the clipboard.
;
ldelete:Alt+D
;
; Delete Macro File
;
NotBrief:Shift+F9
;
; Delete Next Word
;
delete_next_word:=Arg Pword Clear
;
; Delete Previous Word
;
delete_previous_word:=Pword Arg Mword Clear
delete_previous_word:Ctrl+Bksp
;
; Delete to End of Line
;
delete_to_eol:=arg ldelete
delete_to_eol:Alt+K
;
; Delete Window
;
delete_edge:=meta window
delete_edge:F4
;
; Display File Name
;
display_file_name:=arg curfile message
display_file_name:Alt+F
;
; Display version ID
;
version:=arg "Microsoft Editor Version 1.02" message
version:Alt+V
;
; EditFile
;
EditFile:=arg "File: " prompt -> setfile
EditFile:Alt+E
;
; End of Window
;
end_of_window:=meta down
end_of_window:Ctrl+End
;
; Execute Command. In M.E. you can enter any series of functions or
; macros, including string literals "in quotes".
;
execute_macro:=arg "Command: " prompt -> execute
execute_macro:F10
;
; Exit
;
exit:Alt+X
;
; Go to Line
;
GoTo:=arg "Go to line: " prompt -> mark
GoTo:alt+g
;
; Go to routine.
;
routines:=arg "You can use marks to go to routines. See documentation" \
message
routines:Ctrl+G
;
; Help. First make sure that help is loaded. Then attach context-
; sensitive help to Alt+H.
;
load:$PATH:mhelp
mhctx:Alt+H
;
; Incremental Search
;
i_search:=NotBrief
;
; Insert Mode Toggle. Toggle between Insert and Overstrike modes and issue
; a message telling the user what has been done.
;
enterinsmode:yes
insert_mode:=Insertmode +>showins arg "Overstrike Mode" message => \
:>showins arg "Insert Mode" message
insert_mode:Alt+I
;
; Left Side of Window
;
left_side:=meta left
left_side:Shift+Home
;
; Line to Bottom of Window
;
NotBrief:Ctrl+B
;
; Line to Top of Window
;
NotBrief:Ctrl+T
;
; Load Macro File
;
NotBrief:F9
;
; Lower Case Block
;
load:$PATH:ulcase
tolower:=ulcase
;
; Mark. Known in M.E. as selecting text. In M.E., selection is
; done in one of two modes: stream and box/line, which correspond
; to normal and column/line selection in Brief. To select lines,
; start marking in column mode, but move straight down. To change
; between modes in M.E., a toggle function <boxstream> is provided.
;
; Arg:Alt+A ; M.E. selection (default assignment)
; BoxStream:Ctrl+B ; M.E. mode toggle (default assignment)
;
ToStream:=BoxStream -> BoxStream ; Change to stream mode
ToBox:=BoxStream +> BoxStream ; Change to box/line mode
mark2:=ToBox Arg
mark2:Alt+C
mark2:Alt+L
mark1:=ToStream Arg
mark1:Alt+M
;
; Next Buffer
;
setfile:Alt+N
;
; Next Character
;
next_char:=NotBrief
;
; Next Error
;
NextMsg:Ctrl+N
;
; Non-Inclusive Mark
;
open_line:=down linsert meta begline
open_line:Ctrl+Enter
;
; Paste From Scrap
;
paste:ins
;
; Pause Recording Toggle
;
NotBrief:Shift+F7
;
; Pause On Error
;
pause_on_error:=togErr arg "togErr:=" errname assign
togErr:=errOn
errOn:=arg "errprompt:" assign arg "errname:=\"errOff\"" assign
errOff:=arg "noerrprompt:" assign arg "errname:=\"errOn\"" assign
;
; PlayBack
;
recordvalue:=arg "No recording has been made" message.
recordvalue:F8
;
; Pop-up Errors. In M.E., this switches you to the compile file. You
; can go to any message with Alt+A Alt+A NextMsg.
;
next_error1:=arg "<compile>" setfile
next_error1:Ctrl+P
;
; Previous Buffer. There are no "next" and "previous" buffers in M.E.,
; so this is the same as "Next Buffer".
;
setfile:Alt+-
;
; Previous Character
;
prev+char:=NotBrief
;
; Print Block
;
print:Alt+P
;
; Quote
;
quote:Alt+Q
;
; Read File into Buffer
;
read_file:=arg arg "File to read: " prompt -> paste
;
; Reformat Paragraph
;
load:$PATH:justify
reform:=justify
;
; Regular Expression Toggle. In M.E., regular expression recognition
; is controlled by modifying the search and search/replace functions
; (Arg Arg forces regular expression search).
;
toggle_re:=togRE arg "togRE:=" srchname assign
toggle_re:Ctrl+F6
togRE:=REon
REoff:=arg "psrch:=arg \"Search for: \" prompt -> psearch" assign \
arg "msrch:=arg \"Search for: \" prompt -> msearch" assign \
arg "qrepl:=qreplace" assign \
arg "srchname:=\"REon\"" assign \
arg "Disabled Regular Expressions" message
REon:=arg "psrch:=arg arg \"Search for: \" prompt -> psearch" assign \
arg "msrch:=arg arg \"Search for: \" prompt -> msearch" assign \
arg "qrepl:=arg arg qreplace" assign \
arg "srchname:=\"REoff\"" assign \
arg "Enabled Regular Expressions" message
;
; Remember. Use Arg Arg Record to append to existing macro.
;
record:F7
;
; Repeat
;
repeat:Ctrl+R
;
; Right Side of Window
;
right_side:=meta right
right_side:Shift+End
;
; Scroll Buffer Down in Window
;
mlines:Ctrl+D
;
; Scroll Buffer Up in Window
;
plines:Ctrl+U
;
; Search Again
;
search_again:=psearch
search_again:Shift+F5
;
; Search Backward
;
search_back:=msrch arg "search_again:=msearch" assign
search_back:Alt+F5
;
; Search Forward
;
search_fwd:=psrch arg "search_again:=psearch" assign
search_fwd:F5
search_fwd:Alt+S
;
; Suspend Editor
;
shell:Alt+Z
;
; Tab. Please read the documentation for a full description of tabs.
;
graphic:tab
realtabs:yes
entab:0
tabstops:8
;
; Tab Stops
;
tabs:=NotBrief
;
; Top of Buffer
;
begfile:Ctrl+PgUp
;
; Top of Window
;
top_of_window:=meta up
top_of_window:Ctrl+Home
;
; Translate Again
;
translate_again:=qrepl
translate_again:Shift+F6
;
; Translate Backward
;
translate_back:=arg "You can only translate forwards" message
translate_back:Alt+F6
;
; Translate Forward
;
translate:=qrepl
translate:F6
translate:Alt+T
;
; Undo
;
undo:Alt+U
undo:num*
;
; Use Tab Characters
;
use_tab_char:=arg "entab:1" assign
;
; Window Border Toggle
;
NotBrief:Alt+F1
;
;
; Write
;
write_it:=arg arg setfile
write_it:Alt+W
;
; BRIEF is a trademark of UnderWare, INC.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,68 @@
; TOOLS.INI file for EPSILON configuration
[M MEP]
Arg:Ctrl+U
Arg:Ctrl+X
Argcompile:F5
Assign:F1
Backtab:Shift+Tab
Begline:Ctrl+A
Cancel:Ctrl+C
Compile:Shift+F3
Copy:Alt+W
Down:Down
Down:Ctrl+N
Emacscdel:Bksp
Emacscdel:Ctrl+H
Emacsnewl:Enter
Endline:Ctrl+E
Execute:Alt+X
Exit:F8
Help:F10
Home:Home
Information:Shift+F1
Initialize:Alt+F10
Insertmode:Ctrl+V
Lasttext:Alt+L
Ldelete:Ctrl+K
Left:Left
Left:Ctrl+B
Linsert:Ctrl+O
Mark:Ctrl+@
Meta:F9
Mlines:Ctrl+W
Mpage:Pgup
Mpage:Alt+V
Mpara:Alt+Up
Msearch:Ctrl+R
Mword:Ctrl+Left
Mword:Alt+B
Paste:Ctrl+Y
Paste:Ins
Pbal:Ctrl+[
Plines:Ctrl+Z
Ppage:Pgdn
Ppara:Alt+Down
Psearch:F4
Psearch:Ctrl+S
Pword:Ctrl+Right
Pword:Alt+F
Qreplace:Alt+F3
Qreplace:Alt+5
Qreplace:Alt+8
Quote:Ctrl+Q
Refresh:Alt+R
Right:Right
Right:Ctrl+F
Sdelete:Del
Sdelete:Ctrl+D
Setfile:F2
Setwindow:Ctrl+]
Shell:Alt+Z
Sinsert:Alt+Ins
Tab:Tab
Tab:Ctrl+I
Undo:Ctrl+Bksp
Up:Up
Up:Ctrl+P
Window:Alt+Pgdn

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,566 @@
G
W
4
0
0
maximum memory-allocation size exceeded
program too large for memory
%fs : array bound used function call
%fs : array bound used intrinsic call
%fs : array bound used array reference
%fs : array bound used illegal variable
%fs : array bound used illegal variable
%fs : already dimensioned
%fs : allocatable variable cannot be AUTOMATIC
%fs : ALLOCATABLE : bounds must be omitted
%fs : array bounds missing
%fs : more than 7 array bounds
%s : attributes illegal on array bounds
%fs : variable was declared automatic
%fs : variable was declared automatic
%fs : * : not last array bound
%fs : bound size too small
%fs : adjustable-size array not in subprogram
%fs : NEAR array bigger than segment
attributes are nonstandard
%fs : %s attribute repeated
%fs : %s illegal with attributes specified in same list
%fs : %s attribute mismatch with earlier NEAR/FAR/HUGE
%fs : %s illegal with attributes specified in earlier list
%fs : NEAR/FAR/HUGE attribute mismatches default
%fs : %s illegal on COMMON statements
%fs : %s illegal on formal arguments
%fs : %s illegal on ENTRY statements
%fs : %s illegal on subprogram statements
%fs : %s illegal on variable declarations
%fs : %s illegal on NAMELIST declarations
%fs : %s illegal on STRUCTURE declarations
%fs : %s illegal on type declarations
%fs : language attributes illegal on formal arguments
%fs : %s only legal on formal arguments
%fs : ALLOCATABLE : common block variable illegal
%fs : ALLOCATABLE : equivalenced variable illegal
%fs : illegal bound type
%s : bound not integer
%fs : substring on noncharacter item
%fs : upper substring bound exceeds string length
%fs : lower substring bound exceeds upper bound
%fs : lower substring bound not positive
concatenation with CHARACTER*(*)
cannot pass CHARACTER*(*) by value
label %ld : redefined in program unit
no ASSIGN statements for assigned %s
IF or ELSEIF missing
expression type not LOGICAL
statement stack underflow
statement-nesting limit exceeded
label %ld : used across blocks
no assigned GOTO or FMT= for ASSIGN statement
ASSIGN target not an INTEGER variable
%fs : ASSIGN : variable not INTEGER
%fs : ASSIGN : too many INTEGER*1 variables
expression must be integer, character, or logical
SELECT CASE : character expression must be of length 1
no matching SELECT CASE statement
no matching SELECT CASE statement
only one CASE DEFAULT allowed
CASE values must be constant expressions
CASE value type does not match SELECT CASE expression type
LOGICAL case value ranges illegal
lower value exceeds upper value in case value range
overlapping case values
no matching DO loop
DO-loop label %ld : out of order
DO-loop expression not INTEGER or REAL
zero illegal as increment
DO-loop variable : not a variable
%fs : illegal use of active DO-loop variable
DO-loop variable not INTEGER or REAL
ENDIF missing
DO-loop label %ld : not seen
DO-loop ENDDO : not seen
END SELECT missing
IF, ELSEIF, or ELSE missing
too many assigned GOTO statements
only variables allowed in assigned GOTO statements
assigned GOTO variable not INTEGER
computed GOTO variable not INTEGER
expression type not INTEGER or REAL
illegal statement after logical IF
label %ld : previously used as FORMAT label
label %ld : previously used as executable label
block label %ld : must not be referenced
label %ld : must not be referenced
DO-loop label %ld : out of order
assigned and unconditional GOTO illegal here
block and arithmetic IF illegal here
statement illegal as DO-loop termination
%s : maximum of 5 digits
%s : illegal expression
%fs : EQUIVALENCE : enclosing class too big
%fs : %s : attributes on items illegal
%fs : EQUIVALENCE : formal argument illegal
%fs : EQUIVALENCE : not array
%fs : EQUIVALENCE : array subscripts missing
%fs : EQUIVALENCE : nonconstant offset illegal
%fs : EQUIVALENCE : nonconstant upper substring expression ignored
%fs : nonconstant lower substring expression illegal
%fs : EQUIVALENCE : structure elements illegal
%s : NAMELIST : array bounds illegal
%s : %s : length specification illegal
%s : %s : attributes on items illegal
%s : %s : %s name illegal
%s : %s : preinitialization illegal
%s : %s : allocatable array illegal
%s : %s : automatic variable illegal
%s : %s : structure illegal
%s : %s : formal argument illegal
%s : %s : not an array or variable
%fs : COMMON : character and noncharacter items mixed
%fs : COMMON : too big
%fs : COMMON : array size nonconstant or zero
%fs, %fs : EQUIVALENCE : character and noncharacter items mixed
%fs, %fs : EQUIVALENCE : both in blank common block
%fs, %fs : EQUIVALENCE : both in common block %fs
%fs, %fs : EQUIVALENCE : in different common blocks
%fs : EQUIVALENCE : extends blank common block forward
%fs : EQUIVALENCE : extends common block %fs forward
%fs, %fs : EQUIVALENCE : conflicting offsets
%fs : EQUIVALENCE : two different common blocks
%fs : item in common block crosses segment
%fs : COMMON : size changed
%fs : COMMON : size changed
%fs : NEAR common block has HUGE item
blank common can not be HUGE
%fs : COMMON : too big to be NEAR
%s : COMMON : function or subroutine name
%fs : already in COMMON
NAMELIST : group name required
NAMELIST : group name required
%s : already in this namelist group
%fs : EQUIVALENCE : needs at least two items
DATA : iteration count not positive
%s : DATA : illegal address expression
%s : cannot initialize formal argument
%s : cannot initialize item in blank common block
%s : can only initialize common block in BLOCK DATA subprogram
%s : DATA : not an array or variable
%s : variable was declared automatic
%s : cannot initialize allocatable array
%fs : repeat count not positive integer
%fs : DATA : nonconstant item in initializer list
%fs : DATA : too few constants to initialize item
%s : nonstatic address illegal in initialization
%s : bound or increment not constant
%s : bound or increment not INTEGER
%s : DATA : zero increment
%fs : DATA : active implied-DO variable
%s : DATA : implied-DO variable not INTEGER
%s : DATA : not array-element name
DATA : too few constants to initialize names
DATA : more constants than names
%s : nonstandard statement
%s : already declared %s
%s : illegal use of %s
%s : %s variable cannot be AUTOMATIC
%fs : element name conflicts with operator
%fs : already typed
%s : already typed
%s : types illegal on BLOCK DATA/COMMON/PROGRAM/SUBROUTINE
%s : cannot initialize in type statements
DOUBLE %s : length specifier illegal
%s : STRUCTURE : preinitialization illegal
%fs : CHARACTER*(*) type illegal
%fs : STRUCTURE : too big
%s : EQUIVALENCE : preinitialization illegal
%s : COMMON : preinitialization illegal
IMPLICIT NONE already seen
IMPLICIT already seen
RECORD : structure type illegal in IMPLICIT statement
%s : IMPLICIT : only single letter allowed
%c, %c : IMPLICIT : lower limit exceeds upper limit
%c : already IMPLICIT
%s : INTRINSIC : unknown name
%s : PARAMETER : nonconstant expression
formal argument %s: cannot be SAVE or AUTOMATIC
syntax error
STRUCTURE : not a name
%s : already typed
%fs : STRUCTURE: intrinsic type name
END STRUCTURE : no matching STRUCTURE statement
%fs : STRUCTURE has no elements
UNION : not in a STRUCTURE
END UNION : no matching UNION
MAP : no enclosing UNION statement
END MAP : no matching MAP statement
too many symbols
%s : declared with wrong type
%fs : intrinsic function illegal as actual argument
LEN : illegal expression
%s : multiple arguments
%s : cannot convert FAR address to NEAR
%s : incorrect use of intrinsic function
%s : cannot convert to %s
%s : incorrect use of intrinsic function
%c : illegal separator
%s : cannot open include file
octal value too big for byte
%s : nonstandard character string delimiter
closing quote missing
CHARACTER constant too long
zero-length CHARACTER constant
empty escape sequence
integer string too long
alternate bases illegal
illegal base value
INTEGER constant must follow #
illegal REAL constant
%s : include file nested too deeply
INTEGER value overflow
FORMAT string too long
missing ] following attribute string
%s : attribute repeated
colon expected following ALIAS
opening quote missing
unrecognized attribute
%s : name too long; truncated
%s : already specified in $%sLARGE
INCLUDE : argument must be character constant
INCLUDE : quoted string missing
metacommands are nonstandard
$DEBUG:'<debug-list>' illegal with $FREEFORM
%c : nonalphabetic character in $DEBUG ignored
$DEBUG:'<debug-list>' : string expected
$DECMATH not supported
no matching $IF
no matching $IF
no matching $IF
$INCLUDE:'<filename>' : string expected
$%s : integer constant out of range
$%s:<integer constant> : integer constant expected
$%sLARGE already set
$%sLARGE illegal in executable statements
$MESSAGE:'<message>' : string expected
$STORAGE:<number> : 2 or 4 expected
$SUBTITLE:'<subtitle>' : string expected
$TITLE:'<title>' : string expected
unrecognized metacommand
metacommand already set
metacommand must come before all FORTRAN statements
characters following metacommand ignored
Hollerith constant exceeds 1313 characters
zero-length Hollerith constant
Hollerith constant : text length disagrees with given length
Hollerith not allowed
%s : non-FORTRAN character
%s : error closing file
illegal label field
zero-value label field
free-form label too long
label on continuation line
$IF : no matching $ENDIF
first statement line must have ' ' or '0' in column 6
too many continuation lines
label on blank line
relational operator expected
relational operator expected
invalid integer constant
%c : unrecognized character
%s : defined with no value
%s : not defined
logical operator expected
logical operator expected
syntax error
syntax error
operand expected
invalid expression in metacommand
invalid integer constant
unmatched parenthesis
%c : unrecognized character
%c : unrecognized character
unmatched parenthesis
%s : defined with no value
%s : not defined
%c : unrecognized character
syntax error
$DEFINE : %s : already defined
$UNDEFINE : %s : not defined
invalid integer constant
%c : unrecognized character
%s : defined with no value
%c : unexpected characters at end of expression
illegal %s flag, would overwrite %s with %s
too many %s flags, %s
%s : unknown option (%c)
%s : illegal number in switch
illegal command-line option
out of disk space for compiler internal file
write error on compiler internal file
%s : cannot open file
%s : name too long
cannot open internal files
-4Y and -4N : both options used for argument
-4Y and -4N : both options used; -4Y assumed
syntax error
END missing
%s : unrecognized option
-4I2 or -4I4 expected
illegal -A option
-W%d : illegal warning level ignored
-Zp%d : illegal pack value ignored
program too large for memory
RETURN : integer or character expression required
%fs : alternate RETURN missing
%s : DIMENSION : not array
statement illegal with INTERFACE
statement illegal in INTERFACE
statement illegal in BLOCK DATA
a CASE statement must follow a SELECT CASE statement
statement illegal in STRUCTURE declaration
%s : formal argument not local variable
%s : formal argument not a variable
%s : repeated in formal-argument list
%s : statement function already declared
%s : statement function : too few actual arguments
%s : statement function : too many actual arguments
%fs : formal argument %fs : never used
%fs : formal argument %fs : subprogram passed by VALUE
%fs : formal argument %fs : symbol-class mismatch
%fs : language attribute mismatch
%fs : type redefined
%fs : length redefined
%fs : NEAR/FAR attribute mismatch
%fs : VARYING attribute mismatch
%fs : previously called near
%fs : previously called far
%fs : defined with different number of arguments
%fs : formal argument %fs : Hollerith passed to CHARACTER formal argument
%fs : formal argument %fs : VALUE/REFERENCE mismatch
%fs : formal argument %fs : NEAR/FAR/HUGE mismatch
%fs : formal argument %fs : previously passed by value, now by reference
%fs : formal argument %fs : previously passed by reference, now by value
%fs : formal argument %fs : previously passed with NEAR, now with FAR or HUGE
%fs : formal argument %fs : previously passed with FAR or HUGE, now with NEAR
%fs : formal argument %fs : CHARACTER *(*) cannot pass by value
%s : formal argument redefined
%s : illegal as formal argument
%s : formal argument previously initialized
%s : EQUIVALENCE : formal argument illegal
%s : COMMON : formal argument illegal
ENTRY : formal argument %s : attribute %s : mismatch
alternate RETURN only legal within SUBROUTINE
ENTRY seen before FUNCTION or SUBROUTINE
ENTRY not in function or subroutine
too many PROGRAM statements
%s : formal argument used as ENTRY
%s : PROGRAM : name redefined
%s : used or declared before ENTRY statement
%fs : RECORD : illegal FUNCTION type
%s : subprogram used or declared before INTERFACE
%s : already defined
%s : already used or declared with different symbol class
%s : ENTRY : CHARACTER lengths differ
%s : ENTRY : CHARACTER and non-CHARACTER types mixed in ENTRY statements
too many ENTRY statements
%fs : INTERFACE : not formal argument
%fs : ALLOCATABLE : must be an array
%fs : assumed-size array : cannot pass by value
%fs : adjustable-size array : cannot pass by value
statement out of order or END missing
statement out of order
no state transition for root of tree
%fs : name too long; truncated
%s : truncated to 6 characters
%s : not previously declared
label %ld : undefined
%fs : FUNCTION : return variable not set
%fs : variable declared but not used
%fs : variable used but not defined
%fs : assumed-size array : not reference argument
%fs : adjustable-size array : not reference argument
%fs : CHARACTER*(*) type illegal
%fs : VARYING illegal on symbol class
%fs : $ illegal in C name
%s : illegal length
value %ld : INTEGER : range error
CHARACTER*(*) in multi-thread may not work
integer constant expression expected
length specification illegal
length %ld : illegal type length
only C attribute legal on INTEGER type
%s : not a STRUCTURE name
attributes illegal on non-INTEGER types
DOUBLE PRECISION : length specifier illegal
DOUBLE COMPLEX : length specifier illegal
%fs : missing type
illegal use of Hollerith constant
illegal type conversion
cannot convert between CHARACTER and non-CHARACTER constants
cannot convert type to %s
%fs : element is an array
unknown primitive type
missing symbol reference
unknown constant type
%fs : array expression : cannot be adjustable-size array
%fs : array expression : cannot be assumed-size array
%fs : array expression : cannot be allocatable array
%fs : array expression : argument does not conform
%fs : array expression : argument does not conform
%fs : subscript %ld out of range
%fs : subscript %ld out of range
%fs : subscript %d : not integer
%fs : too few array subscripts
%fs : too many array subscripts
%fs : array subscripts missing
%fs : adjustable-size array : used before definition
%s : not an element of %fs
%fs : variable : argument list illegal
%fs : substring on noncharacter item
%fs : not a structure
%s : symbolic constant : subscript illegal
%s : symbolic constant : substring illegal
%s : variable : argument list illegal
%s : function : argument list missing
%s : not a variable
%s : not a structure
%s : function : substring operator illegal
left side of assignment illegal
%fs : assignment using active DO variable illegal
incompatible types in assignment
%fs : formal argument %fs : Hollerith illegal with CHARACTER
%fs : formal argument %fs : type mismatch
%fs : formal argument %fs : type mismatch
%fs : formal argument %fs : length mismatch
%fs : formal argument %fs : length mismatch
%fs : alternate RETURN statement missing
%fs : formal argument * : actual not alternate-return label
%fs : formal argument %fs : not alternate-return label
%fs : formal argument %fs : actual not subprogram
%fs : formal argument %fs : subprogram mismatch
%fs : formal argument %fs : not subprogram
%fs : NEAR formal argument %fs : actual has FAR or HUGE address
%fs : formal argument %s : passed FAR/HUGE
%fs : formal argument %fs : length mismatch
%fs : formal argument %fs : type mismatch
%fs : not function or subroutine
%fs : illegal use of function or subroutine
%fs : type redefined
%fs : length redefined
%fs : too few actual arguments
%fs : too many actual arguments
%fs : directly recursive
%fs : Hollerith constant passed by value
%fs : assumed-size array %fs : cannot pass by value
%fs : adjustable-size array %fs : cannot pass by value
%fs : value argument bigger than segment
%fs : formal argument %fs : CHARACTER expressions cannot be passed by VALUE
nonconstant CHARACTER length : cannot pass by value
incompatible types for formal and actual arguments
%fs : formal argument %fs : length mismatch
%fs : FAR formal argument %fs : passed HUGE array
%fs : procedure must be EXTERNAL
%fs : cannot use CHARACTER *(*) function
consecutive arithmetic operators illegal
negative exponent with zero base
division by zero
nonlogical operand
operand type must be logical or integer
non-numeric operand
exponentiation of COMPLEX and DOUBLE PRECISION together illegal
non-numeric operand
operand types do not match
invalid operator for structure variable operands
operands of relation not numeric or character
one numeric, one character operand
only comparisons by .EQ. and .NE. allowed for complex items
concatenation of expressions illegal
noncharacter operand
consecutive relational operators illegal
illegal implied-DO list in expression
illegal Xxprep node type
%s : COMPLEX : type conversion error
%s : REAL : type conversion error
%s : operation error with COMPLEX operands
%s : operation error with REAL operands
%fs : symbol class illegal here
DO : too many expressions
label %ld : not between 1 and 99999
I/O implied-DO list : list empty
I/O implied-DO list : too many expressions
I/O implied-DO list : illegal assignment
I/O implied-DO list : too few expressions
I/O implied-DO list : assigment missing
assignments in COMPLEX constant illegal
illegal assignment in parenthesized expression
numeric constant expected
%s : not symbolic constant
component of COMPLEX number not INTEGER or REAL
parser stack overflow, statement too complex
syntax error
%s : not %s
%s : noncharacter array nonstandard
%s : array subscript missing
%s : not a variable or array element
label %ld : not between 1 and 99999
UNIT = * illegal for this statement
illegal unit specifier
illegal format specifier
HUGE format illegal
FAR format illegal in medium model
%s : illegal statement label
%s : NML= : not a namelist group name
NML= : namelist group name missing
%s : appears twice
I/O option %ld : <keyword>= missing
%s : option illegal for this statement
%s : option nonstandard
INQUIRE : either UNIT= or FILE= needed
UNIT= missing
UNIT=* : unformatted I/O illegal
format specification illegal when namelist specified
END= : illegal when REC= present
REC= : illegal when FMT= *
illegal I/O formatting for internal unit
REC= illegal for internal unit
FORMAT : label missing
ASSIGN : too many format labels
no ASSIGN statements for FMT=<integer variable>
initial left parenthesis expected in format
repeat count on nonrepeatable descriptor
integer expected preceding H, X, or P edit descriptor
positive integer expected in format
N or Z expected after B in format
format nesting limit exceeded
%c or $ : nonstandard edit descriptor in format
Z : nonstandard edit descriptor in format
M field exceeds W field in I edit descriptor
'.' : expected in format
unexpected end of format
'%c' : unexpected character in format
unexpected character in format
integer expected in format
separator expected in format
RECL= : out of range
UNIT= : not between -32767 and 32767
%s : unrecognized value in option
ACCESS= : nonstandard option value
RECL= required to open direct-access file
%fs : too few array subscripts
%s : attributes illegal on array bounds
%fs : * : illegal bound
%fs : too many array subscripts
%s : STAT= must be last parameter
%s : STAT= variable must be scalar integer
%s : %s : not allocatable array
illegal input list item
%s : * illegal with this option
%fs : assumed-size array illegal here
%fs : HUGE internal units illegal
%fs : record length too large for internal unit
%s : I/O of entire structures illegal
FAR or HUGE I/O item illegal in medium model
%fs : cannot modify active DO variable
I/O item illegal in namelist I/O
LOCKING : nonstandard
%s : lowercase in string nonstandard


Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,68 @@
/* fatals */
1001 "Internal Compiler Error\n\t\t(compiler file '%s', line %d)\n\t\tContact Microsoft Technical Support"
1002 "out of heap space"
1003 "error count exceeds %d; stopping compilation"
1004 "unexpected EOF"
1005 "string too big for buffer"
1006 "write error on compiler intermediate file"
1007 "unrecognized flag '%s' in '%s'"
1027 "DGROUP data allocation exceeds 64K"
1028 "infinite recursion in cnstrpush"
1029 "there are > 512 bytes of arguments"
1030 "there are > 512 bytes of local variables"
1031 "limit exceeded for nesting function calls"
1032 "cannot open object listing file '%s'"
1033 "cannot open assembly language output file '%s'"
1034 "cannot open source file '%s'"
1035 "expression too complex, please simplify"
1036 "cannot open source listing file '%s'"
1037 "cannot open object file '%s'"
1038 "unexpected end of file in Pass 3"
1039 "unrecoverable heap overflow in Pass 3"
1040 "unexpected EOF in source file '%s'"
1041 "cannot open compiler intermediate file - no more files"
1042 "cannot open compiler intermediate file - no such file or directory"
1043 "cannot open compiler intermediate file"
1044 "out of disk space for compiler intermediate file"
1045 "floating-point overflow"
1046 "bad %s flag, would overwrite '%s' with '%s'"
1047 "too many %s flags, '%s'"
1048 "unknown option '%c' in '%s'"
1049 "invalid numerical argument '%s'"
1050 "%s : code segment too large\n"
1051 "program too complex"
1000 "UNKNOWN FATAL ERROR\n\t\tContact Microsoft Technical Support"
/* errors */
2023 "divide by 0"
2024 "mod by 0"
2124 "CODE GENERATION ERROR\n\t\tContact Microsoft Technical Support"
2125 "%s : allocation exceeds 64K"
2126 "%s : automatic allocation exceeds %s"
2127 "parameter allocation exceeds 32K"
2128 "%s : huge array cannot be aligned to segment boundary"
2129 "static function '%s' not found\n"
2000 "UNKNOWN ERROR\n\t\tContact Microsoft Technical Support"
/* warnings */
4056 "overflow in constant arithmetic"
4057 "overflow in constant multiplication"
4058 "address of frame variable taken, DS != SS"
4059 "segment lost in conversion"
4060 "conversion of long address to short address"
4061 "long/short mismatch in argument : conversion supplied"
4062 "near/far mismatch in argument : conversion supplied"
4063 "%s : function too large for post-optimizer\n"
4064 "procedure too large, skipping %s optimization and continuing\n"
4065 "recoverable heap overflow in post-optimizer - some optimizations may be missed\n"
4066 "local symbol table overflow - some local symbols may be missing in listings\n"
4069 "conversion of near pointer to long integer"
4070 "function called as procedure"
4072 "Insufficient memory to process debugging information"
4073 "scoping too deep, deepest scoping merged when debugging"
4186 "string too long - truncated to %d characters"
4187 "Debugging information exceeds 64K - extra ignored"
4000 "UNKNOWN WARNING\n\t\tContact Microsoft Technical Support"

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,29 @@
/* error messages */
2001 "too many symbols predefined with -D"
2002 "a previously defined model specification has been overridden"
2003 "missing source file name"
2008 "too many %s flags, '%s'"
2011 "only one floating point model allowed"
2012 "too many linker flags on command line"
2016 "%s and %s are incompatible"
2018 "cannot open linker cmd file"
2019 "cannot overwrite the source/object file, '%s'"
2021 "invalid numerical argument '%s'"
2022 "cannot open help file, '%s'"
2027 "could not execute '%s'"
2000 "UNKNOWN COMMAND LINE ERROR\n\t\tContact Microsoft Technical Support"
/* warning messages */
4001 "listing has precedence over assembly output"
4002 "ignoring unknown flag '%s'"
4003 "Different processors selected for code generation"
4005 "could not execute '%s';\nPlease enter new file name (full path) or Ctrl-C to quit: "
4008 "non-standard model -- defaulting to large model libraries"
4009 "threshold only for far/huge data, ignored"
4013 "combined listing has precedence over object listing"
4014 "invalid value %d for '%s'. Default %d is used"
4018 ".DEF files supported in protected mode only"
4019 "string too long. Truncated to %d characters"
4000 "UNKNOWN COMMAND LINE WARNING\n\t\tContact Microsoft Technical Support"

Binary file not shown.

View File

@ -0,0 +1,82 @@
FORTRAN COMPILER OPTIONS
-METACOMMAND-
/4cc<string> conditional compilation
/4I{2|4} default integer size
/4{Y|N}6 fortran 66
/4{Y|N}a make variables AUTOMATIC
/4{Y|N}b debug
/4{Y|N}d declare
/4{Y|N}f free-form format
/4{Y|N}i conformed to IBM extensions
/4{Y|N}s strict syntax
/4{Y|N}t truncate variable names
/4{Y|N}v conformed to VAX extensions
-SOURCE LISTINGS-
/Slnumber listing page width
/Sttitle Title
/Spnumber listing page size
/Sssub-title Sub_title
-MEMORY MODEL-
/AM medium model
/AL large model
/AH huge model
-OPTIMIZATION-
/O enable optimization (same as /Ot)
/Od disable optimizations
/Ol enable loop optimizations
/Op enable precision optimizations
/Os optimize for space
/Ot optimize for speed
/Ox max. optimization (/Olt /Gs)
-CODE GENERATION-
/G0 8086 instructions
/G1 186 instructions
/G2 286 instructions
/Ge enable stack checking
/Gi incremental linking
/Gs disable stack checking
/Gt[number] data size threshold
-OUTPUT FILES-
/Fa[assembly listing file]
/Fb[bound executable file]
/Fc[mixed object/source listing file]
/Fe<executable file>
/Fl[object listing file]
/Fm[map file]
/Fo<object file>
/Fs[source listing file]
-LANGUAGE-
/Zd line number information
/Zi symbolic debugging information
/Zl remove default library info
/Zp[n] pack struct on n-byte boundary
/Zs syntax check only
-FLOATING POINT-
/FPa calls with altmath
/FPc calls with emulator
/FPc87 calls with 8087 library
/FPi inline with emulator
/FPi87 inline with 8087
-MISCELLANEOUS-
/c compile only, no link
/D<name>[=text] define macro
/H<number> external name length
/I<name> add "include file" path
/MD support DLL
/MT support multi-threads
/ND<name> set data segment's name
/NT<name> set text segment's name
/Tf<file> compile file without .for
/V<string> set version string
/W<number> warning level
/X ignore "include file" paths
-MASM SUPPORT-
/MAswitch set MASM switch
/Ta<file> assemble file without .asm
/Fx[cross reference file]
-LINKING-
/F<hex_number> stack size (hex. bytes)
/Lc link compatibility mode executable
/Lr link compatibility mode executable
/Lp link protect mode executable
/link [linker_options_and_libraries]

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,67 @@
; TOOLS.INI file for QUICK configuration
[M MEP]
Arg:Alt+A
Argcompile:F5
Assign:Alt+=
Backtab:Shift+Tab
Begline:Home
Cancel:Esc
Cdelete:Ctrl+G
Compile:Shift+F3
Copy:Ctrl+Ins
Down:Down
Down:Ctrl+X
Emacscdel:Bksp
Emacsnewl:Enter
Endline:End
Execute:F10
Exit:Alt+X
Help:F1
Home:Ctrl+Home
Information:Shift+F1
Initialize:Alt+F10
Insertmode:Ins
Insertmode:Ctrl+V
Lasttext:Alt+L
Ldelete:Ctrl+Y
Left:Left
Linsert:Ctrl+N
Mark:Alt+M
Meta:F9
Mlines:Ctrl+W
Mpage:Pgup
Mpage:Ctrl+R
Mpara:Ctrl+Pgup
Msearch:F4
Mword:Ctrl+Left
Paste:Shift+Ins
Pbal:Ctrl+[
Plines:Ctrl+Z
Ppage:Pgdn
Ppage:Ctrl+C
Ppara:Ctrl+Pgdn
Psearch:F3
Pword:Ctrl+Right
Pword:Ctrl+F
Qreplace:Alt+F3
Quote:Alt+Q
Refresh:Alt+R
Replace:Ctrl+L
Right:Right
Right:Ctrl+D
Sdelete:Del
Setfile:F2
Setwindow:Ctrl+]
Shell:Shift+F9
Sinsert:Alt+Ins
Tab:Tab
Undo:Alt+Bksp
Up:Up
Up:Ctrl+E
Window:F6
;
; to load the wordstar extension to enable ctrl+QS and ctrl+QD
; remove the semicolon from the following line and fill in the correct
; path
; load:ws.zxt

Binary file not shown.

View File

@ -0,0 +1,588 @@
[M MEP]
; TOOLS.INI file for BRIEF(tm) configuration
NotBrief:=arg "No equivalent in the Microsoft Editor" message
ToolsIni:=arg "$INIT:tools.ini" setfile
;
; GLOBAL CONFIGURATION
;
autosave:no
undocount:30
autostart:=toggle_re
vscroll:1
errprompt:no
nounixre:
rmargin:70
;
; Backup File Toggle. Toggle through M.E.'s backup options and let
; the user know that something extra is going on.
;
backup:bak
baknone:=arg "backup:none" assign arg "File backups turned off!" message \
arg "bakbak:Ctrl+W" assign
bakbak:=arg "backup:bak" assign arg "Single backups enabled" message \
arg "bakundel:Ctrl+W" assign
bakundel:= arg "backup:undel" assign arg "Multiple backups enabled" message \
arg "baknone:Ctrl+W" assign
bakundel:Ctrl+W
;
; Beginning of Line
;
beginning_of_line:=meta begline
beginning_of_line:Home
;
; Buffer List
;
Information:Alt+B
;
; Case Sensitivity Toggle
;
case:yes
caseon:=arg "case:" assign arg "Enabled Case Sensitivity" message \
arg "caseoff:ctrl+f5" assign
caseoff:=arg "nocase:" assign arg "Disabled Case Sensitivity" message \
arg "caseon:ctrl+f5" assign
caseoff:ctrl+f5
;
; Center Line Horizontally
; Center Line in Window.
; There are no centering functions in M.E.
;
center:=NotBrief
NotBrief:Ctrl+C
;
; Change Output File
;
output_file:=arg arg "Enter new output file name: " prompt -> setfile
output_file:Alt+O
;
; Change Window
;
Window:F2
;
; Color. To set colors in M.E., assign a new value to one of the
; following switches. The value is a two digit hex number where the
; first digit is the background color and the second is the foreground.
; The number to color mapping is the same as in Brief. The color change
; will not take effect until you restart the editor. To see an immediate
; change, mark (select) the color assignment lines and press Alt+=.
;
color:=ToolsIni begfile arg "color:=ToolsIni" psearch up up up up up up up
fgColor:07 ; Text color
selColor:70 ; Selection color
hgColor:02 ; Search text color
infColor:06 ; Message color
staColor:03 ; Status Line
errColor:04 ; Error Color
wdColor:07 ; Window Borders
;
; Compile Buffer. Compile command is set with the 'extmake' switch
; (see documentation).
;
compile_it:=Arg Compile
compile_it:Alt+F10
;
; Create Key Assignment
;
assign_to_key:=arg <assign> setfile
;
; Create Window. Window handling is very different in M.E.
;
; To create a new window, move the cursor to the line or column where
; the new border is to be placed and do:
;
; Alt+A F3 - to create a horizontal border
; Alt+A Alt+A F3 - to create a vertical border
;
; To change the current window, press F3.
;
; To delete an existing window, go to that window and press F4.
;
; Windows cannot be resized.
;
create_edge:=ToolsIni begfile arg "create_edge:=" psearch up up up up \
up up up up up up up up up up arg "window:F3" assign
create_edge:F3
;
; Cut to Scrap. Doesn't take current line if nothing is selected.
;
delete:num-
;
; Delete
;
clear:=meta delete
clear:del
;
; Delete Current Buffer
;
delete_curr_buffer:=arg refresh
delete_curr_buffer:Ctrl+_
;
; Delete Line. In M.E., the line goes to the clipboard.
;
ldelete:Alt+D
;
; Delete Macro File
;
NotBrief:Shift+F9
;
; Delete Next Word
;
delete_next_word:=Arg Pword Clear
;
; Delete Previous Word
;
delete_previous_word:=Pword Arg Mword Clear
delete_previous_word:Ctrl+Bksp
;
; Delete to End of Line
;
delete_to_eol:=arg ldelete
delete_to_eol:Alt+K
;
; Delete Window
;
delete_edge:=meta window
delete_edge:F4
;
; Display File Name
;
display_file_name:=arg curfile message
display_file_name:Alt+F
;
; Display version ID
;
version:=arg "Microsoft Editor Version 1.02" message
version:Alt+V
;
; EditFile
;
EditFile:=arg "File: " prompt -> setfile
EditFile:Alt+E
;
; End of Window
;
end_of_window:=meta down
end_of_window:Ctrl+End
;
; Execute Command. In M.E. you can enter any series of functions or
; macros, including string literals "in quotes".
;
execute_macro:=arg "Command: " prompt -> execute
execute_macro:F10
;
; Exit
;
exit:Alt+X
;
; Go to Line
;
GoTo:=arg "Go to line: " prompt -> mark
GoTo:alt+g
;
; Go to routine.
;
routines:=arg "You can use marks to go to routines. See documentation" \
message
routines:Ctrl+G
;
; Help. First make sure that help is loaded. Then attach context-
; sensitive help to Alt+H.
;
load:$PATH:mhelp
mhctx:Alt+H
;
; Incremental Search
;
i_search:=NotBrief
;
; Insert Mode Toggle. Toggle between Insert and Overstrike modes and issue
; a message telling the user what has been done.
;
enterinsmode:yes
insert_mode:=Insertmode +>showins arg "Overstrike Mode" message => \
:>showins arg "Insert Mode" message
insert_mode:Alt+I
;
; Left Side of Window
;
left_side:=meta left
left_side:Shift+Home
;
; Line to Bottom of Window
;
NotBrief:Ctrl+B
;
; Line to Top of Window
;
NotBrief:Ctrl+T
;
; Load Macro File
;
NotBrief:F9
;
; Lower Case Block
;
load:$PATH:ulcase
tolower:=ulcase
;
; Mark. Known in M.E. as selecting text. In M.E., selection is
; done in one of two modes: stream and box/line, which correspond
; to normal and column/line selection in Brief. To select lines,
; start marking in column mode, but move straight down. To change
; between modes in M.E., a toggle function <boxstream> is provided.
;
; Arg:Alt+A ; M.E. selection (default assignment)
; BoxStream:Ctrl+B ; M.E. mode toggle (default assignment)
;
ToStream:=BoxStream -> BoxStream ; Change to stream mode
ToBox:=BoxStream +> BoxStream ; Change to box/line mode
mark2:=ToBox Arg
mark2:Alt+C
mark2:Alt+L
mark1:=ToStream Arg
mark1:Alt+M
;
; Next Buffer
;
setfile:Alt+N
;
; Next Character
;
next_char:=NotBrief
;
; Next Error
;
NextMsg:Ctrl+N
;
; Non-Inclusive Mark
;
open_line:=down linsert meta begline
open_line:Ctrl+Enter
;
; Paste From Scrap
;
paste:ins
;
; Pause Recording Toggle
;
NotBrief:Shift+F7
;
; Pause On Error
;
pause_on_error:=togErr arg "togErr:=" errname assign
togErr:=errOn
errOn:=arg "errprompt:" assign arg "errname:=\"errOff\"" assign
errOff:=arg "noerrprompt:" assign arg "errname:=\"errOn\"" assign
;
; PlayBack
;
recordvalue:=arg "No recording has been made" message.
recordvalue:F8
;
; Pop-up Errors. In M.E., this switches you to the compile file. You
; can go to any message with Alt+A Alt+A NextMsg.
;
next_error1:=arg "<compile>" setfile
next_error1:Ctrl+P
;
; Previous Buffer. There are no "next" and "previous" buffers in M.E.,
; so this is the same as "Next Buffer".
;
setfile:Alt+-
;
; Previous Character
;
prev+char:=NotBrief
;
; Print Block
;
print:Alt+P
;
; Quote
;
quote:Alt+Q
;
; Read File into Buffer
;
read_file:=arg arg "File to read: " prompt -> paste
;
; Reformat Paragraph
;
load:$PATH:justify
reform:=justify
;
; Regular Expression Toggle. In M.E., regular expression recognition
; is controlled by modifying the search and search/replace functions
; (Arg Arg forces regular expression search).
;
toggle_re:=togRE arg "togRE:=" srchname assign
toggle_re:Ctrl+F6
togRE:=REon
REoff:=arg "psrch:=arg \"Search for: \" prompt -> psearch" assign \
arg "msrch:=arg \"Search for: \" prompt -> msearch" assign \
arg "qrepl:=qreplace" assign \
arg "srchname:=\"REon\"" assign \
arg "Disabled Regular Expressions" message
REon:=arg "psrch:=arg arg \"Search for: \" prompt -> psearch" assign \
arg "msrch:=arg arg \"Search for: \" prompt -> msearch" assign \
arg "qrepl:=arg arg qreplace" assign \
arg "srchname:=\"REoff\"" assign \
arg "Enabled Regular Expressions" message
;
; Remember. Use Arg Arg Record to append to existing macro.
;
record:F7
;
; Repeat
;
repeat:Ctrl+R
;
; Right Side of Window
;
right_side:=meta right
right_side:Shift+End
;
; Scroll Buffer Down in Window
;
mlines:Ctrl+D
;
; Scroll Buffer Up in Window
;
plines:Ctrl+U
;
; Search Again
;
search_again:=psearch
search_again:Shift+F5
;
; Search Backward
;
search_back:=msrch arg "search_again:=msearch" assign
search_back:Alt+F5
;
; Search Forward
;
search_fwd:=psrch arg "search_again:=psearch" assign
search_fwd:F5
search_fwd:Alt+S
;
; Suspend Editor
;
shell:Alt+Z
;
; Tab. Please read the documentation for a full description of tabs.
;
graphic:tab
realtabs:yes
entab:0
tabstops:8
;
; Tab Stops
;
tabs:=NotBrief
;
; Top of Buffer
;
begfile:Ctrl+PgUp
;
; Top of Window
;
top_of_window:=meta up
top_of_window:Ctrl+Home
;
; Translate Again
;
translate_again:=qrepl
translate_again:Shift+F6
;
; Translate Backward
;
translate_back:=arg "You can only translate forwards" message
translate_back:Alt+F6
;
; Translate Forward
;
translate:=qrepl
translate:F6
translate:Alt+T
;
; Undo
;
undo:Alt+U
undo:num*
;
; Use Tab Characters
;
use_tab_char:=arg "entab:1" assign
;
; Window Border Toggle
;
NotBrief:Alt+F1
;
;
; Write
;
write_it:=arg arg setfile
write_it:Alt+W
;
; BRIEF is a trademark of UnderWare, INC.
;
; Predefined and Example Microsoft Editor Macros
;
; Revision History:
;
; 26-Aug-1988 ln Created
; 05-Oct-1988 bw Added clear
; 18-Oct-1988 ln Added prevmessage
; 23-Nov-1988 bw Added setmsg and make
; 03-Jan-1989 ln Added spell
;
; argcompile
; shorthand for arg followed by compile, used to start backround compiles.
;
argcompile:=arg compile
argcompile:f5
;
; assignments
; Displays the current assignments pseudo-file. (Formerly called "help")
;
assignments:=arg "?" assign < <
assignments:f10
;
; clear
; Deletes selected text without copying it to the clipboard
;
clear:= meta delete
clear:del
;
; hsplit
; Splits the current window horizontally at the current cursor location
;
hsplit:= arg window
hsplit:ctrl+H
;
; prevmsg
; Used to view the previous error message in the results of a compile.
;
prevmsg:=arg "-1" nextmsg
prevmsg:SHIFT+F4
;
; rawoutput
; switches the current window to the compile log to view the raw compile
; output
;
rawoutput:=arg "<compile>" setfile
rawoutput:alt+F3
;
; setmsg
; Used to set the current message
;
setmsg:=arg arg nextmsg
setmsg:SHIFT+F5
;
; spell
; Invoke the Microsoft Word 4.0 spelling checker on the current file. (Only
; available for DOS).
;
spell:=arg "spell-am " curfile shell
spell:ctrl+f7
;
; undotoggle
; toggling undo. Repeately executing this macro undoes and redoes the most
; recent editting change.
;
undotoggle:=meta undo +> undo
undotoggle:ctrl+bksp
;
; vsplit
; Splits the current window vertically at the current cursor location
;
vsplit:=arg arg window
vsplit:ctrl+U
;
; make
; Invokes Make command
;
make:= arg " " compile
make:ctrl+f4

View File

@ -0,0 +1,79 @@
;
; Predefined and Example Microsoft Editor Macros
;
; Revision History:
;
; 26-Aug-1988 ln Created
; 05-Oct-1988 bw Added clear
; 18-Oct-1988 ln Added prevmessage
; 23-Nov-1988 bw Added setmsg and make
; 03-Jan-1989 ln Added spell
;
; argcompile
; shorthand for arg followed by compile, used to start backround compiles.
;
argcompile:=arg compile
argcompile:f5
;
; assignments
; Displays the current assignments pseudo-file. (Formerly called "help")
;
assignments:=arg "?" assign < <
assignments:f10
;
; clear
; Deletes selected text without copying it to the clipboard
;
clear:= meta delete
clear:del
;
; hsplit
; Splits the current window horizontally at the current cursor location
;
hsplit:= arg window
hsplit:ctrl+H
;
; prevmsg
; Used to view the previous error message in the results of a compile.
;
prevmsg:=arg "-1" nextmsg
prevmsg:SHIFT+F4
;
; rawoutput
; switches the current window to the compile log to view the raw compile
; output
;
rawoutput:=arg "<compile>" setfile
rawoutput:alt+F3
;
; setmsg
; Used to set the current message
;
setmsg:=arg arg nextmsg
setmsg:SHIFT+F5
;
; spell
; Invoke the Microsoft Word 4.0 spelling checker on the current file. (Only
; available for DOS).
;
spell:=arg "spell-am " curfile shell
spell:ctrl+f7
;
; undotoggle
; toggling undo. Repeately executing this macro undoes and redoes the most
; recent editting change.
;
undotoggle:=meta undo +> undo
undotoggle:ctrl+bksp
;
; vsplit
; Splits the current window vertically at the current cursor location
;
vsplit:=arg arg window
vsplit:ctrl+U
;
; make
; Invokes Make command
;
make:= arg " " compile
make:ctrl+f4

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,286 @@
*fgraph.fd - declare constants and functions for graphics library
*
* Copyright (c) 1987-1989 Microsoft Corporation. All rights reserved.
*
*Purpose:
* This file declares the graphics library functions and
* the manifest constants that are used with them.
*
*******************************************************************************
$NOTRUNCATE ! required for some names to be significant
$NOTSTRICT ! uses structures which are non-standard conforming
* user-visible declarations for FORTRAN Graphics Library
* structure for getvideoconfig() as visible to user
STRUCTURE/videoconfig/
INTEGER*2 numxpixels ! number of pixels on X axis
INTEGER*2 numypixels ! number of pixels on Y axis
INTEGER*2 numtextcols ! number of text columns available
INTEGER*2 numtextrows ! number of text rows available
INTEGER*2 numcolors ! number of actual colors
INTEGER*2 bitsperpixel ! number of bits per pixel
INTEGER*2 numvideopages ! number of available video pages
INTEGER*2 mode ! current video mode
INTEGER*2 adapter ! active display adapter
INTEGER*2 monitor ! active display monitor
INTEGER*2 memory ! adapter video memory in K bytes
END STRUCTURE
* return value of setlogorg(), etc.
STRUCTURE/xycoord/
INTEGER*2 xcoord
INTEGER*2 ycoord
END STRUCTURE
* structure for text position
STRUCTURE/rccoord/
INTEGER*2 row
INTEGER*2 col
END STRUCTURE
* SETUP AND CONFIGURATION
* arguments to setvideomode()
INTEGER*2, $MAXRESMODE, $MAXCOLORMODE, $DEFAULTMODE,$TEXTBW40,
+ $TEXTC40,$TEXTBW80,$TEXTC80, $MRES4COLOR,$MRESNOCOLOR,
+ $HRESBW,$TEXTMONO,$HERCMONO, $MRES16COLOR,$HRES16COLOR,
+ $ERESNOCOLOR,$ERESCOLOR, $VRES2COLOR,$VRES16COLOR,
+ $MRES256COLOR,$ORESCOLOR
PARAMETER($MAXRESMODE =-3) ! graphics mode with highest resolution
PARAMETER($MAXCOLORMODE =-2) ! graphics mode with most colors
PARAMETER($DEFAULTMODE =-1) ! restore screen to original mode
PARAMETER($TEXTBW40 =0) ! 40 x 25 text, 16 grey
PARAMETER($TEXTC40 =1) ! 40 x 25 text, 16/8 color
PARAMETER($TEXTBW80 =2) ! 80 x 25 text, 16 grey
PARAMETER($TEXTC80 =3) ! 80 x 25 text, 16/8 color
PARAMETER($MRES4COLOR =4) ! 320 x 200, 4 color
PARAMETER($MRESNOCOLOR =5) ! 320 x 200, 4 grey
PARAMETER($HRESBW =6) ! 640 x 200, BW
PARAMETER($TEXTMONO =7) ! 80 x 25 text, BW
PARAMETER($HERCMONO =8) ! 720 x 348, BW for HGC
PARAMETER($MRES16COLOR =13) ! 320 x 200, 16 color
PARAMETER($HRES16COLOR =14) ! 640 x 200, 16 color
PARAMETER($ERESNOCOLOR =15) ! 640 x 350, BW
PARAMETER($ERESCOLOR =16) ! 640 x 350, 4 or 16 color
PARAMETER($VRES2COLOR =17) ! 640 x 480, BW
PARAMETER($VRES16COLOR =18) ! 640 x 480, 16 color
PARAMETER($MRES256COLOR =19) ! 320 x 200, 256 color
PARAMETER($ORESCOLOR =64) ! 640 x 400, 1 of 16 colors (Olivetti)
* videoconfig adapter values
* these manifest constants can be used to test adapter values for
* a particular adapter using the bitwise-AND operator
INTEGER*4 $MDPA,$CGA,$EGA,$MCGA,$VGA,$HGC,$OCGA,$OEGA,$OVGA
PARAMETER($MDPA =#0001) ! Monochrome Display Adapter (MDPA)
PARAMETER($CGA =#0002) ! Color Graphics Adapter (CGA)
PARAMETER($EGA =#0004) ! Enhanced Graphics Adapter (EGA)
PARAMETER($VGA =#0008) ! Video Graphics Array (VGA)
PARAMETER($MCGA =#0010) ! MultiColor Graphics Array (MCGA)
PARAMETER($HGC =#0020) ! Hercules Graphics Card (HGC)
PARAMETER($OCGA =#0042) ! Olivetti Color Graphics Adapter (OCGA)
PARAMETER($OEGA =#0044) ! Olivetti Enhanced Graphics Adapter (OEGA)
PARAMETER($OVGA =#0048) ! Olivetti Video Graphics Array (OVGA)
* videoconfig monitor values
* these manifest constants can be used to test monitor values for
* a particular monitor using the bitwise-AND operator
INTEGER*4 $MONO,$COLOR,$ENHCOLOR,$ANALOGMONO,$ANALOGCOLOR,$ANALOG
PARAMETER($MONO =#0001) ! Monochrome
PARAMETER($COLOR =#0002) ! Color (or Enhanced emulating color)
PARAMETER($ENHCOLOR =#0004) ! Enhanced Color
PARAMETER($ANALOGMONO =#0008) ! Analog Monochrome only
PARAMETER($ANALOGCOLOR=#0010) ! Analog Color only
PARAMETER($ANALOG =#0018) ! Analog
* COORDINATE SYSTEMS
* OUTPUT ROUTINES
* control parameters for Rectangle, Ellipse and Pie
INTEGER*2 $GBORDER,$GFILLINTERIOR,
+ $GCLEARSCREEN, $GVIEWPORT,$GWINDOW
PARAMETER($GBORDER =2) ! draw outline only
PARAMETER($GFILLINTERIOR =3) ! fill using current fill mask
PARAMETER($GCLEARSCREEN=0)
PARAMETER($GVIEWPORT =1)
PARAMETER($GWINDOW =2)
* TEXT
INTEGER*4 $GCURSOROFF,$GCURSORON,$GWRAPOFF,$GWRAPON
PARAMETER($GCURSOROFF=0)
PARAMETER($GCURSORON =1)
PARAMETER($GWRAPOFF =0)
PARAMETER($GWRAPON =1)
INTEGER*4 $GSCROLLUP, $GSCROLLDOWN
PARAMETER($GSCROLLUP =1)
PARAMETER($GSCROLLDOWN =-1)
C request maximum number of rows in _settextrows and _setvideomoderows
INTEGER*4 $MAXTEXTROWS
PARAMETER($MAXTEXTROWS =-1)
* "action verbs" for putimage()
INTEGER*4 $GPSET,$GPRESET,$GAND,$GOR,$GXOR
PARAMETER($GPSET =3)
PARAMETER($GPRESET =2)
PARAMETER($GAND =1)
PARAMETER($GOR =0)
PARAMETER($GXOR =4)
* universal color values:
INTEGER*4 $BLACK,$BLUE,$GREEN,$CYAN,$RED,$MAGENTA,$BROWN,
+ $WHITE,$GRAY, $LIGHTBLUE,$LIGHTGREEN,$LIGHTCYAN,
+ $LIGHTRED,$LIGHTMAGENTA, $LIGHTYELLOW,$BRIGHTWHITE
PARAMETER($BLACK =#000000)
PARAMETER($BLUE =#2a0000)
PARAMETER($GREEN =#002a00)
PARAMETER($CYAN =#2a2a00)
PARAMETER($RED =#00002a)
PARAMETER($MAGENTA =#2a002a)
PARAMETER($BROWN =#00152a)
PARAMETER($WHITE =#2a2a2a)
PARAMETER($GRAY =#151515)
PARAMETER($LIGHTBLUE =#3F1515)
PARAMETER($LIGHTGREEN =#153f15)
PARAMETER($LIGHTCYAN =#3f3f15)
PARAMETER($LIGHTRED =#15153f)
PARAMETER($LIGHTMAGENTA =#3f153f)
PARAMETER($LIGHTYELLOW =#153f3f)
PARAMETER($BRIGHTWHITE =#3f3f3f)
* mono mode F color values:
INTEGER*4 $MODEFOFF,$MODEFOFFTOON,$MODEFOFFTOHI,$MODEFONTOOFF,
+ $MODEFON,$MODEFONTOHI,$MODEFHITOOFF,$MODEFHITOON,
+ $MODEFHI
PARAMETER($MODEFOFF =0)
PARAMETER($MODEFOFFTOON =1)
PARAMETER($MODEFOFFTOHI =2)
PARAMETER($MODEFONTOOFF =3)
PARAMETER($MODEFON =4)
PARAMETER($MODEFONTOHI =5)
PARAMETER($MODEFHITOOFF =6)
PARAMETER($MODEFHITOON =7)
PARAMETER($MODEFHI =8)
* mono mode 7 color values:
INTEGER*4 $MODE7OFF,$MODE7ON,$MODE7HI
PARAMETER($MODE7OFF =0)
PARAMETER($MODE7ON =1)
PARAMETER($MODE7HI =2)
* external function declarations
INTEGER*2 setvideomode[EXTERN]
INTEGER*2 setvideomoderows[EXTERN]
INTEGER*2 setactivepage[EXTERN]
INTEGER*2 setvisualpage[EXTERN]
INTEGER*2 getactivepage[EXTERN]
INTEGER*2 getvisualpage[EXTERN]
EXTERNAL getvideoconfig
EXTERNAL setvieworg
EXTERNAL getviewcoord
EXTERNAL getphyscoord
EXTERNAL setcliprgn
EXTERNAL setviewport
EXTERNAL clearscreen
EXTERNAL moveto
EXTERNAL getcurrentposition
INTEGER*2 lineto[EXTERN]
INTEGER*2 rectangle[EXTERN]
INTEGER*2 ellipse[EXTERN]
INTEGER*2 arc[EXTERN]
INTEGER*2 pie[EXTERN]
INTEGER*2 setpixel[EXTERN]
INTEGER*2 getpixel[EXTERN]
INTEGER*2 floodfill[EXTERN]
INTEGER*2 setcolor[EXTERN]
INTEGER*2 getcolor[EXTERN]
EXTERNAL setlinestyle
INTEGER*2 getlinestyle[EXTERN]
EXTERNAL setfillmask
EXTERNAL getfillmask
INTEGER*4 setbkcolor[EXTERN]
INTEGER*4 getbkcolor[EXTERN]
INTEGER*4 remappalette[EXTERN]
INTEGER*2 remapallpalette[EXTERN]
INTEGER*2 selectpalette[EXTERN]
INTEGER*2 settextrows[EXTERN]
EXTERNAL settextwindow
EXTERNAL scrolltextwindow
EXTERNAL outtext
INTEGER*2 wrapon[EXTERN]
INTEGER*2 displaycursor[EXTERN]
INTEGER*2 settextcursor[EXTERN]
INTEGER*2 gettextcursor[EXTERN]
EXTERNAL settextposition
EXTERNAL gettextposition
INTEGER*2 settextcolor[EXTERN]
INTEGER*2 gettextcolor[EXTERN]
EXTERNAL getimage
EXTERNAL putimage
INTEGER*4 imagesize[EXTERN]
* WINDOW COORDINATE SYSTEM
* structure for window coordinate pair
STRUCTURE/wxycoord/
DOUBLE PRECISION wx ! window x coordinate
DOUBLE PRECISION wy ! window y coordinate
END STRUCTURE
INTEGER*2 setwindow[EXTERN]
EXTERNAL getwindowcoord
EXTERNAL getviewcoord_w
EXTERNAL getcurrentposition_w
* window coordinate entry points for graphics output routines
INTEGER*2 arc_w[EXTERN]
INTEGER*2 ellipse_w[EXTERN]
INTEGER*2 floodfill_w[EXTERN]
INTEGER*2 getpixel_w[EXTERN]
INTEGER*2 lineto_w[EXTERN]
EXTERNAL moveto_w
INTEGER*2 pie_w[EXTERN]
INTEGER*2 rectangle_w[EXTERN]
INTEGER*2 setpixel_w[EXTERN]
EXTERNAL getimage_w
INTEGER*2 imagesize_w[EXTERN]
EXTERNAL putimage_w
STRUCTURE/fontinfo/
INTEGER*2 type ! b0 set = vector,clear = bit map
INTEGER*2 ascent ! pix dist from top to baseline
INTEGER*2 pixwidth ! character width in pixels, 0=prop
INTEGER*2 pixheight ! character height in pixels
INTEGER*2 avgwidth ! average character width in pixels
CHARACTER*81 filename ! file name including path
CHARACTER*32 facename ! font name
END STRUCTURE
* Font parameters
INTEGER*2 $NO_SPACE, $FIXED_SPACE, $PROP_SPACE
PARAMETER ($NO_SPACE = 0)
PARAMETER ($FIXED_SPACE = 1)
PARAMETER ($PROP_SPACE = 2)
INTEGER*2 $NO_FONT_MAP, $VECTOR_MAP, $BIT_MAP
PARAMETER ($NO_FONT_MAP = 0)
PARAMETER ($VECTOR_MAP = 1)
PARAMETER ($BIT_MAP = 2)
INTEGER*2 registerfonts[EXTERN]
EXTERNAL unregisterfonts
INTEGER*2 setfont[EXTERN]
INTEGER*2 getfontinfo[EXTERN]
EXTERNAL outgtext
INTEGER*2 getgtextextent[EXTERN]

View File

@ -0,0 +1,428 @@
***
*fgraph.fi - declare constants and functions for graphics library
*
* Copyright (c) 1987-1989 Microsoft Corporation. All rights reserved.
*
*Purpose:
* This file declares the graphics library functions and
* the manifest constants that are used with them.
*
*******************************************************************************
$NOTRUNCATE
$NOTSTRICT
* user-visible declarations for FORTRAN Graphics Library
INTERFACE TO FUNCTION arc (x1,y1,x2,y2,x3,y3,x4,y4)
INTEGER*2 arc[FAR,C,ALIAS:"__arc"],x1,y1,x2,y2,x3,y3,x4,y4
END
INTERFACE TO FUNCTION arc_w(wx1,wy1,wx2,wy2,wx3,wy3,wx4,wy4)
INTEGER*2 arc_w[FAR,C,ALIAS:"__f_arc_w"]
DOUBLE PRECISION wx1,wy1,wx2,wy2,wx3,wy3,wx4,wy4
END
INTERFACE TO SUBROUTINE
1 clearscreen[FAR,C,ALIAS:"__clearscreen"] (area)
INTEGER*2 area
END
INTERFACE TO FUNCTION displaycursor (toggle)
INTEGER*2 displaycursor[FAR,C,ALIAS:"__displaycursor"],toggle
END
INTERFACE TO FUNCTION ellipse (control,x1,y1,x2,y2)
INTEGER*2 ellipse[FAR,C,ALIAS:"__ellipse"],control,x1,y1,x2,y2
END
INTERFACE TO FUNCTION ellipse_w(control,wx1,wy1,wx2,wy2)
INTEGER*2 ellipse_w[FAR,C,ALIAS:"__f_ellipse_w"],control
DOUBLE PRECISION wx1,wy1,wx2,wy2
END
INTERFACE TO FUNCTION floodfill (x,y,boundary)
INTEGER*2 floodfill[FAR,C,ALIAS:"__floodfill"],x,y,boundary
END
INTERFACE TO FUNCTION floodfill_w(wx1,wy1,boundary)
INTEGER*2 floodfill_w[FAR,C,ALIAS:"__f_floodfill_w"],boundary
DOUBLE PRECISION wx1,wy1
END
INTERFACE TO FUNCTION getactivepage ()
INTEGER*2 getactivepage[FAR,C,ALIAS:"__getactivepage"]
END
INTERFACE TO FUNCTION getbkcolor ()
INTEGER*4 getbkcolor[FAR,C,ALIAS:"__getbkcolor"]
END
INTERFACE TO FUNCTION getcolor ()
INTEGER*2 getcolor[FAR,C,ALIAS:"__getcolor"]
END
INTERFACE TO SUBROUTINE
1 getcurrentposition[FAR,C,ALIAS:"__f_getcurrentposition"](s)
STRUCTURE/xycoord/
INTEGER*2 xcoord
INTEGER*2 ycoord
END STRUCTURE
RECORD/xycoord/s[FAR,REFERENCE]
END
INTERFACE TO SUBROUTINE
1 getcurrentposition_w[FAR,C,ALIAS:"__f_getcurpos_w"](s)
STRUCTURE/wxycoord/
DOUBLE PRECISION wx
DOUBLE PRECISION wy
END STRUCTURE
RECORD/wxycoord/s[FAR,REFERENCE]
END
INTERFACE TO SUBROUTINE
1 getfillmask[FAR,C,ALIAS:"__getfillmask"] (mask)
INTEGER*1 mask[FAR,REFERENCE](8)
END
INTERFACE TO SUBROUTINE
1 getimage[FAR,C,ALIAS:"__getimage"](x1,y1,x2,y2,image)
INTEGER*2 x1,y1,x2,y2
INTEGER*1 image[FAR,REFERENCE](*)
END
INTERFACE TO SUBROUTINE
1 getimage_w[FAR,C,ALIAS:"__f_getimage_w"](wx1,wy1,wx2,wy2,image)
DOUBLE PRECISION wx1,wy1,wx2,wy2
INTEGER*1 image[FAR,REFERENCE](*)
END
INTERFACE TO FUNCTION getlinestyle ()
INTEGER*2 getlinestyle[FAR,C,ALIAS:"__getlinestyle"]
END
INTERFACE TO SUBROUTINE
1 getphyscoord[FAR,C,ALIAS:"__f_getphyscoord"](x,y,s)
INTEGER*2 x,y
STRUCTURE/xycoord/
INTEGER*2 xcoord
INTEGER*2 ycoord
END STRUCTURE
RECORD/xycoord/s[FAR,REFERENCE]
END
INTERFACE TO FUNCTION getpixel (x,y)
INTEGER*2 getpixel[FAR,C,ALIAS:"__getpixel"],x,y
END
INTERFACE TO FUNCTION getpixel_w(wx,wy)
INTEGER*2 getpixel_w[FAR,C,ALIAS:"__f_getpixel_w"]
DOUBLE PRECISION wx,wy
END
INTERFACE TO FUNCTION gettextcolor ()
INTEGER*2 gettextcolor[FAR,C,ALIAS:"__gettextcolor"]
END
INTERFACE TO FUNCTION gettextcursor ()
INTEGER*2 gettextcursor[FAR,C,ALIAS:"__gettextcursor"]
END
INTERFACE TO SUBROUTINE
1 gettextposition[FAR,C,ALIAS:"__f_gettextposition"](s)
STRUCTURE/rccoord/
INTEGER*2 row
INTEGER*2 col
END STRUCTURE
RECORD/rccoord/s[FAR,REFERENCE]
END
INTERFACE TO SUBROUTINE
1 getvideoconfig[FAR,C,ALIAS:"__getvideoconfig"] (s)
STRUCTURE/videoconfig/
INTEGER*2 numxpixels ! number of pixels on X axis
INTEGER*2 numypixels ! number of pixels on Y axis
INTEGER*2 numtextcols ! number of text columns available
INTEGER*2 numtextrows ! number of text rows available
INTEGER*2 numcolors ! number of actual colors
INTEGER*2 bitsperpixel ! number of bits per pixel
INTEGER*2 numvideopages ! number of available video pages
INTEGER*2 mode ! current video mode
INTEGER*2 adapter ! active display adapter
INTEGER*2 monitor ! active display monitor
INTEGER*2 memory ! adapter video memory in K bytes
END STRUCTURE
RECORD/videoconfig/s[FAR,REFERENCE]
END
INTERFACE TO SUBROUTINE
1 getviewcoord[FAR,C,ALIAS:"__f_getviewcoord"](x,y,s)
INTEGER*2 x,y
STRUCTURE/xycoord/
INTEGER*2 xcoord
INTEGER*2 ycoord
END STRUCTURE
RECORD/xycoord/s[FAR,REFERENCE]
END
INTERFACE TO SUBROUTINE
1 getviewcoord_w[FAR,C,ALIAS:"__f_getviewcoord_w"](wx,wy,s)
DOUBLE PRECISION wx,wy
STRUCTURE/xycoord/
INTEGER*2 xcoord
INTEGER*2 ycoord
END STRUCTURE
RECORD/xycoord/s[FAR,REFERENCE]
END
INTERFACE TO FUNCTION getvisualpage()
INTEGER*2 getvisualpage[FAR,C,ALIAS:"__getvisualpage"]
END
INTERFACE TO SUBROUTINE
1 getwindowcoord[FAR,C,ALIAS:"__f_getwindowcoord"](x,y,s)
INTEGER*2 x,y
STRUCTURE/wxycoord/
DOUBLE PRECISION wx
DOUBLE PRECISION wy
END STRUCTURE
RECORD/wxycoord/s[FAR,REFERENCE]
END
INTERFACE TO FUNCTION imagesize (x1,y1,x2,y2)
INTEGER*4 imagesize[FAR,C,ALIAS:"__imagesize"]
INTEGER*2 x1,y1,x2,y2
END
INTERFACE TO FUNCTION imagesize_w(wx1,wy1,wx2,wy2)
INTEGER*4 imagesize_w[FAR,C,ALIAS:"__f_imagesize_w"]
DOUBLE PRECISION wx1,wy1,wx2,wy2
END
INTERFACE TO FUNCTION lineto (x,y)
INTEGER*2 lineto[FAR,C,ALIAS:"__lineto"],x,y
END
INTERFACE TO FUNCTION lineto_w(wx,wy)
INTEGER*2 lineto_w[FAR,C,ALIAS:"__f_lineto_w"]
DOUBLE PRECISION wx,wy
END
INTERFACE TO SUBROUTINE
1 moveto[FAR,C,ALIAS:"__f_moveto"](x,y,s)
INTEGER*2 x,y
STRUCTURE/xycoord/
INTEGER*2 xcoord
INTEGER*2 ycoord
END STRUCTURE
RECORD/xycoord/s[FAR,REFERENCE]
END
INTERFACE TO SUBROUTINE
1 moveto_w[FAR,C,ALIAS:"__f_moveto_w"](wx,wy,s)
DOUBLE PRECISION wx,wy
STRUCTURE/wxycoord/
DOUBLE PRECISION wx
DOUBLE PRECISION wy
END STRUCTURE
RECORD/wxycoord/s[FAR,REFERENCE]
END
INTERFACE TO SUBROUTINE
1 outtext[FAR,C,ALIAS:"__f_outtext"](text)
CHARACTER*(*) text[FAR,REFERENCE]
END
INTERFACE TO FUNCTION pie (i,x1,y1,x2,y2,x3,y3,x4,y4)
INTEGER*2 pie[FAR,C,ALIAS:"__pie"],i,x1,y1,x2,y2,x3,y3,x4,y4
END
INTERFACE TO FUNCTION pie_w(i,wx1,wy1,wx2,wy2,wx3,wy3,wx4,wy4)
INTEGER*2 pie_w[FAR,C,ALIAS:"__f_pie_w"],i
DOUBLE PRECISION wx1,wy1,wx2,wy2,wx3,wy3,wx4,wy4
END
INTERFACE TO SUBROUTINE
1 putimage[FAR,C,ALIAS:"__putimage"](x,y,image,action)
INTEGER*2 x,y,action
INTEGER*1 image[FAR,REFERENCE](*)
END
INTERFACE TO SUBROUTINE
1 putimage_w[FAR,C,ALIAS:"__f_putimage_w"](wx,wy,image,action)
DOUBLE PRECISION wx,wy
INTEGER*1 image[FAR,REFERENCE](*)
INTEGER*2 action
END
INTERFACE TO FUNCTION rectangle (control,x1,y1,x2,y2)
INTEGER*2 rectangle[FAR,C,ALIAS:"__rectangle"]
INTEGER*2 control,x1,y1,x2,y2
END
INTERFACE TO FUNCTION rectangle_w(control,wx1,wy1,wx2,wy2)
INTEGER*2 rectangle_w[FAR,C,ALIAS:"__f_rectangle_w"],control
DOUBLE PRECISION wx1,wy1,wx2,wy2
END
INTERFACE TO FUNCTION remappalette (index,color)
INTEGER*4 remappalette[FAR,C,ALIAS:"__remappalette"],color
INTEGER*2 index
END
INTERFACE TO FUNCTION remapallpalette(colors)
INTEGER*2 remapallpalette[FAR,C,ALIAS:"__remapallpalette"]
INTEGER*4 colors[FAR,REFERENCE](*)
END
INTERFACE TO SUBROUTINE
1 scrolltextwindow[FAR,C,ALIAS:"__scrolltextwindow"](rows)
INTEGER*2 rows
END
INTERFACE TO FUNCTION selectpalette (number)
INTEGER*2 selectpalette[FAR,C,ALIAS:"__selectpalette"],number
END
INTERFACE TO FUNCTION setactivepage (page)
INTEGER*2 setactivepage[FAR,C,ALIAS:"__setactivepage"],page
END
INTERFACE TO FUNCTION setbkcolor (color)
INTEGER*4 setbkcolor[FAR,C,ALIAS:"__setbkcolor"],color
END
INTERFACE TO SUBROUTINE
1 setcliprgn[FAR,C,ALIAS:"__setcliprgn"] (x1,y1,x2,y2)
INTEGER*2 x1,y1,x2,y2
END
INTERFACE TO FUNCTION setcolor (color)
INTEGER*2 setcolor[FAR,C,ALIAS:"__setcolor"]
INTEGER*2 color
END
INTERFACE TO SUBROUTINE
1 setfillmask[FAR,C,ALIAS:"__setfillmask"] (mask)
INTEGER*1 mask[FAR,REFERENCE](8)
END
INTERFACE TO SUBROUTINE
1 setlinestyle[FAR,C,ALIAS:"__setlinestyle"] (mask)
INTEGER*2 mask
END
INTERFACE TO FUNCTION setpixel (x,y)
INTEGER*2 setpixel[FAR,C,ALIAS:"__setpixel"],x,y
END
INTERFACE TO FUNCTION setpixel_w(wx,wy)
INTEGER*2 setpixel_w[FAR,C,ALIAS:"__f_setpixel_w"]
DOUBLE PRECISION wx,wy
END
INTERFACE TO FUNCTION settextcolor (index)
INTEGER*2 settextcolor[FAR,C,ALIAS:"__settextcolor"],index
END
INTERFACE TO FUNCTION settextcursor (attr)
INTEGER*2 settextcursor[FAR,C,ALIAS:"__settextcursor"],attr
END
INTERFACE TO SUBROUTINE
1 settextposition[FAR,C,ALIAS:"__f_settextposition"](row,col,s)
INTEGER*2 row,col
STRUCTURE/rccoord/
INTEGER*2 row
INTEGER*2 col
END STRUCTURE
RECORD/rccoord/s[FAR,REFERENCE]
END
INTERFACE TO FUNCTION settextrows (rows)
INTEGER*2 settextrows[FAR,C,ALIAS:"__settextrows"],rows
END
INTERFACE TO SUBROUTINE
1 settextwindow[FAR,C,ALIAS:"__settextwindow"] (r1,c1,r2,c2)
INTEGER*2 r1,c1,r2,c2
END
INTERFACE TO FUNCTION setvideomode (mode)
INTEGER*2 setvideomode[FAR,C,ALIAS:"__setvideomode"],mode
END
INTERFACE TO FUNCTION setvideomoderows (mode,rows)
INTEGER*2 setvideomoderows[FAR,C,ALIAS:"__setvideomoderows"]
INTEGER*2 mode,rows
END
INTERFACE TO SUBROUTINE
1 setvieworg[FAR,C,ALIAS:"__f_setvieworg"](x,y,s)
INTEGER*2 x,y
STRUCTURE/xycoord/
INTEGER*2 xcoord
INTEGER*2 ycoord
END STRUCTURE
RECORD/xycoord/s[FAR,REFERENCE]
END
INTERFACE TO SUBROUTINE
1 setviewport[FAR,C,ALIAS:"__setviewport"] (x1,y1,x2,y2)
INTEGER*2 x1,y1,x2,y2
END
INTERFACE TO FUNCTION setvisualpage (page)
INTEGER*2 setvisualpage[FAR,C,ALIAS:"__setvisualpage"],page
END
INTERFACE TO FUNCTION setwindow (finvert,wx1,wy1,wx2,wy2)
INTEGER*2 setwindow[FAR,C,ALIAS:"__setwindow"]
LOGICAL*2 finvert
DOUBLE PRECISION wx1,wy1,wx2,wy2
END
INTERFACE TO FUNCTION wrapon (option)
INTEGER*2 wrapon[FAR,C,ALIAS:"__wrapon"],option
END
* FONTS
INTERFACE TO FUNCTION getfontinfo(fi)
INTEGER*2 getfontinfo[FAR,C,ALIAS:"__f_getfontinfo"]
STRUCTURE/fontinfo/
INTEGER*2 type ! b0 set = vector,clear = bit map
INTEGER*2 ascent ! pix dist from top to baseline
INTEGER*2 pixwidth ! character width in pixels, 0=prop
INTEGER*2 pixheight ! character height in pixels
INTEGER*2 avgwidth ! average character width in pixels
CHARACTER*81 filename ! file name including path
CHARACTER*32 facename ! font name
END STRUCTURE
RECORD/fontinfo/fi[FAR,REFERENCE]
END
INTERFACE TO FUNCTION getgtextextent(text)
INTEGER*2 getgtextextent[FAR,C,ALIAS:"__f_getgtextextent"]
CHARACTER*(*) text[FAR,REFERENCE]
END
INTERFACE TO SUBROUTINE
1 outgtext[FAR,C,ALIAS:"__f_outgtext"](text)
CHARACTER*(*) text[FAR,REFERENCE]
END
INTERFACE TO FUNCTION registerfonts(filename)
INTEGER*2 registerfonts[FAR,C,ALIAS:"__f_registerfonts"]
CHARACTER*(*) filename[FAR,REFERENCE]
END
INTERFACE TO FUNCTION setfont(options)
INTEGER*2 setfont[FAR,C,ALIAS:"__f_setfont"]
CHARACTER*(*) options[FAR,REFERENCE]
END
INTERFACE TO SUBROUTINE
1 unregisterfonts[FAR,C,ALIAS:"__unregisterfonts"]()
END

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,2 @@
ntvdm -r:. -e:include=include,init=bin,path=bin,lib=lib,tmp=tmp bin\fl /FPc /Ot %1.for

View File

@ -0,0 +1 @@
placeholder