-------------------------------------------------------------------------------
80196 C
Readme
Copyright (C) 1996 Tasking Software BV
Document date: 10/10/96
-------------------------------------------------------------------------------
INTRODUCTION
-------------------------------------------------------------------------------
Thank you for purchasing a TASKING software product.
This file describes the solved and the known problems of version 5.0
revision 3 of the 80196 toolchain.
-------------------------------------------------------------------------------
ADDITIONAL RELEASE NOTES
-------------------------------------------------------------------------------
The following section contains some last minute information about the 80C196
Compiler. This information could not make it into the manuals.
---------------------------------------------------------------------------
NEW COMPILER CONTROLS
---------------------------------------------------------------------------
The following compiler controls have been added:
warning_true_false
Primary control: enables the 'comparison always returns TRUE' and
'comparison always returns FALSE' warnings
default: warning_true_false
Syntax
warning_true_false | nowarning_true_false
Abbreviation
wt | nowt
Discussion
Use this control to generate the 'comparison always returns TRUE' or
the 'comparison always returns FALSE' warnings. These warnings will
appear for instance when comparing two constants or when comparing
a negative number with an unsigned integer.
Use the nowarning_true_false control to suppress these warnings.
-------------------------------------------------------------------------------
SOLVED PROBLEMS
-------------------------------------------------------------------------------
SOLVED PR5100: ARGUMENT OUT OF RANGE FOR LOCATE CONTROL 0XE0000
PROBLEM DESCRIPTION:
Using pragma locate with number above 0xFFFF results in error:
Argument out of range for locate control
WORKAROUND:
No workaround.
-------------------------------------------------------------------------------
SOLVED PR5101: LINKER ERROR 113: INSTRUCTION OPERAND OUT OF RANGE
PROBLEM DESCRIPTION:
Declaring interrupt function leads to RL196 ERROR 113
For model(ex) farcode only.
WORKAROUND:
no workaround.
-------------------------------------------------------------------------------
SOLVED PR5138: COMPILER GENERATES LDB AND STB INSTEAD OF ELDB AND ESTB
PROBLEM DESCRIPTION:
Variable led is located to external memory 0xFB0055.
If you program the C statement:
if( led == 0 ) { etc.
the compiler generates:
cmpb R0,led
bne
If you program the C statement:
led = 1;
the compiler generates:
ldb tmp0,#1
stb tmp0,led
EXAMPLE:
#pragma model(ex)
int led;
#pragma locate(led=0xFB0056)
void
main(void)
{
if( led == 0 )
{
led = 1;
}
}
WORKAROUND:
Declare variable with keyword far, see below:
#pragma model(ex)
far int led;
#pragma locate(led=0xFB0056)
-------------------------------------------------------------------------------
SOLVED PR5142: COMPILER GENERATES "CMPL" INSTRUCTIONS FOR KB MODEL.
PROBLEM DESCRIPTION:
The compiler generates CMPL instructions for the KB model
which is not supported by the chip according to the customer.
The "CMPL" instruction is supported by the chip.
The "CMPL" (compare two long words) instruction is unreliable when
register 0 is used. Incorrect flags are set when register 0 is
used with the compare long instruction. However, "CMPL" works
completely correct with other long word registers.
EXAMPLE:
R0 equ 00H
rseg at 1CH
temp: dsw 2 ;space for long word
cseg at 2080H
ld temp,#0020H ;any number
ld temp+2,#0000H
cmpl R0,temp ;compares R0 to 0000 0020H
jlt next_routine
stop:
br stop
...
...
next_routine:
...
WORKAROUND:
Load value 0 in register before CMPL.
rseg at 1CH
temp: dsw 2 ;space for long word
long_0: dsw 2
cseg at 2080H
ld long_0,#0000H ;initialize long word register 0
ld long_0+2,#0000H
ld temp,#0020H ;compare value
ld temp+2,#0000H
cmpl long_0,temp
jlt next_routine
stop:
br stop
...
...
next_routine:
...
...
-------------------------------------------------------------------------------
SOLVED PR5143: INCORRECT CODE FOR POINTER TO LONG
PROBLEM DESCRIPTION:
When you specify a argument which is a pointer to a long,
the compiler generates incorrect code.
EXAMPLE:
void
foo( long *pb)
{
if(*pb > 1L)
*pb = 1L;
}
void
main(void)
{
long b;
b = 2L;
foo(&b);
}
See /usr/sec/support/80196/7165
WORKAROUND:
None.
-------------------------------------------------------------------------------
SOLVED PR5144: WRITING TEMP FILE IN ROOT DIR WHEN OPTION XR IS USED
PROBLEM DESCRIPTION:
When you specify option xref (xr) the compiler wants to create a temp file in
the root directory.
The name af the temp file is: $TA00023
EXAMPLE:
c196 t.c xr
WORKAROUND:
Have read/write permission in the root directory.
-------------------------------------------------------------------------------
SOLVED PR5152: #PRAGMA TMPREG(XX) DOES NOT WORK CORRECTELY
PROBLEM DESCRIPTION:
When using the #pragma tmpreg(xx), the compiler emits
references to TMPREG0 instead of TMPREGxx, as described
in the C manual pp 3-105 to 3-107.
EXAMPLE:
#pragma tmpreg(0C0H)
void main(void)
{
int a,b,result;
result = a + b;
}
-------------------------------------------------------------------------------
SOLVED PR5154: SWITCH CASE STATEMENT DOES NOT WORK WITH MD(EX) FARCODE
PROBLEM DESCRIPTION:
When the compiler generates a jump table for the case/switch statement and
model(ex) and farcode are used, the generated code is not correct.
EXAMPLE:
generated code:
@000C:
cmp Tmp0,#8
bh @0016
shl Tmp0,#2
eld Tmp2,@TBL01+2[Tmp0]
eld Tmp0,@TBL01[Tmp0]
ebr [Tmp0]
kseg far
-------------------------------------------------------------------------------
SOLVED PR5165: &-OPERATOR GENERATES WRONG ADDRESS IN EXT.MODEL
PROBLEM DESCRIPTION:
The '&' operator generates wrong code in extended model.
EXAMPLE:
memcpy(&p1,&b,2); results in:
...
C90400 R push R0
C902F0 push #p1:msw <- wrong addr
C902F0 push #p1:lsw <- wrong addr
F1000000 E ecall memcpy
650A0018 add SP,#0AH
p=&p1; results in:
A102F000 R ld p,#p1:lsw <- wrong addr
A102F002 R ld p+2.#p1:msw <- wrong
F0 ret
WORKAROUND:
Not known yet.
-------------------------------------------------------------------------------
SOLVED PR5166: ABSOL.ADDR IN EXT.MODEL INTERPRETED AS 16-BIT ADDR ONLY.
PROBLEM DESCRIPTION:
absolute addresses in extended model (model(ex)) are
interpreted only as 16-bit addresses.
EXAMPLE:
#define PERIPHERAL (*((unsigned char far *)0x01f002))
PERIPHERAL = 0x2a;
results in:
B12A1C ldb Tmp0,#2AH
C70102F01C stb Tmp0,0F002H <- is a 16 bit addr!
-------------------------------------------------------------------------------
SOLVED PR5170: E115 WHEN STRLEN() AND WINDOWING ARE USED
PROBLEM DESCRIPTION:
E115: is
没有合适的资源?快使用搜索试试~ 我知道了~
mcs96仿真系统 这是一款mcs196仿真系统较完全的资料很好用 内带原理图说明
共276个文件
bmp:59个
h:47个
asm:25个
4星 · 超过85%的资源 需积分: 9 10 下载量 55 浏览量
2008-11-11
16:05:20
上传
评论
收藏 3.93MB RAR 举报
温馨提示
这是一款mcs196仿真系统较完全的资料很好用 内带原理图说明 可以根据里面的内容自制仿真系统
资源推荐
资源详情
资源评论
收起资源包目录
mcs96仿真系统 这是一款mcs196仿真系统较完全的资料很好用 内带原理图说明 (276个子文件)
H11.asm 4KB
REG96.asm 2KB
H10.asm 1KB
H7.asm 1KB
H4.asm 957B
H9.asm 930B
H15.asm 801B
led8k.asm 737B
S8.asm 712B
H2.asm 537B
H3.asm 486B
S6.asm 467B
H5.asm 460B
S5.asm 436B
H12.asm 415B
H13.asm 385B
H1.asm 379B
S2.asm 286B
S3.asm 285B
H14.asm 270B
S4.asm 257B
H6.asm 250B
H8.asm 224B
S7.asm 199B
S1.asm 187B
H14.BAT 256B
H15.BAT 256B
H13.BAT 256B
H12.BAT 256B
H11.BAT 256B
H10.BAT 256B
H9.BAT 251B
H5.BAT 251B
H4.BAT 251B
H8.BAT 251B
Hd958p2.bmp 699KB
96hdlt9.bmp 323KB
96hlct9.bmp 312KB
96hlct4.bmp 236KB
96hdlt4.bmp 181KB
96hlct6.bmp 174KB
96hdlt15.bmp 163KB
96hlct3.Bmp 154KB
96hdlt10.bmp 145KB
96hdlt16.bmp 145KB
96hlct12.bmp 126KB
96hdlt7.bmp 112KB
96slct5.bmp 104KB
96hdlt3.bmp 103KB
IC_80196.BMP 98KB
96hlct8.bmp 94KB
96hlct7.bmp 83KB
96hdlt5.bmp 79KB
96hlct2.Bmp 76KB
96hlct1.Bmp 76KB
96slct4.bmp 60KB
96hdlt12.bmp 59KB
96hlct5.bmp 46KB
96hlct11.bmp 43KB
96hlct13.bmp 41KB
96hlct16.bmp 40KB
96slct2.bmp 39KB
96hlct15.bmp 38KB
96slct1.bmp 37KB
96slct3.bmp 36KB
96hlct14.bmp 31KB
96hdlt11.bmp 25KB
IC_8088.BMP 20KB
IC_8032.BMP 18KB
IC_8279.BMP 18KB
IC_8255.BMP 16KB
96hdlt6.bmp 14KB
IC_8251.BMP 14KB
IC_0809.BMP 12KB
IC_8259.BMP 11KB
IC_27512.BMP 11KB
IC_8253.BMP 10KB
IC_27128.BMP 10KB
IC_0832.BMP 8KB
IC_244.BMP 7KB
IC_273.BMP 7KB
IC_245.BMP 7KB
96hdlt13.bmp 7KB
IC_138.BMP 6KB
96hdlt2.bmp 6KB
96hdlt14.bmp 6KB
IC_393.BMP 5KB
IC_07.BMP 5KB
IC_04.BMP 5KB
IC_02.BMP 5KB
96hdlt1.bmp 5KB
IC_386.BMP 5KB
IC_741.BMP 5KB
IC_75452.BMP 3KB
196v50.cfg 18B
dice96.chm 863KB
Thumbs.db 124KB
196v50.dfg 18B
Ftui.dll 67KB
Ftengine.dll 43KB
共 276 条
- 1
- 2
- 3
资源评论
- scybyq2013-04-11需要注册才行
- mailbert2013-01-28是dice96软件和一些说明文档。确实很老了。谢谢共享。
- alan21022012-10-23虽然好老了,还是有用啊!
ttjj888
- 粉丝: 0
- 资源: 17
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功