Pl3 EX ASS 2.S: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
<pre> |
<pre> |
||
+ | *** ILLUSTRATION DES OPERATIONS SUR LA RAM VIDEO ET L'ECRAN LOGIQUE *** |
||
− | *HEXER SPRITE DEMO, 12/88* |
||
− | anz equ 5 |
||
+ | move.l a7,a5 ;Initialise le TOS |
||
− | pea 0 |
||
+ | lea pile,a7 |
||
+ | move.l 4(a5),a5 |
||
+ | move.l $c(a5),d0 |
||
+ | add.l $14(a5),d0 |
||
+ | add.l $1c(a5),d0 |
||
+ | add.l #$100,d0 |
||
+ | move.l d0,-(sp) |
||
+ | move.l a5,-(sp) |
||
+ | move #0,-(sp) |
||
+ | move #$4a,-(sp) ;SETBLOCK |
||
+ | trap #1 |
||
+ | add.l #12,sp |
||
+ | |||
+ | |||
+ | clr.l -(sp) ;super |
||
move #$20,-(sp) |
move #$20,-(sp) |
||
trap #1 |
trap #1 |
||
Line 11: | Line 25: | ||
move.l d0,ssp |
move.l d0,ssp |
||
− | lea stack,a7 |
||
+ | * ECRIRE sur PHYS puis LOG et poser LOG sur PHYS * |
||
− | move.b $ff8260,rezsave |
||
− | move.b $ff820a,palsave |
||
− | movem.l $ff8240,d0-d7 |
||
− | movem.l d0-d7,palettesave |
||
− | move. |
+ | move.l #INTRO,-(sp) ;Texte sur PHYS |
+ | move.w #$09,-(sp) |
||
− | trap #14 |
||
+ | trap #1 |
||
+ | addq.l #6,sp |
||
+ | |||
+ | move #7,-(sp) ;TOUCHE |
||
+ | trap #1 |
||
addq.l #2,sp |
addq.l #2,sp |
||
− | move.l d0,oldram |
||
+ | move.l #ecran+256,d0 ;adresse LOG |
||
− | bsr vsync |
||
+ | and.l #$ffffff00,d0 ;divisible par 256 |
||
+ | move.l d0,a0 ;a0=LOG |
||
+ | move.l $44e,a5 ;a5=PHYS |
||
+ | |||
− | move.b #0,$ff8260 |
||
− | move.b #2,$ff820a |
||
+ | *** On ecrit sur le PHYS *** |
||
− | movem.l palette,d0-d7 |
||
− | movem.l d0-d7,$ff8240 |
||
− | move.l #bildschirme+256,d0 |
||
− | and.l #$ffffff00,d0 |
||
− | |||
− | move.l d0,vidram |
||
− | add.l #32000,d0 |
||
− | move.l d0,logram |
||
− | bsr setbild |
||
− | |||
− | *effacer l'ecran *42 |
||
− | |||
− | moveq #0,d1 |
||
− | move.l vidram,a0 |
||
− | move #15999,d0 |
||
− | |||
− | clloop move.l d1,(a0)+ |
||
− | dbra d0,clloop |
||
− | |||
− | *cylindres *49 |
||
− | |||
− | gesamte_zeile move.l vidram,a0 |
||
− | move.l logram,a1 |
||
− | add.l #160*50,a0 |
||
− | add.l #160*50,a1 |
||
− | moveq #99,d7 |
||
− | move.l #$8787ffff,d0 |
||
− | move.l #$55556666,d1 |
||
− | bildinit_noch_eine_zeile moveq #19,d6 |
||
− | bildinit_gesamte_zeile move.l d1,(a0)+ |
||
− | move.l d0,(a0)+ |
||
− | move.l d1,(a1)+ |
||
− | move.l d0,(a1)+ |
||
− | dbra d6,bildinit_gesamte_zeile |
||
− | swap d0 |
||
− | rol.w #2,d0 |
||
− | swap d0 ;d1 ?????? |
||
− | rol.l #2,d1 |
||
− | dbra d7,bildinit_noch_eine_zeile |
||
− | |||
− | ******************************** 73 |
||
+ | |||
− | main: |
||
+ | move.l #7999,d0 ;Write of PHYS |
||
+ | moveq.l #-1,d1 |
||
+ | move.l a5,a6 |
||
+ | cr: |
||
+ | move.l d1,(a6)+ |
||
+ | dbf d0,cr |
||
+ | |||
− | lea sppuffer,a2 |
||
+ | move.l #TEXTE,-(sp) ;Texte sur PHYS |
||
− | lea daten,a0 |
||
+ | move.w #$09,-(sp) |
||
− | lea masken,a1 |
||
− | + | trap #1 |
|
+ | addq.l #6,sp |
||
+ | move #7,-(sp) ;TOUCHE |
||
− | spinitloop: |
||
+ | trap #1 |
||
+ | addq.l #2,sp |
||
+ | |||
− | movem.l d7/a0-a2,-(sp) |
||
+ | *** On ecrit sur le LOG *** |
||
− | bsr preshift |
||
+ | |||
− | movem.l (sp)+,d7/a0-a2 |
||
+ | |||
− | add.l #6144,a2 |
||
+ | |||
− | add.l #128,a0 |
||
+ | move.l #7999,d0 ;Write of LOG |
||
− | add.l #32,a1 |
||
+ | moveq.l #-1,d1 |
||
− | dbra d7,spinitloop |
||
+ | move.l a0,a6 |
||
+ | acr: |
||
+ | move.l d1,(a6)+ |
||
+ | dbf d0,acr |
||
+ | move.l a0,d5 ;a0= LOG |
||
− | *99 |
||
+ | lsr.l #8,d5 ;MMU --> PHYS devient LOG |
||
+ | move.b d5,$ff8203 ;on travaille sur LOG |
||
+ | lsr.l #8,d5 ;(On change le PHYS sous LOG) |
||
+ | move.b d5,$ff8201 ;¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹ |
||
− | lea savepuffer,a0 |
||
− | move #anz-1,d0 |
||
− | spcloop: |
||
− | clr.l (a0) |
||
− | add.l #262,a0 |
||
− | clr.l (a0) |
||
− | add.l #262,a0 |
||
− | dbra d0,spcloop |
||
− | move # |
+ | move #7,-(sp) ;TOUCHE |
+ | trap #1 |
||
− | lea x,a3 |
||
− | lea y,a4 |
||
− | lea xg,a5 |
||
− | lea yg,a6 |
||
− | kinitloop move #17,-(sp) |
||
− | trap #14 |
||
addq.l #2,sp |
addq.l #2,sp |
||
− | moveq #0,d1 |
||
− | move.w d0,d1 |
||
− | **** page 103 |
||
− | ************* |
||
− | divu #336,d1 |
||
− | swap d1 |
||
− | move.w d1,(a3)+ |
||
− | move.w #17,-(sp) |
||
− | trap #14 |
||
− | addq.l #2,sp |
||
− | moveq #0,d1 |
||
− | move.w d0,d1 |
||
− | divu #216,d1 |
||
− | swap d1 |
||
− | move.w d1,(a4)+ |
||
− | move #17,-(sp) |
||
− | trap #14 |
||
− | addq.l #2,sp |
||
− | move d0,d1 |
||
− | lsr #1,d1 |
||
− | and #1,d0 |
||
− | and #1,d1 |
||
− | tst d0 |
||
− | bne xgi1 |
||
− | move #-1,d0 |
||
− | xgi1: |
||
− | tst d1 |
||
− | bne ygi1 |
||
− | move #-1,d1 |
||
− | ygi1: |
||
− | move d0,(a5)+ |
||
− | move d1,(a6)+ |
||
− | dbra d4,kinitloop |
||
+ | *** On pose LOG sur PHYS *** |
||
− | testloop: |
||
+ | |||
+ | move.l a5,d5 ;a5= PHYS |
||
+ | lsr.l #8,d5 ;MMU --> LOG devient PHYS |
||
+ | move.b d5,$ff8203 ;on d‚pose le LOG sur PHYS |
||
+ | lsr.l #8,d5 ;(le PHYS chang‚ revient) |
||
+ | move.b d5,$ff8201 ;¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹ |
||
+ | move #7,-(sp) ;TOUCHE |
||
− | bsr vsync |
||
− | lea anz*262*2+savepuffer,a6 |
||
− | move #anz-1,d5 |
||
− | spundrawloop: |
||
− | sub.l #524,a6 |
||
− | move.l a6,a0 |
||
− | bsr spriteundraw |
||
− | dbra d5,spundrawloop |
||
− | |||
− | *173 |
||
− | |||
− | lea savepuffer,a3 |
||
− | lea x,a5 |
||
− | lea y,a6 |
||
− | move #anz-1,d7 |
||
− | stdrawloop: |
||
− | move (a5)+,d0 |
||
− | move (a6)+,d1 *autre cote*********** |
||
− | moveq #0,d2 |
||
− | move d7,-(sp) |
||
− | |||
− | move.l a3,-(sp) |
||
− | bsr sprite |
||
− | |||
− | move.l (sp)+,a3 |
||
− | move (sp)+,d7 |
||
− | add.l #524,a3 |
||
− | dbra d7,stdrawloop |
||
− | |||
− | lea x,a2 |
||
− | lea y,a3 |
||
− | lea xg,a4 |
||
− | lea yg,a5 |
||
− | move #anz-1,d7 |
||
− | kcalcloop: |
||
− | move (a2),d0 |
||
− | move (a3),d1 |
||
− | add (a4),d0 |
||
− | |||
− | bpl xok1 |
||
− | neg.w (a4) |
||
− | addq.w #2,d0 |
||
− | xok1: |
||
− | add (a5),d1 |
||
− | bpl yok1 |
||
− | neg.w (a5) |
||
− | addq.w #2,d1 |
||
− | yok1: |
||
− | cmp #336,d0 |
||
− | bcs xok2 |
||
− | neg.w (a4) |
||
− | subq #2,d0 |
||
− | xok2: |
||
− | cmp #216,d1 |
||
− | bcs yok2 |
||
− | neg.w (a5) |
||
− | subq #2,d1 |
||
− | yok2: |
||
− | move d0,(a2)+ |
||
− | move d1,(a3)+ |
||
− | addq.l #2,a4 |
||
− | addq.l #2,a5 |
||
− | dbra d7,kcalcloop |
||
− | |||
− | bsr bildchange |
||
− | not saveindex |
||
− | |||
− | move #$b,-(sp) *page 104*********** |
||
trap #1 |
trap #1 |
||
addq.l #2,sp |
addq.l #2,sp |
||
− | tst d0 |
||
− | beq testloop |
||
− | move #7,-(sp) |
||
− | trap #1 |
||
− | addq.l #2,sp |
||
+ | move.l ssp,-(sp) ;USER |
||
− | bra exit |
||
− | |||
− | ;*************************253 |
||
− | |||
− | exit: |
||
− | bsr vsync |
||
− | move.b palsave,$ff820a |
||
− | move.b rezsave,$ff8260 |
||
− | movem.l palettesave,d0-d7 |
||
− | movem.l d0-d7,$ff8240 |
||
− | move.l oldram,d0 |
||
− | bsr setbild |
||
− | |||
− | move.l ssp,-(sp) |
||
move #$20,-(sp) |
move #$20,-(sp) |
||
trap #1 |
trap #1 |
||
addq.l #6,sp |
addq.l #6,sp |
||
+ | |||
− | |||
− | clr. |
+ | clr.w -(sp) ;PTERM |
trap #1 |
trap #1 |
||
− | setbild: |
||
− | lsr.l #8,d0 |
||
− | move.b d0,$ff8203 |
||
− | lsr #8,d0 |
||
− | move.b d0,$ff8201 |
||
− | rts |
||
+ | SECTION DATA |
||
− | bildchange: |
||
− | |||
− | move.l logram,d0 |
||
− | move.l vidram,logram |
||
− | move.l d0,vidram |
||
− | bra setbild |
||
+ | TEXTE DC.B 27,'Y',32,32,' TEXTE ‚crit sur l',39,'‚cran LOGIQUE et pos‚ sur',10,13 |
||
− | vsync: |
||
+ | DC.B ' l',39,'‚cran PHYSIQUE ... blablabla :',10,13 |
||
− | move #37,-(sp) |
||
− | trap #14 |
||
− | addq.l #2,sp |
||
− | rts |
||
+ | REPT 22 |
||
− | ************291 |
||
+ | DC.B 'textetextetextetextetextetextetextetextetexte',10,13 |
||
+ | ENDR |
||
+ | DC.B 0 |
||
− | preshift: |
||
− | move #15,d7 |
||
− | spinitloop0: |
||
− | moveq #0,d0 |
||
− | move.w (a1),(a2)+ |
||
− | move.w (a1)+,(a2)+ |
||
− | move.l d0,(a2)+ |
||
− | move.l (a0)+,(a2)+ |
||
− | move.l (a0)+,(a2)+ |
||
− | move.l d0,(a2)+ |
||
− | move.l d0,(a2)+ |
||
− | dbra d7,spinitloop0 |
||
− | |||
− | move #14,d7 |
||
− | spinitloop1: |
||
− | lea -384(a2),a3 |
||
− | move #15,d6 |
||
− | spinitloop2: |
||
− | move.w (a3),d0 |
||
− | swap d0 |
||
− | move.w 4(a3),d0 |
||
− | lsr.l #1,d0 *******a cote |
||
− | not.l (a3)+ |
||
− | not.l (a3)+ |
||
− | move.w d0,4(a2) |
||
− | move.w d0,6(a2) |
||
− | swap d0 |
||
− | move.w d0,(a2) |
||
− | move.w d0,2(a2) |
||
− | addq.l #8,a2 |
||
− | |||
− | move.w (a3),d0 |
||
− | swap d0 |
||
− | move.w 8(a3),d0 |
||
− | lsr.l #1,d0 |
||
− | move.w d0,8(a2) |
||
− | swap d0 |
||
− | move.w d0,(a2) |
||
− | addq.l #2,a2 ***335 |
||
− | addq.l #2,a3 |
||
− | move.w (a3),d0 |
||
− | swap d0 |
||
− | move.w 8(a3),d0 |
||
− | lsr.l #1,d0 |
||
− | move.w d0,8(a2) |
||
− | swap d0 |
||
− | move.w d0,(a2) |
||
− | addq.l #2,a2 |
||
− | addq.l #2,a3 |
||
− | move.w (a3),d0 |
||
− | swap d0 |
||
− | move.w 8(a3),d0 |
||
− | lsr.l #1,d0 |
||
− | move.w d0,8(a2) |
||
− | swap d0 |
||
− | move.w d0,(a2) |
||
− | addq.l #2,a2 |
||
− | addq.l #2,a3 |
||
− | move.w (a3),d0 |
||
− | swap d0 **356 |
||
− | move.w 8(a3),d0 |
||
− | lsr.l #1,d0 |
||
− | move.w d0,8(a2) |
||
− | swap d0 |
||
− | move.w d0,(a2) |
||
− | add.l #10,a2 |
||
− | add.l #10,a3 |
||
− | dbra d6,spinitloop2 |
||
− | dbra d7,spinitloop1 |
||
− | lea -384(a2),a3 |
||
− | move #15,d0 |
||
− | |||
− | nochinvertloop: |
||
− | not.l (a3) |
||
− | not.l 4(a3) |
||
− | add.l #24,a3 |
||
− | dbra d0,nochinvertloop |
||
− | rts |
||
− | |||
− | *************** 376 |
||
− | |||
− | sprite: |
||
− | tst saveindex |
||
− | bpl savep1 |
||
− | add.l #262,a3 |
||
− | savep1: |
||
− | addq #1,d0 |
||
− | move d0,d4 |
||
− | move d1,d5 |
||
− | lea sppuffer,a0 |
||
− | move d0,d3 |
||
− | and #15,d3 |
||
− | mulu #384,d3 |
||
− | mulu #6144,d2 |
||
− | add.l d2,d3 |
||
− | add.l d3,a0 |
||
− | |||
− | *******page 105 |
||
− | |||
− | and #$fff0,d0 |
||
− | lsr #1,d0 |
||
− | mulu #160,d1 |
||
− | add d0,d1 |
||
− | sub #2400+8,d1 |
||
− | |||
− | move.l logram,a1 |
||
− | add.w d1,a1 |
||
− | |||
− | move #15,d7 |
||
− | |||
− | move d5,d6 |
||
− | sub #15,d6 |
||
− | bpl obenclipok |
||
− | add d6,d7 |
||
− | bmi spabgang |
||
− | neg.w d6 |
||
− | move d6,d0 |
||
− | mulu #24,d6 |
||
− | |||
− | add.l d6,a0 |
||
− | mulu #160,d0 |
||
− | add.l d0,a1 |
||
− | |||
− | obenclipok: |
||
− | move #199,d6 |
||
− | sub d5,d6 |
||
− | bpl xclip |
||
− | add d6,d7 |
||
− | bmi spabgang |
||
− | |||
− | xclip: |
||
− | cmp #16,d4 |
||
− | bcs splinksclip |
||
− | cmp #320,d4 |
||
− | bcc sprechtsclip |
||
− | |||
− | move.l #144,d6 *437 |
||
− | |||
− | move.l a1,(a3)+ |
||
− | move.w d7,(a3)+ |
||
− | |||
− | spritescanloop: |
||
− | move.l (a1),(a3)+ |
||
− | move.l 4(a1),(a3)+ |
||
− | move.l 8(a1),(a3)+ |
||
− | move.l 12(a1),(a3)+ |
||
− | movem.l (a0)+,d0-d5 |
||
− | |||
− | and.l d0,(a1) |
||
− | |||
− | and.l d0,4(a1) |
||
− | and.l d1,8(a1) |
||
− | and.l d1,12(a1) |
||
− | |||
− | or.l d2,(a1)+ |
||
− | or.l d3,(a1)+ |
||
− | |||
− | or.l d4,(a1)+ |
||
− | or.l d5,(a1)+ |
||
− | |||
− | add.l d6,a1 |
||
− | dbra d7,spritescanloop |
||
− | rts |
||
− | |||
− | spabgang: |
||
− | clr.l (a3)+ |
||
− | clr.l (a3)+ |
||
− | rts |
||
− | |||
− | splinksclip: |
||
− | move.l #152,d6 |
||
− | addq.l #8,a1 |
||
− | |||
− | move.l a1,(a3)+ |
||
− | move.w d7,(a3)+ |
||
− | bset #7,-2(a3) |
||
− | |||
− | spritescanloop1: |
||
− | move.l (a1),(a3)+ |
||
− | move.l 4(a1),(a3)+ |
||
− | movem.l (a0)+,d0-d5 |
||
− | and.l d1,(a1) |
||
− | and.l d1,4(a1) |
||
− | or.l d4,(a1)+ |
||
− | or.l d5,(a1)+ |
||
− | add.l d6,a1 |
||
− | dbra d7,spritescanloop1 |
||
− | rts |
||
− | |||
− | *****cote suivant |
||
+ | INTRO DC.B 27,'E','Compare l',39,'affichage normal avec celui' |
||
− | sprechtsclip: |
||
+ | DC.B ' LOG sur PHYS (L-P, 1/89)',0 |
||
− | cmp #336,d4 |
||
− | bcc spabgang |
||
− | move.l #152,d6 |
||
− | move.l a1,(a3)+ |
||
− | move.w d7,(a3)+ |
||
− | bset #7,-2(a3) |
||
− | |||
− | spritescanloopr: |
||
− | move.l (a1),(a3)+ |
||
− | move.l 4(a1),(a3)+ |
||
− | movem.l (a0)+,d0-d5 |
||
− | and.l d0,(a1) |
||
− | and.l d0,4(a1) |
||
− | or.l d2,(a1)+ |
||
− | or.l d3,(a1)+ |
||
− | add.l d6,a1 |
||
− | dbra d7,spritescanloopr |
||
− | rts |
||
− | |||
− | ***** 518 |
||
− | |||
− | spriteundraw: |
||
− | tst saveindex |
||
− | bpl savep1und |
||
− | add.l #262,a0 |
||
− | savep1und: |
||
− | tst.l (a0) |
||
− | beq noundraw |
||
− | move.l (a0),a1 |
||
− | clr.l (a0)+ |
||
− | move.w (a0)+,d7 |
||
− | bmi halbundraw |
||
− | |||
− | move.l #160,d6 |
||
− | undrawloop: |
||
− | movem.l (a0)+,d0-d3 |
||
− | movem.l d0-d3,(a1) |
||
− | add.l d6,a1 |
||
− | dbra d7,undrawloop |
||
− | noundraw: |
||
− | rts |
||
− | |||
− | halbundraw |
||
− | and #255,d7 |
||
− | move.l #152,d6 |
||
− | halbundrawloop: |
||
− | move.l (a0)+,(a1)+ |
||
− | move.l (a0)+,(a1)+ |
||
− | add.l d6,a1 |
||
− | dbra d7,halbundrawloop |
||
− | rts |
||
− | |||
− | palette dc.w $0,$700,$730,$750,$770,$470,$70,$75 |
||
− | dc.w $77,$111,$222,$333,$444,$555,$666,$777 |
||
− | |||
− | daten: |
||
− | |||
− | dc.w $03C0,$07E0,$0000,$07E0,$0810,$1818,$07E0,$1FF8 |
||
− | dc.w $0000,$2004,$1FF8,$3FFC,$1310,$4C02,$3FFC,$7FFE |
||
− | dc.w $4F12,$5C02,$3FFC,$7FFE,$0804,$9C09,$7FFE,$FFFF |
||
− | dc.w $9411,$8805,$7FFE,$FFFF,$982B,$8005,$7FFE,$FFFF |
||
− | dc.w $800B,$8005,$7FFE,$FFFF,$A155,$8009,$7FFE,$FFFF |
||
− | dc.w $1994,$8009,$7FFE,$FFFF,$426A,$4012,$3FFC,$7FFE |
||
− | dc.w $09D0,$4422,$3FFC,$7FFE,$0420,$23C4,$1FF8,$3FFC |
||
− | dc.w $09D0,$1818,$07E0,$1FF8,$03C0,$07E0,$0000,$07E0 |
||
− | |||
− | ***** page 106 |
||
− | |||
− | masken: |
||
− | |||
− | |||
− | dc.w $07E0,$1FF8,$3FFC,$7FFE,$7FFE,$FFFF,$FFFF,$FFFF |
||
− | dc.w $FFFF,$FFFF,$FFFF,$7FFE,$7FFE,$3FFC,$1FF8,$07E0 |
||
− | |||
− | section bss |
||
− | |||
− | ssp ds.l 1 |
||
− | vidram ds.l 1 |
||
− | logram ds.l 1 |
||
− | oldram ds.l 1 |
||
− | |||
− | rezsave ds.b 1 |
||
− | palsave ds.b 1 |
||
− | palettesave ds.w 16 |
||
+ | SECTION BSS |
||
+ | ds.b 500 ;USP |
||
− | x ds.w anz |
||
+ | pile ds.b 1 |
||
+ | ecran ds.b 32256 ;LOG SCREEN (1*32000+256) |
||
− | |||
− | y ds.w anz |
||
− | + | ssp ds.l 1 |
|
− | |||
− | yg ds.w anz |
||
− | |||
− | |||
− | |||
− | saveindex ds.w 1 |
||
− | |||
− | ds.l 200 |
||
− | |||
− | stack ds.l 4 |
||
− | |||
− | bildschirme ds.b 64256 |
||
− | |||
− | |||
− | |||
− | savepuffer ds.b 262*anz*2 |
||
− | |||
− | |||
− | |||
− | sppuffer: |
||
END |
END |
||
+ | </pre> |
||
− | |||
− | </pre> |
||
Back to [[ASM_Tutorial]] |
Back to [[ASM_Tutorial]] |
Revision as of 16:29, 9 October 2006
*** ILLUSTRATION DES OPERATIONS SUR LA RAM VIDEO ET L'ECRAN LOGIQUE *** move.l a7,a5 ;Initialise le TOS lea pile,a7 move.l 4(a5),a5 move.l $c(a5),d0 add.l $14(a5),d0 add.l $1c(a5),d0 add.l #$100,d0 move.l d0,-(sp) move.l a5,-(sp) move #0,-(sp) move #$4a,-(sp) ;SETBLOCK trap #1 add.l #12,sp 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 #INTRO,-(sp) ;Texte sur PHYS move.w #$09,-(sp) trap #1 addq.l #6,sp move #7,-(sp) ;TOUCHE trap #1 addq.l #2,sp 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 *** On ecrit sur le PHYS *** move.l #7999,d0 ;Write of PHYS moveq.l #-1,d1 move.l a5,a6 cr: move.l d1,(a6)+ dbf d0,cr move.l #TEXTE,-(sp) ;Texte sur PHYS move.w #$09,-(sp) trap #1 addq.l #6,sp move #7,-(sp) ;TOUCHE trap #1 addq.l #2,sp *** On ecrit sur le LOG *** move.l #7999,d0 ;Write of LOG moveq.l #-1,d1 move.l a0,a6 acr: move.l d1,(a6)+ dbf d0,acr move.l a0,d5 ;a0= LOG lsr.l #8,d5 ;MMU --> PHYS devient LOG move.b d5,$ff8203 ;on travaille sur LOG lsr.l #8,d5 ;(On change le PHYS sous LOG) move.b d5,$ff8201 ;¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹ move #7,-(sp) ;TOUCHE trap #1 addq.l #2,sp *** On pose LOG sur PHYS *** move.l a5,d5 ;a5= PHYS lsr.l #8,d5 ;MMU --> LOG devient PHYS move.b d5,$ff8203 ;on d‚pose le LOG sur PHYS lsr.l #8,d5 ;(le PHYS chang‚ revient) move.b d5,$ff8201 ;¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹¹ move #7,-(sp) ;TOUCHE trap #1 addq.l #2,sp move.l ssp,-(sp) ;USER move #$20,-(sp) trap #1 addq.l #6,sp clr.w -(sp) ;PTERM trap #1 SECTION DATA TEXTE DC.B 27,'Y',32,32,' TEXTE ‚crit sur l',39,'‚cran LOGIQUE et pos‚ sur',10,13 DC.B ' l',39,'‚cran PHYSIQUE ... blablabla :',10,13 REPT 22 DC.B 'textetextetextetextetextetextetextetextetexte',10,13 ENDR DC.B 0 INTRO DC.B 27,'E','Compare l',39,'affichage normal avec celui' DC.B ' LOG sur PHYS (L-P, 1/89)',0 SECTION BSS ds.b 500 ;USP pile ds.b 1 ecran ds.b 32256 ;LOG SCREEN (1*32000+256) ssp ds.l 1 END
Back to ASM_Tutorial