ORG &9000

T_CARAC equ &7000
T_TABLE equ &7800

;
; Prendre les fontes des caracteres
;
        JP QON  ; scrolling active
        JP QOFF ; scrolling desactive

QON:    XOR A
        CALL &BBA5
        CALL &B906
        PUSH AF
        LD DE,T_CARAC
        LD BC,8*256
        LDIR
        POP AF
        CALL &B90C
;
NB      EQU 15
LI      EQU 110

; Calcul d'une vague

        LD HL, &C000+12
        LD B,LI
BO1:    CALL RBC26
        DJNZ BO1
        CALL VAGUE
        LD HL,NB-1*2+T_TABLE
        LD A, (HL)
        INC HL
        LD H, (HL)
        LD L,A
        LD (OFSET) ,HL
        LD HL,NOM       ; Le message au debut svp
        LD (OFNOM),HL
;
; On recconfigure les interuptions du CPC
;

D_INT:  DI
        LD HL, (&39)
        INC HL
        LD (QINT) ,HL
        LD (HL),&C3
        LD DE, INT
        INC HL
        LD (HL),E
        INC HL
        LD (HL),D
        INC HL
        LD (D_INT3+1) ,HL
        LD DE,&33
        ADD HL,DE
        LD (D_INT2+1),HL
        RET

;

VAGUE:  LD B,8
        LD IX,T_TABLE
VAGUE1: PUSH HL
        LD C,NB
VAGUE2: LD (IX+0),L
        LD (IX+1),H
        INC IX
        INC IX
        INC HL
        CALL VAGUE3
        DEC C
        JR NZ,VAGUE2
        POP HL
        CALL RBC26
        DJNZ VAGUE1
        RET
VAGUE3: BIT 3,L
        JP Z,RBC26
        JP #BC29

;

INT:    PUSH AF
        PUSH BC
        PUSH HL
        PUSH DE
        LD BC,#7F8D
        OUT (C),C
        CALL INTA
        POP DE
        POP HL
        POP BC
        POP AF
        EX AF,AF'
D_INT2: JP C,0
D_INT3: JP 0

;

INTA:   LD B,&F5
        IN A, (C)
        RRA
        JR C,INTE0
KL:     LD A, 7
        INC A
        LD (KL+1),A
        CP 4
        JR C,INTE1
        JR Z,INTE2
        RET
;
INTE0:  XOR A
        LD (KL+1) ,A
        LD HL,T_TABLE
        JR SPRG1
INTE1:  LD HL, (THL)

SPRG1:   LD B,2
SPRG1_1: LD C,NB-1
         LD E, (HL)
         INC HL
         LD D, (HL)
         INC HL
SPRG1_2: PUSH HL
         LD A, (HL)
         INC HL
         LD H, (HL)
         LD L,A
         LD A, (HL)
         LD (DE), A
         EX DE ,HL
         POP HL
         INC HL
         INC HL
         DEC C
         JR NZ,SPRG1_2
         DJNZ SPRG1_1
         LD (THL) ,HL
         RET

;

INTE2:
SPRG2:   ; Envoie du caractere

         LD HL, (OFNOM)
         LD A, (HL)
         OR A
         JR NZ,SPRG2_1
         LD HL ,NOM
         LD A, (HL)
SPRG2_1: LD C,A
         LD A, (FLAG)
         XOR &FF
         LD (FLAG) ,A
         CALL NZ,SPRG2_4
         LD DE, (FLAG1)
         LD HL, (OFSET)
         LD B,8
SPRG2_2: LD A, (DE)
         LD C,A
         LD A, (FLAG)
         OR A
         LD A,&0F
         JP Z,SPRG2_3
         LD A,&F0
SPRG2_3: AND C
         LD (HL) ,A
         INC DE
         CALL RBC26
         DJNZ SPRG2_2
         RET
;
SPRG2_4: INC HL

         LD (OFNOM) ,HL
         LD L,C
         LD H,0
         ADD HL ,HL
         ADD HL ,HL
         ADD HL ,HL
         LD DE,T_CARAC
         ADD HL ,DE
         LD (FLAG1) ,HL
         RET
;
QOFF:    DI
         LD HL, (QINT)
         LD (HL), &08
         INC HL
         LD (HL), #38
         INC HL
         LD (HL),#33
         RET
;
RBC26:
         LD A,H
         ADD A,#08
         LD H,A
         AND #38
         RET NZ
         PUSH DE
         LD DE,&C050
         ADD HL ,DE
         POP DE
         RET
;
;
FLAG    DEFB 0
FLAG1   DEFW 0

OFSET   DEFW 0
OFNOM   DEFW 0
THL     DEFW 0
QINT    DEFW 0
;
NOM     DB "BONJOUR, A TOI DEFM ,LISEZ 100%"
        DB 0