ZX81 : RALP, Langage machine en REM
Introduction
Programme pour ZX81.
Langage Machine dans une REM.
Recherche du No de ligne et mĂ©morisation de lâadresse pour exĂ©cution via USR adr.\
Lire lâarticle de 2 pages du Micro SystĂšmes (septembre 1983) PDF et OCR, dans un nouvel onglet.
Les Listings
Reprise des listings de lâarticle.
Fig. 1
10 REM "DEMONSTRRTION"
20 PRINT "FONCTIONNEMENT RALP"
25 LET IP=0
30 LET AU=9952
40 LET N=85
50 GOSUB AU
70 PRINT
80 PRINT "RESULTAT 1ER UEER"
85 REM 1234567
90 FOR I=1 TO 50
95 NEXT I
100 LET N=210
110 GOSUB AU
120 PRINT
130 PRINT "RESULTRT 2EME USER"
140 GOTO 300
210 REM 1234567
220 REM 1234567
300 LET N=220
310 GOSUB AU
320 PRINT
330 PRINT "RESULTRT 3EME USER"
340 STOP
Fig. 3
9950 REM "RALP " RECH.ADR.N LINE PG.
9952 LET RM=-13+PEEK 15396+255*PEEK 16397
9954 LET HM=INT(RM/255)
9956 LET LM=RM-256*HM
9962 POKE RM+9 LM
9964 POKE RM+10 HM
9966 POKE 15394,N-256*INT (N,256)
9968 POKE 16395,INT (N*256)
9970 RAND USR RM+2
9972 LET N=5+PEEK RM+256*PEEK (RM+1)
9974 IF IP=1 THEN GOTO 9980
9976 RAND USR N
9978 RETURN
9980 LET P=-2+PEEK (N-3)+256*PEEK (N-2)
9982 FOR I=1 TO P
9984 PRINT I;": "
9986 INPUT J$
9988 IF J$="" THEN GOTO 9994
9990 IF J$<"A" THEN GOTO 9993
9991 LET I=I-1
9992 GOTO 9984
9993 POKE N-1+I,UAL J$
9994 PRINT PEEK (N-1+I),
9995 NEXT I
9996 LET IP=0
9997 PRINT
9998 LIST PEEK 16394+256*PEEK 16395
9999 REM E_RNDLN **_6 TAN
La ligne 9999 nâest pas conforme au listing, car contient les octets du code machine.
Fig. 7
80 PRINT "RESULTAT 1ER USER"
85 REM Y*NOT Y0NOT TAN
90 FOR I=1 TO 50
95 NEXT I
100 LET N=210
110 GOSUB AU
120 PRINT
130 PRINT "RESULTRT 2EME USER"
140 GOTO 300
210 REM Y_NOT Y_NOT TAN
220 REM Y_NOT Y_NOT TAN
300 LET N=220
Les lignes 85, 210, 220 ne sont pas conformes au listing, car contienent les octets du code machine.
Mise en pratique
à étudier pour nos Obscure Systems et faire les adaptations.
Le point principal étant de trouver le numéro de la ligne en mémoire.
RALP câest pour un ZX81.
Ătape :
- Documenter la structure dâune ligne BASIC
- DĂ©terminer le point dâentrĂ©e du programme BASIC
- Fixer des numéros de ligne pour le LM
- Scanner le code BASIC pour trouver la ligne
- MĂ©moriser lâadresse
En principe les no de ligne sont sur 2 octets en little endian.
Pour lâinsertion du code LM, un Ă©diteur hexadĂ©cimal peut faire lâaffaire pour des sous-routines courtes. La ligne REM avec le nombre dâoctet nĂ©cessaire, cf. ci-dessus.
Ă vos clavier.
Et plus tard pour la suite.
