Pl3 MOUSECOO.S: Difference between revisions

From Atari Wiki
Jump to navigation Jump to search
No edit summary
 
No edit summary
 
(2 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
<pre>
 
<pre>
 
*** ILLUSTRATION DES OPERATIONS SUR LA RAM VIDEO ET L'ECRAN LOGIQUE ***
 
 
   
  +
*** Interrogation de la SOURIS ***
clr.l -(sp) ;super
 
move #$20,-(sp)
 
trap #1
 
addq.l #6,sp
 
move.l d0,ssp
 
 
* ECRIRE sur PHYS puis LOG et poser LOG sur PHYS *
 
 
move.l #ecran+256,d0 ;adresse LOG
 
and.l #$ffffff00,d0 ;divisible par 256
 
move.l d0,a0 ;a0=LOG
 
move.l $44e,a5 ;a5=PHYS
 
   
  +
*** DROITE=COORD, 2=QUITTER ***
 
  +
 
  +
*** On ecrit sur le PHYS ***
 
  +
SECTION TEXT
 
move.l #7999,d0 ;clear PHYS SCREEN
 
moveq.l #-1,d1
 
move.l a5,a6
 
clear_scr:
 
move.l d1,(a6)+
 
dbf d0,clear_scr
 
   
  +
TOUCHE MACRO
move #7,-(sp) ;TOUCHE
 
  +
move #7,-(sp)
 
trap #1
 
trap #1
 
addq.l #2,sp
 
addq.l #2,sp
  +
ENDM
 
 
*** On ecrit sur le LOG ***
 
 
 
  +
CCONOUT MACRO $\1
move.l #7999,d0 ;Write of LOG
 
  +
move.w \1,-(sp) ;\1=CaractŠre … afficher
moveq.l #0,d1
 
move.l a0,a6
+
move.w #2,-(sp)
  +
trap #1
cr:
 
  +
addq.l #4,sp
move.l d1,(a6)+
 
  +
ENDM
dbf d0,cr
 
   
move #7,-(sp) ;TOUCHE
+
move.l #0,-(sp)
  +
move #$20,-(sp)
 
trap #1
 
trap #1
addq.l #2,sp
+
addq.l #6,sp
 
 
  +
move.l d0,SSP
 
 
  +
cmpi #$0e96,$fc001e ;TOS blitter ?
*** On pose LOG sur PHYS ***
 
  +
bne NOBLIT
 
move.l a0,d5 ;a0= LOG
+
move.l #$2740,KDB
  +
jmp PRINCIPAL
lsr.l #8,d5 ;MMU --> ECHANGE
 
  +
move.b d5,$ff8203
 
lsr.l #8,d5
+
NOBLIT move.l #$26e0,KDB
move.b d5,$ff8201
 
   
  +
PRINCIPAL
move #7,-(sp) ;TOUCHE
 
  +
move.l KDB,a1
trap #1
 
  +
move.b 7(a1),d0 ;Gauche=%01
addq.l #2,sp
 
  +
;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.l ssp,-(sp) ;USER
+
move 2(a1),d0
  +
jsr BINAIRE
  +
  +
jmp PRINCIPAL
  +
  +
  +
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
 
 
  +
KDB ds.l 1
SECTION BSS
 
  +
SSP ds.l 1
   
  +
END
ecran ds.l 32000 ;PHYS SCREEN
 
ssp ds.l 1
 
log ds.l 1
 
   
  +
</pre>
END
 
 
</pre>
 
 
Back to [[ASM_Tutorial]]
 
Back to [[ASM_Tutorial]]
  +
[[Category : ASSEMBLER on ATARI ST 68000 Part 3]]

Latest revision as of 16:23, 12 October 2011


*** 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