APPLICATIONSDIVERS ★ RSX LINE (c) R.CABANE ★

RSX Line (SOS Programmeurs)Applications Divers
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: 2012-08-27
DL: 381
TYPE: text
SiZE: 3Ko
NOTE:

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

Lien(s):
» Applications » RSX Block Save
» Applications » Routines du C.C.C : RSX Modeur (CPC Infos)
» Applications » RSX (Computing with the Amstrad)
» Applications » RSX Variables List
» Applications » RSX Swap (Amstrad Personal)
» Applications » Extension Rsx - Lire (Microstrad)
Je participe au site:
» Vous avez des infos personnel ?
» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.732-desktop/c
Page créée en 028 millisecondes et consultée 2138 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.