D.6. Example 6 - Matrix Elements. Microware C Compiler
Iklan
Iklan
Appendix D. Interfacing to Basic09 bne p1 inc 3,x bne p1 inc 2,x bne p1 inc 1,x p1 andb #$fe turn off sign stb 4,x put B sign byte lda 0,u get C sign byte lsla shift out sign bcc p2 bra if positive orb #$01 turn on sign stb 4,x put B sign byte p2 lda 7,u get C exponent adda #128 less 128 sta 0,x put B exponent p3 clra clear carry
#endasm
}
/* replace cstart.r definitions for BASIC09 */
#asm
_stkcheck:
_stkchec: rts vsect
_flacc: rmb 8 errno: rmb 2 endsect
#endasm
BASIC09 calling program:
PROCEDURE btest
DIM a:REAL
DIM i:INTEGER
DIM cmemory:STRING[32] a=1.
FOR i=1 TO 10
RUN flmult(cmemory,a)
PRINT a
NEXT i
END
D.6. Example 6 - Matrix Elements
The last program is an example of accessing BASIC09 matrix elements. The C program: matmult(cnt,cmemory,cmemsiz,matxaddr,matxsize,scalar,scalsize) char *cmemory; /* pointer to some memory for C use */ int matxaddr[5][3]; /* pointer a double dim integer array */ int *scalar;
{
/* pointer to integer */
#asm ldy 6,s get static memory address
#endasm int i,j; for(i=0; i<5; ++i) for(j=1; j<3; ++j) matxaddr[j][i] *= *scalar; /* multiply by value */
}
#asm
_stkcheck:
_stkchec:
121
Appendix D. Interfacing to Basic09 rts vsect
_flacc: rmb 8 errno: rmb 2 endsect
#endasm
BASIC09 calling program:
PROCEDURE btest
DIM im(5,3):INTEGER
DIM i,j:INTEGER
DIM cmem:STRING[32]
FOR i=1 TO 5
FOR j=1 TO 3
READ im(i,j)
NEXT j
NEXT i
DATA 11,13,7,3,4,0,5,7,2,8,15,0,0,14,4
FOR i=1 TO 5
PRINT im(i,1),im(i,2),im(i,3)
NEXT i
RUN matmult(cmem,im,64)
FOR i=1 TO 5
PRINT im(i,1),im(i,2),im(i,3)
NEXT i
END
122
Unduh
Iklan