; hline last modifs: 28/5/93 x1: equr d5 x2: equr d6 y: equr d7 param1: equr d4 param2: equr d3 b: equr d7 c: equr d6 vididx: equr d5 opt a+,o+,p+,o1+,o1+ move.l 4(sp),a0 ; adresse de base de vid$ ble.s errexit ; adr incorrecte ( <= 0 ) clr.l x1 ; on efface par pure pr‚caution clr.l x2 clr.l y clr.l param1 clr.l param2 move.w 8(sp),x1 ; coords x1,x2,y : 0..79 0..74 blt.s errexit ; coord incorrecte ( < 0 ) move.w 10(sp),x2 ble.s errexit ; coord incorrecte ( <= 0 ) move.w 12(sp),y blt.s errexit ; coord incorrecte ( < 0 ) move.w x2,d0 sub.w x1,d0 subi.w #1,d0 ; convention dbra blt.s errexit ; coord incorrecte ( < 0 ) do_point: move.w x1,param1 addi.w #1,x1 move.w y,param2 movem.l d0/d1/x1/x2/y,-(sp) ;*** drawme: ; param1/2 : x et y (0..79-0..74) , a0: adr ; pas touche: a0 move.w param1,b divu.w #2,B ; b=param1\2 move.w param2,c divu.w #3,c ; c=param2\3 move.w c,vididx mulu.w #40,vididx add.w b,vididx ; vididx=c*40+b swap.w b ; reste swap.w c ; reste mulu.w #2,c add.w c,b ; b=mod(mx,2)+(mod(my,2)*2) bset.b b,0(a0,vididx.w) ; bset b,varptr(vid$)+vididx ;*** movem.l (sp)+,d0/d1/x1/x2/y dbra d0,do_point clr.l d0 ; ok rts errexit: moveq.l #-1,d0 ; erreur rts ;VID: ;ds.b 1000