; program main; JMP MAIN INCLUDE IOProcs.Asm ; ; const ; pi = 3.1415; ; ; type ; ar = array[ 1..10 ] of real; ; xy = array [ ; 1 .. 5 , 6..7 ] ; of integer ; ; rec = record ; x, y : integer; ; a : ar ; end; ; ; var ; q : xy; ; a : char; ; ^ ; **** Semantic: Identifier not declared. **** ; i, j : integer; ; x : ; real; ; d : ar ; ; ; ; procedure dog( x : integer; var w : real ); ; var ; i, j : integer; ; begin ; x := i; ; w := j ; end; ; DOG: LINK A6,#-4 MOVE.W -2(A6),D0 MOVE.W D0,-(A7) LEA 8(A6),A0 MOVE.W (A7)+,(A0) MOVE.W -4(A6),D0 JSR _Int2Real MOVE.L D0,-(A7) MOVEA.L 10(A6),A0 MOVE.L (A7)+,(A0) UNLK A6 MOVE.L (A7)+,A0 ADDQ.W #6,A7 JMP (A0) ; { this is a comment, the following function is worthless } ; ; function dummy ( d : ar ) : real; ; begin ; q[ 2, 6 ] := d[4] ; end; ; DUMMY: LINK A6,#0 MOVEA.L 8(A6),A0 ADDA.W #12,A0 MOVE.L (A0),D0 JSR _Real2Int MOVE.W D0,-(A7) LEA Q(A5),A0 ADDQ.W #4,A0 MOVE.W (A7)+,(A0) UNLK A6 MOVE.L (A7)+,(A7) RTS ; (* Is this comment ignored in the token stream?? *) ; ; begin { main program } ; dog( 1, 2.2 ); ; ^ ; **** Semantic: Actual variable required. **** ; r.x := 1 ; ; ^ ; **** Semantic: Identifier not declared. **** ; while ( 1 < 2 ) do begin ; { begin while loop } ; a := 'e'; ; ^ ; **** Syntax: Illegal expression. **** ; for i:= 1 to 10 do ; ^ ; **** Semantic: Operands are not assignment compatible. **** ; if ( i >= j ) then begin ; j := 2 * i; ; d[4] := d[i] ; end ; else ; j:=i; ; b := 3.45 ; ^ ; **** Semantic: Identifier not declared. **** ; end; { of while } ; j := 2; ; x := dummy( d ) ; end. { of main program } MAIN: MOVEA.W #0,A6 LINK A6,#0 JSR _INIT _1: MOVEQ #2,D0 MOVE.W D0,-(A7) MOVEQ #1,D0 CMP.W (A7)+,D0 SLT D0 EXT.W D0 TST.W D0 BEQ _2 MOVEQ #1,D0 MOVE.W D0,-(A7) LEA I(A5),A0 MOVE.W (A7)+,(A0) _3: MOVE.W #10,D0 MOVE.W D0,-(A7) MOVE.W I(A5),D0 CMP.W (A7)+,D0 SLE D0 EXT.W D0 TST.W D0 BEQ _4 MOVE.W J(A5),D0 MOVE.W D0,-(A7) MOVE.W I(A5),D0 CMP.W (A7)+,D0 SGE D0 EXT.W D0 TST.W D0 BEQ _5 MOVE.W I(A5),D0 MULS #2,D0 MOVE.W D0,-(A7) LEA J(A5),A0 MOVE.W (A7)+,(A0) LEA D(A5),A0 MOVE.L A0,-(A7) MOVE.W I(A5),D0 SUBQ.W #1,D0 LSR.W #2,D0 ADD.W (A7)+,D0 MOVE.L D0,A0 MOVE.L (A0),D0 MOVE.L D0,-(A7) LEA D(A5),A0 ADDA.W #12,A0 MOVE.L (A7)+,(A0) JMP _6 _5: MOVE.W I(A5),D0 MOVE.W D0,-(A7) LEA J(A5),A0 MOVE.W (A7)+,(A0) _6: JMP _3 _4: JMP _1 _2: MOVEQ #2,D0 MOVE.W D0,-(A7) LEA J(A5),A0 MOVE.W (A7)+,(A0) SUBQ.W #4,A7 LEA D(A5),A0 MOVE.L A0,-(A7) JSR DUMMY MOVE.L (A7)+,D0 MOVE.L D0,-(A7) LEA X(A5),A0 MOVE.L (A7)+,(A0) UNLK A6 RTS A: DS.B 0 D: DS.B 40 I: DS.B 2 J: DS.B 2 Q: DS.B 20 X: DS.B 4 END MAIN