Product specifications

2. There is an additional table BITTAB used by DOTSUB.
;
; DOTSUB – DERIVES HIGH-RES SCREEN LOCATION OF A POINT WITHIN
; A SPRITE PATTERN AND TEST BIT UNDERNEATH THAT POINT
; RETURN RESULT OF TEST IN ACC
; IF BIT SET THEN ACC = 1
; IF BIT NOT SET THEN ACC = 0
;
; X COORD IN H, Y COORD IN L ON ENTRY
;
; PATTERN GENERATOR ADDRESS IN DE
; BYTE IN A
; ON EXIT
;
; AF, BC, DE, HL REGISTER PAIRS AFFECTED ON EXIT
;
; ROUTINE USES TWO BYTE VARIABLE SAPATG WHICH MUST
;
; BE SET TO CONTAIN THE START ADDRESS OF THE PATTERN
; GENERATOR TABLE PRIOR TO ENTRY TO THIS ROUTINE
;
; BITTAB IS AN 8 BYTE TABLE USED TO PERFORM A BIT TEST
; ON INDIVIDUAL BYTES EXTRACTED FROM THE PATTERN
; GENERATOR TABLE
;
SAPATG: DW £0000 ;(See description above)
BITTAB: DW 128,64,32,16 ;(See description above)
DB 8,4,2,1,0
;
DOTSUB: PUSH HL ;Save sprite X/Y coords
LD A,L ;Derive relative Y offset from
LD D,0 ;start of pattern generator table
AND 248 ;Result in DE when this section
LD E,A ;finished
LD B,5 ;DE = INT (Y / 8) * 256 +
DOTSUB: SLA E ; (Y – (INT (Y / 8) * 8 ))
RL D
DJNZ DOTSU1
LD A,L
AND 7
AND A,E
LD E,A ;Y coord offset in DE at this point
;
LD A,H ;Derive relative X offset from
;start of pattern generator table
LD H,0 ;Result in HL when this section
AND 7 ;finished
LD L,A ;HL = INT ( X / 8) * 8
ADD HL,DE ;Add Y offset to X offset
;Result in HL
LD DE, (SAPATG) ;Actual start address of pattern
;generator table to DE