Pl3 MOUSECOO.S: Difference between revisions

From AtariForumWiki
Jump to navigation Jump to search
>Zorro 2
No edit summary
 
>Zorro 2
No edit summary
Line 1: Line 1:
<pre>
<pre>
*** ILLUSTRATION DES OPERATIONS SUR LA RAM VIDEO ET L'ECRAN LOGIQUE ***


clr.l -(sp) ;super
*** Interrogation de la SOURIS ***
 
*** DROITE=COORD, 2=QUITTER ***
 
 
SECTION TEXT
 
TOUCHE MACRO
move #7,-(sp)
trap #1
addq.l #2,sp
ENDM
CCONOUT    MACRO    $\1
          move.w    \1,-(sp)   ;\1=CaractÅ re … afficher
          move.w    #2,-(sp)
          trap      #1
          addq.l    #4,sp
ENDM
 
move.l #0,-(sp)
move #$20,-(sp)
move #$20,-(sp)
trap #1
trap #1
addq.l #6,sp
addq.l #6,sp
move.l d0,ssp
* ECRIRE sur PHYS puis LOG et poser LOG sur PHYS *
move.l d0,SSP
cmpi #$0e96,$fc001e ;TOS blitter ?
bne NOBLIT
move.l #$2740,KDB
jmp PRINCIPAL
move.l #ecran+256,d0 ;adresse LOG
NOBLIT move.l #$26e0,KDB
and.l #$ffffff00,d0 ;divisible par 256
move.l d0,a0 ;a0=LOG
move.l $44e,a5 ;a5=PHYS


PRINCIPAL
move.l KDB,a1
move.b 7(a1),d0 ;Gauche=%01
  ;Droite=%10  ,2=%11
cmpi.b #%11,d0 ;2 = quitter
*** On ecrit sur le PHYS ***
beq FIN
move.l #7999,d0 ;clear PHYS SCREEN
btst #1,d0 ;diff de %...0. = Bouton DROIT
moveq.l #-1,d1
beq PRINCIPAL
move.l a5,a6
clear_scr:
move.l d1,(a6)+
dbf d0,clear_scr
 
move #7,-(sp) ;TOUCHE
trap #1
addq.l #2,sp
 
 
*** On ecrit sur le LOG ***
move.l #7999,d0 ;Write of LOG
moveq.l #0,d1
move.l a0,a6
cr:
move.l d1,(a6)+
dbf d0,cr


move #7,-(sp) ;TOUCHE
CCONOUT  #27
trap #1
          CCONOUT  #'E'
addq.l #2,sp
         
move (a1),d0
jsr BINAIRE
move 2(a1),d0
jsr BINAIRE
*** On pose LOG sur PHYS ***
jmp PRINCIPAL
move.l a0,d5 ;a0= LOG
lsr.l #8,d5 ;MMU --> ECHANGE
move.b d5,$ff8203
lsr.l #8,d5
move.b d5,$ff8201
 
move #7,-(sp) ;TOUCHE
trap #1
addq.l #2,sp
move.l ssp,-(sp) ;USER
FIN move.l SSP,-(sp)
move #$20,-(sp)
move #$20,-(sp)
trap #1
trap #1
addq.l #6,sp
addq.l #6,sp
clr.l -(sp) ;PTERM
clr -(sp)
trap #1
trap #1
       
BINAIRE  movem.l  d0-d7/a0-a6,-(sp)
          move      d0,d1
          move      #31,d3
LOOK      move      #'0',d0
          lsl.l    #1,d1
          bcc      ZERO
          move      #'1',d0
ZERO      CCONOUT  d0
          dbf      d3,LOOK
          CCONOUT  #10
          CCONOUT  #13
          movem.l  (sp)+,d0-d7/a0-a6
          rts
SECTION BSS
SECTION    BSS
KDB ds.l 1
SSP ds.l 1


ecran ds.l 32000 ;PHYS SCREEN
END
ssp ds.l 1
log ds.l 1


END
</pre>
</pre>
Back to [[ASM_Tutorial]]
Back to [[ASM_Tutorial]]

Revision as of 11:28, 9 October 2006


*** Interrogation de la SOURIS ***

*** DROITE=COORD, 2=QUITTER ***


	SECTION TEXT

TOUCHE	MACRO	
	move	#7,-(sp)
	trap	#1
	addq.l	#2,sp
	ENDM
		
CCONOUT    MACRO     $\1
           move.w    \1,-(sp)   ;\1=CaractÅ re … afficher
           move.w    #2,-(sp)
           trap      #1
           addq.l    #4,sp
	ENDM

	move.l	#0,-(sp)
	move	#$20,-(sp)
	trap	#1
	addq.l	#6,sp
	
	move.l	d0,SSP
	
	cmpi	#$0e96,$fc001e	;TOS blitter ?
	bne	NOBLIT
	move.l	#$2740,KDB
	jmp	PRINCIPAL
	
NOBLIT	move.l	#$26e0,KDB

PRINCIPAL	
	move.l	KDB,a1
	move.b	7(a1),d0		;Gauche=%01
		   		;Droite=%10  ,2=%11
	
	cmpi.b	#%11,d0		;2 = quitter
	beq	FIN
				
	btst	#1,d0		;diff de %...0.  = Bouton DROIT
	beq	PRINCIPAL				

	CCONOUT   #27
           CCONOUT   #'E'
          
	move	(a1),d0
	jsr	BINAIRE
	
	move	2(a1),d0
	jsr	BINAIRE
	
	jmp	PRINCIPAL
	
	
FIN	move.l	SSP,-(sp)	
	move	#$20,-(sp)
	trap	#1
	addq.l	#6,sp
	
	clr	-(sp)
	trap	#1

         
BINAIRE   movem.l   d0-d7/a0-a6,-(sp)
          move      d0,d1
          move      #31,d3

LOOK      move      #'0',d0
          lsl.l     #1,d1

          bcc       ZERO
          move      #'1',d0
ZERO      CCONOUT   d0
          dbf       d3,LOOK
          CCONOUT   #10
          CCONOUT   #13
          movem.l   (sp)+,d0-d7/a0-a6
          rts

	
	SECTION	BSS
	
KDB	ds.l	1
SSP	ds.l	1

	END

Back to ASM_Tutorial