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: 202
TYPE: text
SiZE: 3Ko
NOTE:

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

Lien(s):
» Applications » Rsx - Alpha Rom
» Applications » Verify (Popular Computing Weekly)
» Applications » RSX Textdump
» Applications » RSX PSYMBOL (CPC Magazin)
» Applications » RSX Grafikerweiterung (Schneider Magazin)
» Applications » RSX - Amsdoc ROM
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.7-desktop/c
Page créée en 850 millisecondes et consultée 1675 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.