第一篇 NDP工具及编译器 3
第一章 概论 3
1.1 微型电子计算机系统简介 3
1.2 FORTRAN程序设计语言简介 3
1.3 NDP FORTRAN486/386简介 3
第二章 几最新NDP版本介绍 5
2.1 概述 5
2.2 3.2.0版用于DOS系统的NDP486/386编译器 6
2.3 4.0.2版用于DOS系统的NDP486/386编译器 22
2.4 4.2.0Beta版用于DOS系统的NDP486/386编译器 28
第三章 用于NDP486/386编译器的NDP工具 30
3.1 概述 30
3.2 NDP Link 31
3.3 NDP Run和VM 40
3.4 NDP Lib 42
3.5 NDP工具实用程序 45
3.6 使用NDP Tools的警告和错误信息 46
第四章 NDP FPRTRAN486/386编译器 50
4.1 概述 50
4.2 运行编译程序 53
4.3 使用编译器驱动器程序—mf486、386 62
第五章 NDP FPRTRAN486/386的优化处理 69
5.1 一般优化 69
5.2 速度优化 71
5.3 FORTRAN应用程序的优化 72
第六章 NOP编译程序的接口 81
6.1 概述 81
6.2 NDP FORTRAN与其它NDP语言之间的接口 82
6.3 NDP语言与汇编语言之间的接口 87
6.4 实模式程序的接口 91
第七章 移植程序到NDP FORTRAN中 94
7.1 与其它 Microway NDP编译器的兼容性 94
7.2 字长问题 94
7.3 字节顺序问题 94
7.4 对齐要求 95
7.5 浮点范围和精度 95
7.6 汇编语言接口 95
7.7 表达式的求值顺序 96
7.8 编译优化的非法假设 96
7.9 隐含寄存器的使用 96
7.10 内存分配假定 96
7.13 编译器内存大小问题 97
7.11 —OM和—OLM选择项 97
7.12 有关源程序级调试程序的问题 97
第八章 数字协处理器支持 98
8.1 概述 98
8.2 编译器的浮点选项—“n”开关 99
8.3 数值异常—主动与被动处理(仅限于DOS) 100
8.4 协处理器结构 102
8.5 对IEEE数值系统的介绍 105
8.6 内部NDP异常处理函数(仅限于DOS) 114
8.7 定制或编写自己的NDP异常处理程序 117
8.8 舍入、精度及无穷大控制 118
8.9 改进无浮点数开关(—n6) 119
第九章 跟踪/调试功能 121
9.1 概述 121
9.3 内存保护错误 122
9.2 调试程序 122
9.4 编写一个快速user_ debug程序 123
第十章 错误信息及恢复 125
10.1 前端错误 125
10.2 后端错误 125
第二篇 NDP FORTRAN库 129
第十一章 内部函数 129
abs 129
acos allocated and 130
asin atan,atand atan2,atan2d 131
btest char cmplx 132
conjg cos,cosd cosh 133
cotan dble dcmplx 134
dfloat dim dprod eof 135
epsilon exp 136
float hfix huge 137
ibchng ibclr ibits 138
ibset ichar ifix imag 139
index int intl 140
int2 int4 141
intc ior isha 142
ishc ishft 143
ishftc ishl jfix 144
len len_trim loc,locnear,locfar 145
log log10 lshift max 146
macexponent min 147
macexponent mod nearest 148
nint not or 149
precision ran real rshift 150
scan sign sin 151
sinh sqrt tan,tand 152
tanh tiny verify 153
xor zext 154
第十二章 FORTRAN库例程 156
accept backspace bdos 158
beep _bios_disk 159
_bios_equiplist _bios_keybrd _bios_memsize _bios _printer 160
_bios_serialcom _bios_timeofday 161
_blk_bm_blk_mb 162
cgets chdir chmod chsize clear87 163
_clock_ticks close clrndpex 164
_control87 cputs _cstring 165
cvid 166
cvif date decode 167
dosdat _dos_allocmem _dos_close _dos_creat 168
_dos_creatnew _dos_exterr _dos_findfirst _dos_findnext 169
_dos_freemem _dos_getdate _dos_getdiskfree _dos_getdrive 170
_dos_getfileattr _dos_getftime _dos_gettime _dos_keep _dos_open _dos_read 171
_dos_setblock _dos_setftime _dos_settme _dos_setfileattr _dos_settime _dos_settime 172
dostim _dos_write dsab_ex 173
dup dup2 enab _ex encode 174
endfile erf erfc 175
errsns exit fflush_buf 176
filelength _freect ftime gamma 177
get _addr gctarg 178
getch getche getcwd getdat get_dos_dta getenv 179
geterrno gethost gettim _heapchk 180
_heaprun_heapset _heapwalk_hostfree _hostmalloc _hypot 181
iargc iclrer diate 182
igeter _ignore _breaks 183
inf_ctl init_ndp inkey 184
inp,inpd,inpw inquire 185
install _pm_isr 187
int386 int386x 188
int86 int86x 189
intdos intdosx 190
itoa _itoh,_itoo,_itob j0,jl,jn 191
kbhit idndpcw 192
ldndpenv lfind locking 193
lrotl lrotr lsearch ltoa _makepath mapdev 194
mapref memavl memcpy 195
memmax_memory_address 196
mkdir _msize mubits nargs ndptype 197
note nstndpenv 198
num _files open os386_rpc os386 _rp_load 199
outp,outpd,outpw pause 200
pauseb peek,peekb,peekw poke,pokeb, pokew precis 201
print printerror putch pxerror 202
random read _read _typeahead 203
restore_isr ret_ex_hdl rewind 204
rm_alloc rmdir rm_free rm _int386 205
rm_resize rotl rotr round 206
save _isr _searchenv sec_100 207
secnds seed segread 208
set_buffering setdat seterrno 209
set_ex_bdl set_io_defaults settim 210
shiftstate 211
show_registers sign_of_gamma sopen spawn 212
spawnv spawnve spawnvp spawnvpe 213
_splitpath stndpcw stndpenv 214
stndpsw strdup _strerror 215
_strtime system tell tempnam 216
time timedate 217
type tzset ultoa ungetch _user_break 218
utime _watch_breaks writ xexit y0,y1,yn 219
第三篇 NDP扩展图形库GREX 223
第十三章 GREX库概述 223
13.1 设计思想 223
13.2 库的范围 227
13.3 库的内容 230
第十四章 GREX库例程 234
14.1 图形例程 234
address aspect_ratio 234
clear 235
define_color 236
draw filled_ellipse 237
filled _rectangle 238
flood_fill 239
get_active_page get_clip_limits get_color 240
get_dash get _device _limits 241
get_fill_mask get _display _page get_pixel 242
graphic_page_count 244
graphic _text 246
graphics_mode horizontal _line 247
magnify_text 248
move move_crusor 249
open_ellipse 251
physical_screen 252
polfill 253
restore_window 256
save_window set_active_page 259
set_bios_mode 260
set_clip_limits set_color set_dash 261
set_display_page set_fill_mask 263
set_font_8×8 set_font_8×14 set_font_8×16 set_palette 264
set_pixel 267
set_pixel_function 268
set_user_font 269
set_xor 270
size_window 271
super_vga 272
text_mode vertical_text 273
vga_palette 274
video_configuration 275
virtual_screen 276
_where 281
14.2 文本例程 282
box_text_window clear_text clear_text_window 282
cr create_text_subwindow create_text_window crlf display_text_page 283
dn_cursor free_text_window get_active _attribute 285
get_active_text_page get_cursor get_video _mode 286
hide_cursor home if 287
locate 288
lt_cursor place_string_at 289
read_attr read_char read_text_window reshape_text_window restore _text_window 290
rt_cursor save_text_window 291
scroll_active_page_down 295
scroll_active_page_up scroll_text_window set25line set43line set_active_attribute 296
set_active_text_page set_cursor_type 297
set_video_mode up _cursor write_char 298
write_char_attr write_one_shar write_string write_test_screen 299
write_text_window 300
14.3 端口、块和中断 300
inkey 300
pause 301
pauseb 302
shiftstate 303
beep note 304
blk_bm 305
blk_mb inp 306
inpw int386 307
save_isr 308
restore_isr 309
install_pm_isr mapdev 310
outp 311
outpw peek peekw peekb pode 314
pokew pokeb pxerror 315
rm_alloc rm_free 316
14.4 鼠标支持函数 316
is_a _mouse_present show_mouse_cursor get_mouse 316
get_press mouse_viewport 317
set_subroutine 320
memcpy 324
14.5 标范程序 324
附录一 编译过程错误 326
附录二 运行过程错误 330
附录三 ASCII字符表 332