For some reason I decided to rewrite the "wave" program that I wrote in Basic-11, but using DECUS C. I thought that it would be easy, but I didn't count on there not being a math.h. This means that I had to work out how to calculate a sine and cosine for myself. Well, actually I went off to google to see if somebody had already done the hard work for me. Indeed they had, I found it here: www.bsdlover.cn/study/unixtree/V7/usr/src/libm/sin.c.html
That code was already in K&R syntax, but it used modf(), I think that I went off and found some source code for that somewhere else... Anyway, when I had it working, I decided that I might want to use these bits of maths code somewhere else - so I extracted it out into my own library and made "maths.h". So I can now use sin/cos wherever I want.
Anyway, since I went to all that trouble, I thought that I had better post the results. You need to compile maths.c into maths.obj, like this:
.CC
CC> MATHS.C/A
RUN C:AS DK:MATHS.S/D
Then, you can #include "maths.h" and link to the maths.obj we created above, like this example:
LINK WAVE.OBJ,MATHS.OBJ,C:SUPORT.OBJ,C:CLIB.OBJ
I expect I'll add more to my maths library as I go, but this is a start.
I have now managed to make an RX33 boot disk image from RT-11 v5.3 and Decus C. However, I did have to remove some extra files from the original boot disk to make more space. These are the extra files that I removed:
RT11BL.SYS, RT11PI.SYS, RT11AI.SYS, RT11FB.SYS, RT11SJ.SYS
STARTA.COM, STARTS.COM, STARTF.COM
I guessed that since I'm using the "XM" edition of RT-11, then I would not need those files. Next, I copied over the DECUS C files, like this:
With CCDSK1.DSK in drive DK1:
CREATE sy:cdisk.dsk/allocate:1500
MOUNT ld0: sy:cdisk.dsk
ASSIGN ld0: c:
INITIALIZE c:
[LD0:/Initialize; Are you sure?] YES
COPY dk1:*.* c:
...now put disk CCXDSK.DSK in drive DK1:
If you've restarted the emulator to change disks, use the next two lines:
MOUNT ld0: sy:cdisk.dsk
ASSIGN ld0: c:
COPY dk1:*.* c:
@C:CCSET.EIS
@C:CCXASM.V53
Append these lines to your "STARTX.COM" command file (which runs when RT-11 starts):
MOUNT ld0: sy:cdisk.dsk
ASSIGN ld0: c:
@C:CCXASM.V53
Then restart... Finally, to compile a C program, do this:
CC
[CC>] hello.c/A
LINK sy:hello.obj,c:suport.obj,c:clib.obj
Don't forget that this is an old dialect of C, mainly as described by K&R. So you'll have to stick to the original K&R syntax. Right, next comes the fun stuff.