; Programme de R.CABANE qui permet d'ajouter  ou remplacer une ou plusieurs  lignes à un prgramme BASIC en cours  d'éxécution
 ;
 ; RSX relogeable
 ; permettant de charger une ligne
 ; de programme BASIC a partir d'une
 ; chaine.Syntaxe:
 ; —LINE,chaine$,numero
 ;
     ORG 09000H
     LIFT $                          ;***
 ROM:EQU 0B900H
 ;
 ; Adresses en RAM systeme
 ; DE contient l'adresse d'appel
 ;
 DEBUT:EX DE,HL
 ;
 ; Empecher un deuxieme appel
 ;
     LD (HL),0C9H
     PUSH HL
 ;
 ; Calculer l'adresse du nom du RSX
 ;
     LD DE,NOM-DEBUT
     ADD HL,DE
     PUSH HL
     POP BC
 ;
 ; BC contient cette adresse
 ; 5 octets plus loin est la table
 ;
     INC HL
     INC HL
     INC HL
     INC HL
     INC HL
 ;
 ; HL contient l'adresse de la table
 ;
     LD (HL),C
     INC HL
     LD (HL),B
     DEC HL
     PUSH HL
     POP BC
     POP HL
     INC HL
 ;
 ; Integrer l'extension
 ;
 JP 0BCD1H
 ;
 NOM:    DB'LIN','E'+128,0
 TABLE:  DS 2
 ;
 ROUTINE:PUSH AF ; Tester quel CPC
     PUSH DE
     CALL 0BBA2H
     LD A,E
     SUB 6FH         ; truc pour distinguer les CPC
     LD I,A          ; garde valeur pour tester
     POP DE          ; flag Z pour le 464
     POP AF
     CP 2            ; combien de params ?
     JR NZ,ERREUR
     LD A,I
 ;
 ; Assembler ligne BASIC
 ;
     LD HL,(0AE36H) ; 464
     JR Z,SUITE
     LD HL,(0AE1DH) ;ligne actuelle 6128
 ;
 SUITE:LD A,(HL)
     INC HL
     LD H,(HL)
     LD L,A          ;Num.ligne actuelle dans HL
 ;
 ; Brancher la ROM superieure
 ;
 CALL ROM
 ;
 ; Comparer numeros dans HL et DE
 ;
     LD A,H
     XOR D
     BIT 7,A
     LD A,H
     JR Z,MSIGNE
     CPL
     ADD A,A
 FINCOMP:SBC A,A
     JR NC,ERREUR
 ;
 ;Recuperer le descripteur chaine
 ;
 LD L,(IX+2)
 LD H,(IX+3)
 INC HL
 LD A,(HL)
 INC HL
 LD H,(HL)
 LD L,A      ;Adresse de la chaine en HL
 LD A,I      ; Z si 464, M si 6128, P si 664
 ;
 ; Assembler ligne BASIC
 ;
     JP Z,0E6D2H ; 464
     JP M,0E7ABH ; 6128
     JP   0E7B0H ; 664
 ;
 ;******** SOUS-PROGRAMMES **********
 ;
 ; Comparer HL et DE memes signes
 ;
 MSIGNE:CP D
     JR NZ,FINCOMP
 ;
 ; comparer poids faibles
 ;
     LD A,L    ; on fait A - E Carry si A < E
     SUB E
     JR NZ,FINCOMP
 ;
 ; sinon memes numeros,exclu
 ;
 ERREUR:LD A,I       ; fixe flag Z selon A
     LD A,5          ; Improper argument
     JP NZ,0CB55H    ; 664 et 6128
     LD E,A
     JP 0CA94H       ; 464
 FIN:
 END