.GLOBAL OFREE,OBJLST,BAKLST,BAK2LST,DISPLAYON,SCRNRELV .GLOBAL OINIT,GETOBJ,INSOBJ,DELOBJ,DISPLAY,ADDOBJ,KILOBJ,OBJSTR,DISPH .GLOBAL ANI,STFOBJ,MAKOBJ,SCRTST,SCRTSTG,GSAGOF,GANIOF .GLOBAL YZSORT,INSB2OBJ,INSBOBJ,DELB2OBJ,DELBOBJ,KILB2OBJ,KILBOBJ .GLOBAL PULLB2OBJ,PULLBOBJ,PULLOBJ,GANISAG,ADJSTWTL,CLIPOBJ .GLOBAL QDMA,QDMAN,SHADJUMP,GETANIXY,ANI2,SHADST2,SHADCPY,SHADCPY2 .GLOBAL SCROLLX,SCROLLY,WORLDTLX,WORLDTLY,WORLDTL,BAK2TLX,BAK2TLY .GLOBAL SCRNTL,SCRNLR,GSCRNREL,ADJNEWTL,DELSOBJ,DELSHAD,SHADST .GLOBAL OBJSTR,SCREENTL,SCREENLR,QSYNC,DMAQCUR,DMAQCNT .GLOBAL BOTQ0CNT,BOTQ1CNT,TOPQ0CNT,TOPQ1CNT,BOTQ0FLG,BOTQ1FLG .GLOBAL TOPQ0FLG,TOPQ1FLG,BOTQ0,BOTQ1,TOPQ0,TOPQ1,STOPOBJS .GLOBAL FREEOBJ,FREESOBJ,FREEOBJE,PULLSOBJ,INSSOBJ .GLOBAL PIXQHEAD,PIXQTAIL,PIXQVAL,SHADUPD,SHADUPD2,EXISTOBJ,DMAINT .GLOBAL DISPQT * *GLOBALS CONNECTED TO NARC .GLOBAL DFRMGRND,CURPAL,PIXQADD,DUMCOLL,ERRORLOG,BULLRET1,BULLRET2 * *CONSTANTS * SCRNST .SET [80,0] ;TOP LEFT OF SCREEN SCRNEND .SET [400,512] ;BOTTOM RIGHT OF SCREEN SCRNMID .SET [255,256] ;MIDPOINT OF SCREEN SHADID .EQU >0FFF ;SHADOWS ARE HIGH PRI * * OBJECT BLOCK LAYOUT * OLINK .SET 0 ; 32 BIT Link to next object block OSLINK .SET 20H ; 32 BIT SPECIAL LINK TO OBJECTS IN CLASS OXVEL .set 40h ; 32 BIT X VELOCITY 16.16 OYVEL .set 60h ; 32 BIT Y VELOCITY 16.16 OXVAL .set 80h ; 32 BIT X POSITION OXFRAC .set 80h ; Fractional portion of X position OXPOS .set 90h ; Integer portion of X position OYVAL .set 0A0h ; 32 BIT Y POSITION OYFRAC .set 0A0h ; Fractional portion of Y position OYPOS .SET 0B0h ; Integer portion of Y position OZVAL .SET 0C0H ; 32 BIT Z POSITION OZPOS .SET 0D0h ; INTEGER Z position of object OZVEL .set 0E0h ; 32 BIT Z VELOCITY OFLAGS .set 100H ; 32 BIT bits 0 - 5 DMA CONTROL; B16-31= OFFSET PRECOMPUTED OFSET .SET 110H ; PRECOMPUTED OFFSET OSAG .SET 120H ; 32 BIT SOURCE ADDRESS (UNCLIPPED, ADJUSTED FOR FLIPS) OSIZE .SET 140H ; 32 BIT H,W OF OBJECT (16,16) W=ADJUSTED FOR MORSEL OSIZEX .EQU 140H ;X SIZE OSIZEY .EQU 150H ;Y SIZE OPAL .set 160h ; 32 BIT B(0-15) PALETTE; B(16-31) CONSTANT COLOR OCONST .SET 170H ; CONSTANT COLOR OIMG .set 180h ; 32 BIT Pointer to image data table OID .set 1A0H ; 16 BIT Object ID OZSIZ .SET 1B0H ; 32 BIT Z THICKNESS OZMINUS .SET 1B0H ; Thickness along minus Z OZPLUS .SET 1C0H ; Thickness along plus Z OCVECT .set 1D0H ; 32 BIT Link to collision handler OPLINK .set 1F0H ; 32 BIT Link to controlling process ODMAXY .SET 210H ; 32 BIT SCREEN COORD OF OBJECT ODMAX .EQU 210H ;X COORDINATE ODMAY .EQU 220H ;Y COORDINATE OXCLIP .SET 230H ;16 BIT TOTAL X PRECLIP OSHAD .SET 240H ;32 BIT SHADOW LINK OBLIPIMG .SET 260H ;PTR TO SCANNER BLIP IMAGE OEBLIP .SET 280H ;[Y,X] LOCATION OF PREVIOUS SCANNER BLIP, 0 = NONE OBSIZ .SET 2A0H ; Object Block Size NOBJ .SET 384 ; OBJECTS TO DISPLAY * BQCELL .SET >A0 ;SIZE OF DMA QUEUE ELEMENT *********************** * Values for OFLAGS * *********************** M_WRZERO .set 1 ;Write Zero Data M_WRNONZ .set 2 ;Write Non-Zero Data M_CONZER .set 4 ;Replace Zero Data with constant M_CONNON .set 8 ;Replace Non-Zero Data with constant M_CONST .set >C ;any constant data replacement M_FLIPH .set >10 ;Flip Horizontally M_FLIPV .set >20 ;Flip Vertically M_NODIS .set >100 ;Ignore this entry M_PZPLUS .EQU >200 ;TAKE Z VALUE FROM RAM LOC. PREVZ AND ADD 1 M_PIXSCAN .EQU >400 ;IF=1 O.K. TO PIXEL SCAN WITH THIS OBJECT M_NOCOLL .EQU >800 ;IF=1 OBJECT NOT COLLIDABLE M_PREVZ .SET >1000 ;TAKE Z VALUE FROM RAM LOC. PREVZ M_NOMOV .set >2000 ;Do not add velocities * *BIT POSITIONS FOR OFLAGS B_WRZERO .set 0 B_WRNONZ .set 1 B_CONZER .set 2 B_CONNON .set 3 B_FLIPH .set 4 B_FLIPV .set 5 B_NODIS .set 8 B_PZPLUS .EQU 9 B_PIXSCAN .EQU 10 B_NOCOLL .EQU 11 B_PREVZ .SET 12 B_NOMOV .set 13