IDP         "DIAS - RELEASE 00 - 01/10/80"
         IDP         "P. FRANCONNET"
         PROG
ZERO:    EQU         $
         DZS         '10
         WORD        RUN
         WORD        ENTRY
RUN:     EQU         $
         LRP         L
         BR          -1,L
M:       EQU         $+256
MINT:    BYTE        '6D;">";0
MERR:    ASCI        " ??"
         WORD        0
MAS:     ASCI        "DRESSE DKU="
         WORD        0
MINCR:   ASCI        "NCREMENT="
         WORD        0
MLONG:   ASCI        "ONGUEUR MOTS="
         WORD        0
MTMPO:   ASCI        "EMPORISATION="
         WORD        0
PILE:    DZS         20
         COMMON
COM:     EQU         $
ACONVH:  WORD        CONVH
AENVOI:  WORD        ENVOI
AVISTN:  WORD        VISTN
AM:      WORD        M
AXTRAV:  WORD        ZERO,X
INCR:    WORD        '0017
REP:     DZS         2
DMREP:   WORD        '0101;REP-ZERO*2;1
DM4H:    WORD        '0101;REP-ZERO*2;4
DMOUT:   WORD        '0202;0;0
DMDIR:   WORD        '8A04;0;'4500;0
DMTMPO:  WORD        '0005;0;0
         PAGE
         PROG
ENTRY:   EQU         $
<
<        C O M M A N D E S :
<
<                    A  ENTREE ADRESSE SECTEUR.
<                    I  ENTREE INCREMENT.
<                    L  ENTREE LONGUEUR MOTS.
<                    +  MARCHE AVANT.
<                    -  MARCHE ARRIERE.
<                    V  VISUALISER IMAGE COURANTE, INCREMENTER ADRESSE COURANTE
<                       ET TEMPORISATION.
<                    G  GO; FAIRE V N FOIS (INTERRUPTION PAR ALT-MODE).
<                    T  ENTREE VALEUR DE TEMPORISATION (1 A 9).
<                    F  FIN.
<                    RETURN EQUIVAUT A V.
<
         LRM         C,K
         WORD        COM+'80
         WORD        PILE-1
DPINT:   EQU         $
         LAI         MINT-M          < INTERROGATION.
         BSR         AENVOI
         LAD         DMREP           < REPONSE.
         SVC         0
         LBY         REP             < VOYONS...
         CPI         "A"
         JE          DPA
         CPI         "I"
         JE          DPI
         CPI         "L"
         JE          DPL
         CPI         "+"
         JE          DPPLUS
         CPI         "-"
         JE          DPMOIN
         CPI         "V"
         JE          DPV
         CPI         '0D
         JE          DPV
         CPI         "G"
         JE          DPGO
         CPI         "T"
         JE          DPT
         CPI         "F"
         JE          DPF
DPERR:   EQU         $
         LAI         MERR-M
         BSR         AENVOI
         JMP         DPINT
DPF:     EQU         $
         WORD        '1E16
         JMP         ENTRY
DPA:     EQU         $               < ENTREE ADRESSE SECTEUR.
         LAI         MAS-M
         BSR         AENVOI
         LAD         DM4H
         SVC         0
         LA          DM4H+1
         BSR         ACONVH
         JNE         DPERR
         STA         DMDIR+3
         JMP         DPINT
DPI:     EQU         $               < ENTREE INCREMENT.
         LAI         MINCR-M
         BSR         AENVOI
         LAD         DM4H
         SVC         0
         LA          DM4H+1
         BSR         ACONVH
         JNE         DPERR
         STA         INCR
         JMP         DPINT
DPL:     EQU         $               < ENTREE LONGUEUR MOTS.
         LAI         MLONG-M
         BSR         AENVOI
         LAD         DM4H
         SVC         0
         LA          DM4H+1
         BSR         ACONVH
         JNE         DPERR
         SLLS        1
         STA         DMDIR+2
         JMP         DPINT
DPPLUS:  EQU         $               < MARCHE AVANT.
         LA          INCR
         JAGE        $+2
         NGR         A
         STA         INCR
         JMP         DPINT
DPMOIN:  EQU         $               < MARCHE ARRIERE.
         LA          INCR
         JAL         $+2
         NGR         A
         STA         INCR
         JMP         DPINT
DPV:     EQU         $               < VISUALISATION, TEMPO, INCREMENTATION.
         BSR         AVISTN
         JMP         DPINT
DPGO:    EQU         $               < GO.
         BSR         AVISTN
         JMP         DPGO            < INTERRUPTION PAR ALT-MODE!
DPT:     EQU         $               < ENTREE TEMPORISATION.
         LAI         MTMPO-M
         BSR         AENVOI
         LAD         DMREP
         SVC         0
         LBY         REP
         ADRI        -"0",A
         CPI         9
         JG          DPERR
         JAL         DPERR
         STA         DMTMPO+2
         JMP         DPINT
<
VISTN:   EQU         $
<
<        S/P DE VISUALISATION, INCREMENTATION, TEMPORISATION...
<
         LAD         DMDIR
         SVC         0
         JE          $+2
         ACTD
<
         LA          INCR
         AD          DMDIR+3
         STA         DMDIR+3
<
         LAD         DMTMPO
         CPZ         DMTMPO+2
         JE          $+2
         SVC         0
<
         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, A VALIDER EN FAISANT AU RETOUR:
<                                         JE     OK         OU
<                                         JNE    ERREUR
<
CONVH:   EQU         $
         PSR         B,X,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         $
         CPZR        B               < POUR TEST AU RETOUR.
         PLR         B,X,Y,W         < 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    $+256
<                                  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
         END



Copyright © Jean-François Colonna, 2022-2022.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / École polytechnique, Institut Polytechnique de Paris, 2022-2022.