#include <perms.h>
// Edinburgh IMP77 Compiler - Version 8.4
//
// 1 %begin
int main(int argc, char **argv) { /*%begin*/
_imp_initialise(argc, argv);
// 2
// 3 %ROUTINE MAKE MOVE(%INTEGERARRAYNAME COMP)
void MAKEMOVE(int *COMP) {
// 4
// 5 ! generates COMP[26] = (((int *)(COMP[26])) + (1));
// 6
// 7 COMP(26) = COMP(26)+1; ! increase crown count
_imp_aref(int, COMP, 26) = _imp_aref(int, COMP, 26) + 1;
// 8 %END
return;
} /* end of MAKEMOVE */
// 9
// 10 %integerarray comp(-1:30)
int COMP[32];
_imp_create_constdv(, int, COMP, -1, 30);
// 11
// 12 make move(comp)
MAKEMOVE(COMP);
// 13
// 14 %integerarrayname ian
int *IAN;
struct _imp_dv IAN_dv = {0}; // assignment of an array to an arrayname must copy bounds info too...
// 15
// 16 ian == comp
IAN = (int *)COMP;
IAN_dv = COMP_dv;
// 17
// 18 ian(26) = ian(26) + 1
_imp_aref(int, IAN, 26) = _imp_aref(int, IAN, 26) + 1;
// 19
// 20 make move(ian)
MAKEMOVE(IAN);
// 21
// 22 %endofprogram
_imp_stop(0);
return 0;
end_0:;
}