User Tools

Site Tools


utils.asm

This is an old revision of the document!


Retourner à la liste des fichiers

* NRDOS.MO5 version 3.5
* UTILS.ASM (Routines utilitaires)

************************************************************************************************************
* UNKRT4
* Routine d'utilité inconnue (calcul de quelque chose)
************************************************************************************************************
UNKRT4 SET    *
       PSHS   A,B
       LDA    #128
       PSHS   A
       LDD    UNKVR4

UK4LP1 ORCC   #1
       RORA
       RORB
       RORA
       RORB
       RORA
       RORB
       TSTA
       BNE    UK4LB1
       
       LDA    #$FF

UK4LB1 TSTB
       BNE    UK4LB2
       
       LDB    #$FF

UK4LB2 MUL
       DEC    ,S
       BNE    UK4LP1
       
       ADDD   UNKVR4
       STD    UNKVR4
       TFR    D,X
       PULS   A
       PULS   PC,B,A

UNKVR4 FDB    $0101

************************************************************************************************************
* MUL16B
* Multiplication 16 bits avec résultat sur 32 bits
************************************************************************************************************
MUL16B SET    *
       PSHS   X,Y
       LEAX   ,S
       LEAY   2,S
       LEAS   -4,S
       LEAU   ,S
       CLR    ,U
       CLR    1,U
       LDA    1,X
       LDB    1,Y
       MUL
       STD    2,U
       LDA    ,X
       LDB    1,Y
       MUL
       ADDD   1,U
       STD    1,U
       BCC    M16CR1
       
       INC    ,U

M16CR1 LDA    1,X
       LDB    ,Y
       MUL
       ADDD   1,U
       STD    1,U
       BCC    M16CR2
       
       INC    ,U

M16CR2 LDA    ,X
       LDB    ,Y
       MUL
       ADDD   ,U
       STD    ,U
       LDX    ,U
       LDD    2,U
       LEAS   8,S
       RTS

************************************************************************************************************
* PRSDSP
* Interprète une chaîne et affiche l'entier correspondant. Inutilisé.
************************************************************************************************************
PRSDSP SET    *
       JSR    PRSINT
       LBEQ   PRMERR
       
       LBCS   PRMERR
       
       TFR    Y,D
       JMP    DSPDC2

************************************************************************************************************
* UNKRT5
* Routine d'utilité inconnue et inutilisée.
************************************************************************************************************
UNKRT5 SET    *
       JSR    VALAZ
       LBCS   PRMERR
       
       STX    TMP16
       JSR    PRSINT
       LBEQ   PRMERR
       
       LBCS   PRMERR
       
       LDX    TMP16
       STY    ,X
       RTS

************************************************************************************************************
* UNKRT6
* Routine d'utilité inconnue et inutilisée.
************************************************************************************************************
UNKRT6 SET    *
       JSR    VALAZ
       LBCS   PRMERR
       
       STX    TMP16
       JSR    PRSINT
       LBEQ   PRMERR
       
       LBCS   PRMERR
       
       JSR    UNKRT4
       JSR    MUL16B
       LEAX   1,X
       LDY    TMP16
       STX    ,Y
       RTS

************************************************************************************************************
* VALAZ
* Transforme un caractère alphabétique isolé en une valeur entre 1 et 26
************************************************************************************************************
VALAZ  SET    *
       JSR    SKSPCL
       JSR    GETNCH
       BEQ    VAZERR
       
       SUBB   #'A
       CMPB   #26
       BCC    VAZERR
       
       LDX    #VALTAB
       ABX
       ABX
       JSR    GETNCH
       BEQ    VAZOK
       
       CMPB   #SPACE
       BNE    VAZERR

VAZOK  ANDCC  #$FE
       RTS

VAZERR ORCC   #1
       RTS

************************************************************************************************************
* GETNCH
* Recupère le prochain caractère dans la ligne de commande
************************************************************************************************************
GETNCH SET    *
       PSHS   A,X
       LDX    CLPTR
       LDA    CLTOGO
       BEQ    GNRTS
       
       LDB    ,X
       LEAX   1,X
       STX    CLPTR
       DECA
       STA    CLTOGO
       ANDCC  #$FB

