.db $bb,$6d .org $9d95 xor a di inc a out ($20),a ; z80 à 15Mhz ; réglages LCD... out ($10),a ; bascule en mode 8 bits ld a,6 ; décalera le curseur vers la gauche après chaque écriture out ($10),a ld a,$0c out ($2a),a ; LCD delay au minimum in a,($2e) and %10001111 out ($2e),a ; réduit la RAM Access Delay in a,(6) push af ld a,$82 ; instaure une RAM en $4000 ($82 ok sur ti84+/82A) out (6),a ld a,%11111111 ; réglages CLAVIER... out (1),a ; ré-initialise le clavier ld a,$fd ; défini le groupe de out (1),a ; touches (ayant la touche [ANNUL]) ZoneData: .equ $4000 ; à disposition=16384+1087(déborde sur banque d'après)=17471 octets maxi ld hl,ZoneData ld de,ZoneData+1 ld (hl),l ld bc,17408 ; =17408...ça passe :) ldir ld h,$40 ld de,$9340+756 ld c,12 ldir call GraphScreenVersZoneData Boucle_Principale: ld h,$80 ; hl= $8061 call ConversionDataVersLCDv2 call WorkingBuffDOWN ld h,$81 ; hl= $8161 call ConversionDataVersLCDv2 call WorkingBuffUP in a,(1) bit 6,a jp nz,Boucle_Principale pop af out (6),a xor a out ($20),a ; z80 à 6 Mhz ei ret ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; GraphScreenVersZoneData: ld de,$9340 ; GraphScreen ld ixl,63 ld h,$42 pdt63: ld l,57 ld c,12 pdt12: ld a,(de) inc de ld b,8 pdt8: rla jr nc,y_a_rien ld (hl),1 y_a_rien: inc hl djnz pdt8 dec c jr nz,pdt12 inc h dec ixl jr nz,pdt63 ret ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; WorkingBuffUP: ld h,$41 ;ld hl,ZoneData+256 ld de,$0001 ld ixl,65 fois65: ld bc,$3403 ; b=52 c=3 ld l,b ; ld l,52 ld a,(hl) fois52: inc l ;;; add a,(hl) inc hl ;;; add a,(hl) inc h add a,(hl) inc h add a,(hl) dec hl ;;; add a,(hl) dec l ;;; add a,(hl) dec h add a,(hl) inc l ;;; or (hl) dec h cp c ld a,(hl) ld (hl),d jr nz,pastroisA ld (hl),e pastroisA: inc hl ;;; add a,(hl) inc l ;;; add a,(hl) inc h add a,(hl) inc h add a,(hl) dec l ;;; add a,(hl) dec hl ;;; add a,(hl) dec h add a,(hl) inc hl ;;; or (hl) dec h cp c ld a,(hl) ld (hl),d jr nz,pastroisB ld (hl),e pastroisB: djnz fois52 inc h dec ixl jp nz,fois65 ret ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; WorkingBuffDOWN: ld h,$82 ;ld hl,ZoneData+66*256 ld de,$0001 ld ixl,65 f0is65: ld bc,$3403 ; b=52 c=3 ld l,b ; ld l,52 ld a,(hl) f0is52: inc l ;;; add a,(hl) inc hl ;;; add a,(hl) dec h add a,(hl) dec h add a,(hl) dec hl ;;; add a,(hl) dec l ;;; add a,(hl) inc h add a,(hl) inc l ;;; or (hl) inc h cp c ld a,(hl) ld (hl),d jr nz,pas3a ld (hl),e pas3a: inc hl ;;; add a,(hl) inc l ;;; add a,(hl) dec h add a,(hl) dec h add a,(hl) dec l ;;; add a,(hl) dec hl ;;; add a,(hl) inc h add a,(hl) inc hl ;;; or (hl) inc h cp c ld a,(hl) ld (hl),d jr nz,pas3b ld (hl),e pas3b: djnz f0is52 dec h dec ixl jp nz,f0is65 ret ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ConversionDataVersLCDv2: ; ZoneData+(2x256)+2+95+(62*256)=$8061;ZoneData+(3*256)+2+95+(62*256)=$8161 ld bc,$2b10 ; LCD command port out (c),b ; colonne tout à droite 12 (donc $2b) ld de,$be0c ; d=$be (rangée=63ème ligne) e=nb de paquets (12) SoixanteTrois: ld l,57+95 out (c),d ld b,e ; largeur=12 paquets de 8 octets Douze: ld a,(hl) ; à compresser dans 12 octets (8 octets→8 bits) rrca dec l or (hl) rrca dec hl ;;;;;;;;;;;;;;;;;; or (hl) rrca dec l or (hl) rrca dec l or (hl) rrca dec l or (hl) rrca dec l or (hl) rrca dec l or (hl) rrca out ($11),a ; on écrit ça directement en sortie (sans passer par un buffer) dec l djnz Douze dec h ; HL_initial-256 (car bientôt "ld l,$61" ) dec d jp m,SoixanteTrois ret