APPLICATIONSUTILITAIRES RSX/LIGNE DE COMMANDE ★ RSX LINE (c) R.CABANE ★

RSX Line|SOS Programmeurs)Applications Utilitaires Rsx/ligne De Commande

Programme de R.CABANE qui permet d'ajouter  ou remplacer une ou plusieurs  lignes à un prgramme BASIC en cours  d'éxécution  .  De plus , la RSX se loge  n'importe où en mémoire .

     Chargement et initialisation : LOAD"RSXLINE.BIN",adresse:CALL adresse

     Usage : A$="ligne de programme quelconque"+CHR$(0):nl=ligne a ajouter
             ;ùLINE,àa$,nl

     Limites d'usage : L'interpréteur basic  gère  en permanence des pointeurs  internes pour GOTO , GOSUB ,  FOR/NEXT  ,  etc  ... ùLINE,àa$,nl ne tient pas  compte de ces pointeurs (ce serait l'enfer  ...) . En conséquence , le numéro  de ligne à ajouter ou remplacer  doit  toujours  e^tre supérieur à celui où se trouve l'instruction ùLINE . Ex :

     20 A$="GOTO 10"+CHR$(0) 'OK        20 A$="GOTO 10" 'NE FONCTIONNE PAS
     30 ùLINE àa$,30                  ;  30 ùLINE àa$,10

     L'insertion / modification de ligne  ne  peut  non  plus figurer dans une
 boucle FOR/NEXT où WHILE/WEND , en  revanche  ,  cela  marche dans un IF THEN
 GOTO comme en témoigne l'exemple ci-dessous qui vous montre de plus , comment
 faire digérer des guillemets à une  chaîne  de caracteères , CHR$(&22) étant
 le code ASCII du guillemet . C'est bizarre mais ça marche ...
 

 

1 MODE 2:GOTO 10
 2 a$="'"+CHR$(0):i=10
 3 ùLINE ,àa$,i:i=i+10:IF i 4'
 10 MEMORY 39000:LOAD"rsxline.bin",39500:CALL 39500
 20 a$(0)="PRINT"+CHR$(&22)+"R.CABANE"+CHR$(&22)+CHR$(0)
 30 a$(1)="PRINT"+CHR$(&22)+"PRESENTE"+CHR$(&22)+CHR$(0)
 40 a$(2)="PRINT"+CHR$(&22)+"RSX-LINE"+CHR$(&22)+CHR$(0)
 50 I=0
 60 ùLINE,àA$(I),70       'Dans ce cas , FOR/NEXT & WHILE WEND , interdits
 80 I=I+1:IF I 90 GOTO 2


     Note : La démonstration  ne  figure  pas  au  menu  de SOS PROGRAMMEURS ,  copiez RSXLINE.BIN sur une autre disquette  et  tapez  ces 13 lignes de BASIC  sur la même disquette avent de faire 'RUN' .

     Pour les fans du Z80 ,  voici  le  code  source  de  la RSX rédigé sur un  assembleur CPM+ , les  lignes  notées  '***'  sont  à  supprimer dans un code  source autre que CPM+


 ; 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 numéros 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 numéros,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

★ ANNÉE: ???
★ CONFIG: ???
★ LANGAGE: ???
★ LICENCE: LISTING
★ AUTEUR: ROBERT CABANE

★ AMSTRAD CPC ★ DOWNLOAD ★

Type-in/Listing:
» RSXLINE    SOURCEDATE: 2018-08-24
DL: 12 fois
TYPE: text
SIZE: 3Ko

★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Applications » 60 Rsx Commands
» Applications » Buzzer
» Applications » Extra Fonts (CPC Computing)
» Applications » Rsx - Amsdoc Rom
» Applications » Variable Dump (Computing With the Amstrad)
» Applications » Digitalização de sons (Amstrad Magazine)

CPCrulez[Content Management System] v8.7-desktop/cache
Page créée en 086 millisecondes et consultée 783 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.