         Edinburgh IMP77 Compiler - Version 8.4
    1 %BEGIN
				NO_APP
		.Ltext0:
				.section	.rodata
		.LC1:
		 		.byte	13
		 		.string	"WRONG ANSWERS"
		 		.zero	241
		.LC0:
		 		.byte	7
		 		.string	"TEST OK"
		 		.zero	247
				.align	2
				.globl	main
		main:
		.LFB185:
		.LVL0:
		 		link.w %fp,#-1024
		 		movem.l #15392,-(%sp)
    2 !***********************************************************************
		 		move.l 12(%fp),-(%sp)
		 		move.l 8(%fp),-(%sp)
		 		jsr _imp_initialise
		.LVL1:
		.LDL1:
		.LDL2:
		.LDL3:
		.LDL4:
		.LDL5:
		.LDL6:
		.LDL7:
		.LDL8:
		.LDL9:
		.LDL10:
		.LDL11:
		.LDL12:
		.LDL13:
		.LDL14:
		.LDL15:
		.LDL16:
		.LDL17:
		.LDL18:
		.LDL19:
		.LDL20:
		 		lea CH.5986,%a0
		 		lea CH.5986+17,%a1
		 		addq.l #8,%sp
		 		move.l #4003,%d2
		 		jra .L2
		.LVL2:
		.L9:
		.L6:
    3 !*    SHOULD RUN WITHOUT OPUT. LOOPS ON SOME COMPILERS DUE TO          *
    4 !*    MISSING LABELS GIVING JUMPS WITH ZERO OFFSET                     *
    5 !***********************************************************************
    6 %OWNBYTEINTEGERARRAY CH(0:16)='0','1','2','3','4','5','6','7','8',
    7       '9','A','B','C','D','E','F','G'
    8 %INTEGER I,K,L
    9 %CONSTINTEGER J=0
   10       I=4000; L=10
   11       %IF I>4095 %AND J#0 %THEN I=I+1
   12       %IF I>4095 %AND J#0 %THEN I=I+1 %ELSE I=I-1
   13       %IF I>4095 %AND J#0 %THEN %START; %FINISH
   14       %IF I>4095 %AND J#0 %THEN %START
   15          I=I+1
   16       %FINISH %ELSE I=I-1
   17       %IF (I>4095 %AND J#0 ) %AND L=1 %THEN I=I+1
   18       %IF (I>4095 %AND J#0) %OR L=1 %THEN I=I+1
   19       %UNLESS I>4095 %AND J#0 %THEN I=I+1
   20       %UNLESS I>4095 %AND J#0 %THEN I=I+1 %ELSE I=I-1
   21       %UNLESS I>4095 %AND J#0 %THEN %START; %FINISH
   22       %UNLESS I>4095 %AND J#0 %THEN %START
   23          I=I+1
   24       %FINISH %ELSE I=I-1
   25       %UNLESS (I>4095 %AND J#0 ) %AND L=1 %THEN I=I+1
   26       %UNLESS (I>4095 %AND J#0) %OR L=1 %THEN I=I+1
   27        %FOR K=0,1,16 %CYCLE
   28          %UNLESS '0'<=CH(K)<='9' %OR 'A'<=CH(K)<='F' %THEN I=I+1
   29       %REPEAT
   30       %IF I=4004 %THEN PRINTSTRING("TEST OK") %ELSE %C
		 		cmp.l %a0,%a1
		 		jeq .L3
		.LVL4:
		.L2:
		.LBB12:
		 		cmp.l #4004,%d2
		 		jeq .L10
		.L7:
		.LBB14:
		 		move.l %fp,%d3
		.LVL9:
		 		add.l #-256,%d3
		.LVL10:
		 		move.l #256,%d4
		 		move.l %d4,-(%sp)
		.LVL11:
		 		pea .LC1
		 		move.l %d3,-(%sp)
		 		lea memcpy,%a2
		 		jsr (%a2)
		.LVL12:
		 		move.l %fp,%d5
		.LVL13:
		 		add.l #-768,%d5
		.LVL14:
		 		move.l %d4,-(%sp)
		 		move.l %d3,-(%sp)
		 		move.l %d5,-(%sp)
		 		jsr (%a2)
		.LVL15:
		 		move.l %d4,-(%sp)
		 		move.l %d5,-(%sp)
		 		move.l %d3,-(%sp)
		 		jsr (%a2)
		.LVL16:
		.LBE14:
		.LBB15:
		.LBB16:
		 		lea (-220,%sp),%sp
		 		move.l %sp,%d0
		 		move.l %d4,-(%sp)
		 		move.l %d3,-(%sp)
		 		move.l %d0,-(%sp)
		 		jsr (%a2)
		.LVL17:
		 		lea (12,%sp),%sp
		 		jsr _imp_printstring
		.LVL18:
		.LBE16:
		.LBE15:
		 		add.l %d4,%sp
		 		pea 5.w
		 		move.l %d2,-(%sp)
		 		jsr _imp_writeint
		.LVL19:
		 		addq.l #8,%sp
		.LVL20:
		.L8:
		.LBB17:
		.LBB18:
		 		clr.l -(%sp)
		 		jsr exit
		.LVL21:
		.L10:
		.LBE18:
		.LBE17:
		.LBB19:
   31          PRINTSTRING("WRONG ANSWERS") %AND WRITE(I,5)
		 		move.b (%a0)+,%d0
		.LVL5:
		 		move.b %d0,%d1
		 		add.b #-48,%d1
		 		cmp.b #9,%d1
		 		jls .L4
		.L5:
		.LVL6:
		.LBE12:
		.LBB13:
		 		add.b #-65,%d0
		.LVL7:
		 		cmp.b #5,%d0
		 		jls .L4
		.LBE13:
		 		jra .L9
		.LVL8:
		.L3:
		 		move.l %fp,%d3
		.LVL22:
		 		add.l #-256,%d3
		.LVL23:
		 		move.l #256,%d2
		.LVL24:
		 		move.l %d2,-(%sp)
		.LVL25:
		 		pea .LC0
		 		move.l %d3,-(%sp)
		 		lea memcpy,%a2
		 		jsr (%a2)
		.LVL26:
		 		move.l %fp,%d4
		.LVL27:
		 		add.l #-1024,%d4
		.LVL28:
		 		move.l %d2,-(%sp)
		 		move.l %d3,-(%sp)
		 		move.l %d4,-(%sp)
		 		jsr (%a2)
		.LVL29:
		 		add.l #-256,%d3
		 		move.l %d2,-(%sp)
		 		move.l %d4,-(%sp)
		 		move.l %d3,-(%sp)
		 		jsr (%a2)
		.LVL30:
		.LBE19:
		.LBB20:
		.LBB21:
		 		lea (-220,%sp),%sp
		 		move.l %sp,%d0
		 		move.l %d2,-(%sp)
		 		move.l %d3,-(%sp)
		 		move.l %d0,-(%sp)
		 		jsr (%a2)
		.LVL31:
		 		lea (12,%sp),%sp
		 		jsr _imp_printstring
		.LVL32:
		 		add.l %d2,%sp
		 		jra .L8
		.LBE21:
		.LBE20:
		.LFE185:
				.section	.rodata
		CH.5986:
		 		.byte	48
		 		.byte	49
		 		.byte	50
		 		.byte	51
		 		.byte	52
		 		.byte	53
		 		.byte	54
		 		.byte	55
		 		.byte	56
		 		.byte	57
		 		.byte	65
		 		.byte	66
		 		.byte	67
		 		.byte	68
		 		.byte	69
		 		.byte	70
		 		.byte	71
		.Letext0:
   32 %ENDOFPROGRAM
   29 Statements compiled
		 		addq.l #1,%d2
		.LVL3:
		.L4:
