DrawBox: ; Draw box routine by Mikel Blanchard. push de ; HL= upper (x,y) ld e,l ; DE= lower (x,y) call &Line pop de ; cashonly@aol.com push de ; http://members.xoom.com/CashOnly/Macross.html ld d,h call &Line ; This may not be the only way to draw pop de ; a box, but it is damn handy if you already push hl ; have FLINE in your program! ld l,e call &Line ; Copyright (C) 1998; Macross Software pop hl ld h,d call &Line ret Line: ; FLINE by Jimmy Mardell push bc ; #fncall FLINE can be used also. push de push hl ; The numbers = clock cycles push bc ld a,h cp d jr nc,DXpos ex de,hl DXpos: ld b,d ld c,e pop de push hl call FIND_PIXEL add hl,de ex (sp),hl ld e,c ld c,a ld a,h sub b ld b,a ld a,l sub e ld de,16 jr nc,DYpos neg ld de,-16 DYpos: push af sub b jr nc,DY_Greater add a,a neg ld (x_ai+1),a pop af add a,a ld (XDNeg+1),a sub b pop hl push af ld a,c or (hl) ld (hl),a pop af bit 7,a jr nz,XDNeg XNewRow: add hl,de ; 11 x_ai: sub 0 ; 7 push af ; 11 rrc c ; 8 jr nc,XNoWrap1 ; 7 / 12 \ inc hl ; 6 / 12.5 XNoWrap1: ld a,c ; 4 or (hl) ; 7 ld (hl),a ; 10 pop af ; 10 dec b ; 4 jr z,LineDone ; 7 jr nc,XNewRow ; 7 / 12 ==> 101 XDNeg: add a,0 ; 7 push af ; 11 rrc c ; 8 jr nc,XNoWrap2 ; 7 / 12 \ inc hl ; 6 / 12.5X NoWrap2: ld a,c ; 4 or (hl) ; 7 ld (hl),a ; 10 pop af ; 10 dec b ; 4 jr z,LineDone ; 7 jr c,XNewRow ; 7 / 12 \ jr XDNeg ; 12 / 15.5 ==> 96 ==> 98.5 DY_Greater: neg add a,a ld (YNoWrap+1),a ld a,b add a,a ld (YDNeg+1),a pop hl sub h ld b,h pop hl push af ld a,c or (hl) ld (hl),a pop af YRepeat: bit 7,a ; 8 jr nz,YDNeg ; 7 / 12 rrc c ; 8 jr nc,YNoWrap ; 7 / 12 \ inc hl ; 6 / 12.5 YNoWrap: add a,0 ; 7 jr YPlot ; 12 YDNeg: add a,0 ; 7 YPlot: ; ==> 40.75 add hl,de ; 11 push af ; 11 ld a,c ; 4 or (hl) ; 7 ld (hl),a ; 10 pop af ; 10 djnz YRepeat ; 13 ==> 106.75 LineDone: pop hl pop de pop bc ret