Org &4000 ; ld a,2 call &bc0e ; Equivalent du MODE 2 du Basic (A contient le mode) ; Debut call &bd19 ld hl,(oldpos) ; HL prend les valeurs du 2nd compteur call &bb75 ; = LOCATE H,L (en Basic) ld a," " call &bb5a ; Affichage d'un espace (et donc effacement du O ancien) ; ld hl,(posit) ; HL prend les valeurs du 1er compteur ld (oldpos),hl call &bb75 ; LOCATE H,L ld a,"O" call &bb5a ; Affichage d'un banal "O" ; Mise @ jour du compteur en Y ld a,(posit) ; A contient la position du curseur en Y Mod1 inc a Mod2 cp 26 Mod3 call z,decy ld (posit),a ; Mise @ jour du compteur en X ld a,(posit+1) ; A contient la position du curseur en X Mod4 inc a Mod5 cp 81 ; (il y a 80 colonnes en mode 2) Mod6 call z,decx ld (posit+1),a ; Test clavier xor a call &bb1b cp 32 jp nz,debut ret ; ; Compteurs ; Posit dw &0101 OldPos dw &0101 ; ; Sous-programmes d'automodification ; ; En ordonn{e DecY ld a,&3d ; &3d=DEC A (Voir Quasar CPC 5) ld (mod1),a ; On "poke" DEC A @ la place du INC A xor a ; A contient 0 ld (mod2+1),a ; On place 0 @ la place du 26 pour avoir CP 0 ld hl,incy ; HL contient l'adresse de la routine appel{e IncY ld (mod3+1),hl ; On met cette adresse apr}s le CALL Z ld a,24 ret IncY ld a,&3c ; &3C=INC A (Voir Quasar CPC 5) ld (mod1),a ; On met un INC A @ la place du DEC A ld a,26 ; A contient 26 ld (mod2+1),a ; On place 26 @ la place du 0 pour avoir CP 26 ld hl,decy ; HL contient l'adresse de la routine appel{e DecY ld (mod3+1),hl ; On met cette adresse apr}s le CALL Z ld a,2 ret ; En abscisse DecX ld a,&3d ; &3d=DEC A (Voir Quasar CPC 5) ld (mod4),a ; On "poke" DEC A @ la place du INC A xor a ; A contient 0 ld (mod5+1),a ; On place 0 @ la place du 01 pour avoir CP 0 ld hl,incx ; HL contient l'adresse de la routine appel{e IncX ld (mod6+1),hl ; On met cette adresse apr}s le CALL Z ld a,79 ret IncX ld a,&3c ; &3c=INC A (Voir Quasar CPC 5) ld (mod4),a ; On met un INC A @ la place du DEC A ld a,81 ; A contient 81 ld (mod5+1),a ; On place 81 @ la place du 0 pour avoir CP 81 ld hl,decx ; HL contient l'adresse de la routine appel{e DecX ld (mod6+1),hl ; On met cette adresse apr}s le CALL Z ld a,2 ret call &bd19 ld hl,(oldpos) ;