GNRTS  PULS   PC,X,A

************************************************************************************************************
* UNKRT7
* Routine d'utilité inconnue et inutilisée.
************************************************************************************************************
UNKRT7 SET    *
       JSR    CLS             ; Efface l'écran

UK7LP1 JSR    UNKRT4
       LDY    #320
       JSR    MUL16B
       PSHS   X               ; Résultat = coordonnée X
       JSR    UNKRT4
       LDY    #200
       JSR    MUL16B
       TFR    X,Y             ; Résultat = coordonnée Y
       PULS   X
       JSR    PSET            ; Affiche le point
       JSR    KEYPRS
       BEQ    UK7LP1
       
       JSR    GETKEY
       CMPB   #SPACE          ; Espace permet de sortir
       BNE    UK7LP1
       
       JSR    CLS             ; Efface l'écran
       RTS

************************************************************************************************************
* PSET
* Exécute la commande PSET. Inutilisé.
************************************************************************************************************
PSET   SET    *
       CMPX   #320
       BCC    PSERR
       CMPY   #200
       BCC    PSERR
       GOTO   PLOTH

PSERR  PSHS   X,Y
       LDX    #BADARG
       JSR    DSPSTR
       PULS   B,A
       JSR    DSPDC2
       LDX    #YEG
       JSR    DSPSTR
       PULS   B,A
       JMP    DSPDC2

BADARG FCB    CR, LF
       FCS    "Mauvais argument pour PSET"
       FCB    CR, LF
       FCS    /X = /

YEG    FCB    CR, LF
       FCC    ", Y = "
       FCB    0

VALTAB FDB     1,  2,  3,  4,  5,  6,  7,  8
       FDB     9, 10, 11, 12, 13, 14, 15, 16
       FDB    17, 18, 19, 20, 21, 22, 23, 24
       FDB    25, 26

TMP16  FDB    $0000
       RMB    2

************************************************************************************************************
* HEXLIN
* Affiche un dump hexadécimal de A octets de la zone pointée par X.
************************************************************************************************************
HEXLIN SET    *
       TSTA                   ; A contient le nombre de caractère total
       BEQ    HEXRTS          ; à afficher
       
       PSHS   A,X             ; et X pointe sur la zone à dumper
       LDB    #8              ; 8 caractères par ligne

HEXLP1 PSHS   B
       JSR    MEMFRM
       LDB    ,X+
       JSR    DHEX8           ; Affiche la valeur hexadécimale
       LDB    #SPACE
       LBSR   PCHAR
       PULS   B
       DECA
       BEQ    HXCONT

       DECB
       BNE    HEXLP1

       BRA    HEXSEP

HXCONT DECB

HEXTAB TSTB
       BEQ    HEXSEP
       
       PSHS   B
       LDB    #SPACE
       LBSR   PCHAR
       LBSR   PCHAR
       LBSR   PCHAR
       PULS   B
       DECB
       BRA    HEXTAB

HEXSEP PULS   X,A
       LDB    #SPACE           ; Séparation
       LBSR   PCHAR
       LBSR   PCHAR
       LDB    #8               ; 8 caractères par ligne

HEXLP2 PSHS   B
       JSR    MEMFRM
       LDB    ,X+
       CMPB   #SPACE
       BCS    HEXHI

       CMPB   #$7F
       BHI    HEXHI           ; Si ce n'est pas de l'ASCII

       BRA    HEXCHR

HEXHI  LDB    #POINT          ; Afficher un point à la place

HEXCHR LBSR   PCHAR           ; Affiche le caractère
       PULS   B
       DECA
       BEQ    HEXCR

       DECB
       BNE    HEXLP2

HEXCR  LBSR   DCRLF
       BRA    HEXLIN

HEXRTS RTS       

Retourner à la liste des fichiers

utils.asm.1767353478.txt.gz · Last modified: by fool-duplex

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki