************************************************************ * This routine is the flippix routine for use in Personal * * Pascal. Use this in medium rez only. * * * * Written by Bruce Wiebe * * Copyright 1989 Antic Publishing Inc. * * * ************************************************************ COMMENT PASCAL XDEF FLIPPIX SECTION TEXT FLIPPIX move.l (sp)+,d5 *pop off return address move.l (sp)+,d0 *pop y off stack move.l (sp)+,d1 *pop x off stack move.l (sp)+,a0 *get screen address lsl.l #7,d0 *multiply by 128 move.l d0,d4 *save the result add.l d4,d0 *the result add.l d4,d0 *of all this is to add.l d4,d0 *multiply by 640 add.l d4,d0 *without using mul add.l d1,d0 *add x to get pixnumber divs.w #16,d0 *get byte offset swap d0 *exchange high and low byte move.b d0,bitnumber *save the remainder swap d0 *flip bytes back and.l #$0000FFFF,d0 *clear high byte lsl.l #2,d0 *multiply by 4 the fast way add.l d0,a0 *find address of screen byte move.w #15,d3 *get bitnumber to AND with sub.b bitnumber,d3 *d3 is number of bits to shift move.w #1,d4 *put a 1 in d4 lsl.w d3,d4 *shift bit to correct position move.w (a0),d1 *load word of screen to d1 move.w 2(a0),d2 *load word+1 of screen to d2 eor.w d4,d1 *toggle bit eor.w d4,d2 *toggle bit move.w d1,(a0) *write directly to screen move.w d2,2(a0) *write directly to screen move.l d5,-(sp) *push return address on stack rts bitnumber even dc.b 0