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