IDP "DMPM : DUMP MEMOIRE SUR DKU"
IDP "RELEASE 25/10/79"
IDP "P. FRANCONNET"
PROG
ZERO: EQU $
DZS '10 < INTERFACE AVEC LE SYSTEME.
<
< P R O G R A M M E D E D U M P D U C O N T E N U D E
<
< L A M E M O I R E ( 0 - 64 K ) S U R D K U.
<
< (LE FORMAT DU DUMP EST QUANTA*128 MOTS PAR SECTEUR DKU).
<
<
< PARAMETRES.
<
QUANTA: VAL 3 < QUANTA DKU.
<
WORD RUN
WORD ENTRY
RUN: EQU $
LRP L
BR -1,L
PILE: DZS 20 < PILE POUR 'K'.
BUDKU: DZS QUANTA*128 < BUFFER DKU.
BUDKUF: EQU $ < FIN BUFFER DKU.
REPONS: DZS 2 < ZONE REPONSE.
<
< MESSAGES A ENVOYER PAR LE S/P 'ENVOI'
<
M: EQU $+128
MASDEB: BYTE '6D;"A"
ASCI "DRESSE BLOC DEBUT="
WORD 0
MASF: BYTE '6D;"D"
ASCI "ERNIER BLOC UTILISE="
MASFIN: DZS 2
WORD 0
MERDKU: BYTE '6D;"E"
ASCI "RREUR DKU"
WORD 0
<
< COMMON
<
COMMON
COM: EQU $
AM: WORD M < POUR LE S/P 'ENVOI'.
AXBUF: WORD BUDKU,X < RELAI D'INDEXATION SUR BUFFER DKU.
AXTRAV: WORD '8000 < RELAI D'INDEXATION.
PBUDKU: WORD 0 < POINTEUR COURANT SUR LE BUFFER DKU.
LBUDKU: WORD BUDKUF-BUDKU < LONGUEUR MOTS BUFFER DKU.
<
AENVOI: WORD ENVOI < ENVOI D'UN MESSAGE STANDARD.
ACONVA: WORD CONVA < CONVERSION HEXA --> ASCI.
ACONVH: WORD CONVH < CONVERSION ASCI --> HEXA.
ADMP1M: WORD DMP1M < DUMP DE 1 MOT.
<
DMWDKU: WORD '8A02 < ECRITURE SUR DKU EN QUANTA 3.
IF QUANTA-1,XWORK,,XWORK
DMWDKU: WORD '8A0A < ECRITURE SUR DKU EN QUANTA 1.
XWORK: VAL 0
WORD BUDKU-ZERO*2
WORD QUANTA*128*2
ABC: WORD 0 < ADRESSE BLOC COURANT.
DMOUT: WORD '0202 < ENVOI MESSAGE.
WORD 0
WORD 0
DMREP: WORD '0101 < DEMANDE REPONSE.
AOREP: WORD REPONS-ZERO*2
WORD 4
DMCCI: WORD '0001 < RETOUR CCI.
PAGE
PROG
ENTRY: EQU $
<
< INITIALISATIONS.
<
LRM C,K
WORD COM+'80 < COMMON.
WORD PILE-1 < PILE.
STZ PBUDKU < POINTEUR BUFFER DKU.
<
< ACQUISITION ADRESSE BLOC DEBUT.
<
DMPM1: EQU $
LAI MASDEB-M
BSR AENVOI
LAD DMREP
SVC 0
LA AOREP
BSR ACONVH < CONVERSION HEXA.
JNE DMPM1 < INCORRECT.
STA ABC < ADRESSE BLOC COURANT.
LAI 0 < ADRESSE MOT COURANT.
<
< BOUCLE DE DUMP
<
DMPM2: EQU $
WORD '1E15 < 'B' RECOIT ('A') - SAUF ENTRE LES
< ADRESSES '8000 A '8080...
BSR ADMP1M < DUMP DU MOT COURANT.
ADRI 1,A
JANE DMPM2 < AU MOT SUIVANT.
<
< OPERATIONS DE FIN
<
< ENVOI DE 'LBUDKU'-1 MOTS POR ETRE SUR QUE LE SECTEUR
< EN COURS DE CONSTITUTION SOIT BIEN ECRIT.
<
LBI 0 < MOT NUL.
LX LBUDKU
ADRI -1,X
DMPM3: EQU $
BSR ADMP1M < DUMP MOT NUL.
JDX DMPM3
<
< ON DIT QUEL EST LE DERNIER BLOC DKU UTILISE.
<
LA ABC
ADRI -1,A < DERNIER SECTEUR AYANT ETE ECRIT.
LRM Y
WORD MASFIN-ZERO*2
BSR ACONVA < COVERSION ASCI.
LAI MASF-M < MESSAGE.
BSR AENVOI
<
LAD DMCCI < RETOUR CCI
SVC 0
JMP ENTRY < VERS NOUVELLE EXECUTION.
PAGE
DMP1M: EQU $
<
< D U M P D E 1 M O T S U R D K U
<
< (QUAND LE BUFFER EST PLEIN, ON FAIT 1 ECHANGE)
<
< ARGUMENT: 'B' = MOT A ECRIRE.
<
PSR A,B,X < SAUVEGARDES.
<
LX PBUDKU < VALEUR POINTEUR BUFFER.
STB &AXBUF < STORE MOT.
IC PBUDKU
LA PBUDKU
CP LBUDKU < TEST FIN DE BUFFER.
JL DMP1M1
<
< BUFFER PLEIN.
<
STZ PBUDKU < RAZ POINTEUR.
LAD DMWDKU < DEMANDE WRITE DKU.
JMP $+1 < POUR POINT D'ARRET EVENTUEL.
SVC 0
JE DMP1M2
LAI MERDKU-M < MESSAGE ERREUR DKU.
BSR AENVOI
ACTD
DMP1M2: EQU $
IC ABC < INCREMENTATION ADRESSE BLOC COURANT.
DMP1M1: EQU $
PLR A,B,X < RESTAURATIONS.
RSR
PAGE
ENVOI: EQU $
<
< ENVOI D'UN MESSAGE SUR UL '02
<
< EN ENTREE
<
< A=DEPLACEMENT MOTS DU MESSAGE A ENVOYER PAR RAPPORT
< A M. TOUT MESSAGE EST DELIMITE PAR '00
<
<
< NOTA: ON A
< EN TABLE: M: EQU $+128
< MES1: ASCI "TEXTE..."
< WORD 0
< EN COMMON: AM: WORD M
< APPEL PAR: LAI MESI-M
< BSR AENVOI
<
PSR A,X
AD AM < @ MOT MESSAGE
ADR A,A < @ OCT MESSAGE
STA DMOUT+1
STZ DMOUT+2
LR A,X
ENV1: EQU $ < BOUCLE JUSQU'A DELIM '00
LBY &AXTRAV
JAE ENV2
IC DMOUT+2 < LONGUEUR='+1
ADRI 1,X
JMP ENV1
ENV2: EQU $
LAD DMOUT
SVC 0
PLR A,X
RSR
PAGE
CONVA: EQU $
<
< S/P DE CONVERSION D'UN MOT EN ASCI
<
< ARGUMENT:
< A = MOT A TRADUIRE
< Y = ADRESSE OCTET DE RANGEMENT DU RESULTAT
<
PSR A,B,X,Y < SAUVEGARDES
<
ADRI 3,Y < ADRESSE OCTET DERNIER CHIFFRE
PSR A
LXI 4 < INIT COUNT
CONVA1: EQU $
PLR A
SLRD 4
PSR A
SLLD 4
ANDI 'F < RECUPERATION CHIFFRE HEXA
CPI '9
JLE $+2
ADRI 7,A
ADRI '30,A < CARACTERE ASCI
PSR X < SVG COUNT
LR Y,X < INDEX CHIFFRE EN COURS
STBY &AXTRAV
ADRI -1,Y < INDEX CHIFFRE SUIVANT
PLR X < RECUPERATION COUNT
JDX CONVA1
<
PLR A < A NE PAS OUBLIER !
PLR A,B,X,Y < RESTAURATIONS
RSR
PAGE
<
< CONVERSION EN BINAIRE D'UN NOMBRE HEXADECIMAL SAISI
< EN ASCI (PAR EXEMPLE, NUMERO DE SECTEUR)
<
< ARGUMENTS:
< 'A' = ADRESSE OCTET DES 4 CARACTERES ASCI
<
< RESULTAT:
< 'A' = NOMBRE EN BINAIRE
< 'B' = 0 SI CONVERSION OK
< # 0 SINON
<
< NOTA:
< 'B' EST TESTE A ZERO AVANT LE RETOUR (TESTER PAR JE/JNE)
<
CONVH: EQU $
PSR Y,W < SAUVEGARDES
LR A,Y < Y = ADRESSE CARACTERE EN COURS
LXI 4 < INIT COUNT
CONVH1: EQU $
LR X,W < SAUVEGARDE COUNT
LR Y,X < INDEX CARACTERE
LBY &AXTRAV < CARACTERE
CPI "0"
JL CONVH3 < ERREUR
CPI "9"
JLE CONVH2
CPI "A"
JL CONVH3 < ERREUR
CPI "F"
JG CONVH3 < ERREUR
ADRI -7,A
CONVH2: EQU $
ADRI -'30,A
SLLS 12
SCLD 4 < CHIFFRE HEXA DANS 'B'
ADRI 1,Y < CARACTERE SUIVANT
LR W,X < RESTAURATION COUNT
JDX CONVH1 < AU SUIVANT
<
SLLD 16 < CONVERSION OK
JMP CONVH9
<
CONVH3: EQU $
LBI 1 < ERREUR
CONVH9: EQU $
PLR Y,W < RESTAURATIONS
CPZR B < POUR TEST AU RETOUR
RSR
LST
NDS
END
Copyright © Jean-François COLONNA, 2022-2024.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / École polytechnique, Institut Polytechnique de Paris, 2022-2024.