/* Alvin Albrecht 08.2003 Z88DK: zcc +zx -vn amxtest.c -o amxtest.bin -lsplib2 -lmalloc -lndos */ #include #include #include #pragma output STACKPTR=61440 /* SPRITE PACK VARIABLES COPIED FROM HEADER FILE */ extern struct sp_Rect *sp_ClipStruct; #asm LIB SPCClipStruct ._sp_ClipStruct defw SPCClipStruct #endasm /* GRAPHICS */ extern uchar ptr0[]; extern uchar ptr1[]; uchar buff[65]; uchar hash[]={0x55,0xaa,0x55,0xaa,0x55,0xaa,0x55,0xaa}; struct sp_PSS ps; /* MALLOC HEAP */ HEAPSIZE(128) void *u_malloc = malloc; void *u_free = free; /* INPUT PORT */ uchar inp(uint p) { #asm ld hl,2 add hl,sp ld c,(hl) inc hl ld b,(hl) in l,(c) ld h,0 #endasm } main() { struct sp_SS *ptr; uint x; uchar y, b; #asm di #endasm sp_InitIM2(0xf1f1); sp_CreateGenericISR(0xf1f1); sp_MouseAMXInit(0, 2); #asm ei #endasm heapinit(128); sp_TileArray(' ', hash); sp_Initialize(INK_WHITE | PAPER_BLACK, ' '); sp_Border(BLACK); ptr = sp_CreateSpr(sp_MASK_SPRITE, 3, ptr0, 0, TRANSPARENT); sp_AddColSpr(ptr, ptr1, TRANSPARENT); ps.colour = INK_CYAN | PAPER_BLACK; ps.flags = sp_PSS_INVALIDATE; ps.bounds = sp_ClipStruct; sp_PrintString(&ps, "\x16\x0f\x01\x0e\x1e \x0f"); while(1) { sp_UpdateNow(); sp_MouseAMX(&x, &y, &b); sp_MoveSprAbs(ptr, sp_ClipStruct, 0, y/8, x/8, x&7, y&7); sprintf(buff, "\x16\x0f\x01X: %u \x06\x09Y: %u \x06\x11P: %u \x06\x19B: %u", \ x, y, inp(0xdf), b); /* this is a little sluggish */ sp_PrintString(&ps, buff); } } #asm defb @00000000, @11111111 defb @00000000, @11111111 defb @00000000, @11111111 defb @00000000, @11111111 defb @00000000, @11111111 defb @00000000, @11111111 defb @00000000, @11111111 ._ptr0 defb @00000000, @00111111 defb @01000000, @00011111 defb @01100000, @00001111 defb @01110000, @00000111 defb @01111000, @00000011 defb @01111100, @00000001 defb @01111110, @00000000 defb @01101000, @00000000 defb @01001000, @00000011 defb @00000100, @00110001 defb @00000100, @11110001 defb @00000010, @11111000 defb @00000010, @11111000 defb @00000000, @11111100 defb @00000000, @11111111 defb @00000000, @11111111 defb @00000000, @11111111 defb @00000000, @11111111 defb @00000000, @11111111 defb @00000000, @11111111 defb @00000000, @11111111 defb @00000000, @11111111 defb @00000000, @11111111 defb @00000000, @11111111 ._ptr1 defb @00000000, @11111111 defb @00000000, @11111111 defb @00000000, @11111111 defb @00000000, @11111111 defb @00000000, @11111111 defb @00000000, @11111111 defb @00000000, @11111111 defb @00000000, @11111111 defb @00000000, @11111111 defb @00000000, @11111111 defb @00000000, @11111111 defb @00000000, @11111111 defb @00000000, @11111111 defb @00000000, @11111111 defb @00000000, @11111111 defb @00000000, @11111111 defb @00000000, @11111111 defb @00000000, @11111111 defb @00000000, @11111111 defb @00000000, @11111111 defb @00000000, @11111111 defb @00000000, @11111111 defb @00000000, @11111111 defb @00000000, @11111111 #endasm