User Tools

Site Tools


utils.asm

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
utils.asm [2026/01/02 12:54] – fool-duplexutils.asm [2026/01/05 18:04] (current) – fool-duplex
Line 235: Line 235:
  
 BADARG FCB    CR, LF BADARG FCB    CR, LF
-       FCS    "Mauvais argument pour PSET"+       FCS    /Mauvais argument pour PSET/
        FCB    CR, LF        FCB    CR, LF
        FCS    /X = /        FCS    /X = /
  
 YEG    FCB    CR, LF YEG    FCB    CR, LF
-       FCC    ", Y = " +       FCS    /, Y = /
-       FCB    0+
  
 VALTAB FDB     1,  2,  3,  4,  5,  6,  7,  8 VALTAB FDB     1,  2,  3,  4,  5,  6,  7,  8
Line 249: Line 248:
  
 TMP16  FDB    $0000 TMP16  FDB    $0000
-       RMB    2               ; Deux octets inutilisés+       RMB    2,0             ; Deux octets inutilisés
  
 ************************************************************************************************************ ************************************************************************************************************
Line 443: Line 442:
        BEQ     PPSUF1        BEQ     PPSUF1
  
-       CMPB    #JOKER+       CMPB    #ASTRSK
        BEQ     PPJKR1        BEQ     PPJKR1
  
Line 504: Line 503:
        BHI     PPERR2        BHI     PPERR2
  
-       CMPB    #JOKER+       CMPB    #ASTRSK
        BEQ     PPJKR2        BEQ     PPJKR2
  
Line 553: Line 552:
 SBPTCT FCB     $00             ; Nombre de sous-répertoires traversés SBPTCT FCB     $00             ; Nombre de sous-répertoires traversés
  
-DBUF01 RMB     65              ; Buffers de chemin +DBUF01 RMB     65,0            ; Buffers de chemin 
-DBUF02 RMB     65+DBUF02 RMB     65,0
  
 +************************************************************************************************************
 +* IDPOST
 +* Dans un nom de fichier, remplace @ par le numéro de poste de 1 à 9 ou de A à V.
 +************************************************************************************************************
 +IDPOST SET    *
 +       CMPB   #AROB
 +       BNE    IPRTS
  
 +       LDB    NUPO
 +       CMPB   #10
 +       BCC    IPALFA
 +
 +       ADDB   #'0
 +       BRA    IPRTS
 +
 +IPALFA ADDB   #$37
 +
 +IPRTS  RTS
 +
 +************************************************************************************************************
 +* LUSTR
 +* Recherche une chaîne de caractères dans une table
 +************************************************************************************************************
 +LUSTR  SET    *
 +       PSHS   A
 +       TSTA
 +
 +LULOOP BEQ    LUNOTF
 +       CMPB   ,X+
 +       BEQ    LUFND
 +
 +       DEC    ,S
 +       BRA    LULOOP
 +
 +LUNOTF LEAS   1,S
 +       ANDCC  #$FB
 +       RTS
 +
 +LUFND  SUBA   ,S+
 +       ASLA
 +       PSHS   A,B
 +       LEAX   A,Y
 +       LDD    ,X
 +       LEAX   START,PCR
 +       LEAX   D,X
 +       ORCC   #4
 +       PULS   PC,B,A
 +
 +************************************************************************************************************
 +* ENTREE
 +* Attends de presser ENTREE pour continuer. Inutilisé.
 +************************************************************************************************************
 +ENTREE SET    *
 +       PSHS   A,B,X,Y
 +       LEAX   CNTSTR,PCR
 +       LBSR   DSPSTR
 +
 +ENTKEY LBSR   GETKEY
 +       CMPB   #CR
 +       BNE    ENTKEY
 +
 +       PULS   PC,Y,X,B,A
 +
 +CNTSTR FCB    CR, LF
 +       FCB    US, $40+24, $40+1
 +       FCC    /<entr/
 +       FCB    ACC, 'B
 +       FCS    /ee> pour continuer. /
 +
 +************************************************************************************************************
 +* SKPSPC
 +* Saute les caractères espace dans une chaîne
 +************************************************************************************************************
 +SKPSPC SET    *
 +       TSTA
 +       BEQ    SKRTS
 +
 +       LDB    ,X
 +       CMPB   #SPACE
 +       BNE    SKRTS
 +
 +       DECA
 +       LEAX   1,X
 +       BRA    SKPSPC
 +
 +SKRTS  RTS
 +
 +************************************************************************************************************
 +* UPCASE
 +* Convertit un caractère minuscule en majuscule
 +************************************************************************************************************
 +UPCASE SET    *
 +       CMPB   #'a
 +       BCS    UPRTS
 +
 +       CMPB   #'z
 +       BHI    UPRTS
 +
 +       SUBB   #$20
 +
 +UPRTS  RTS
 +
 +************************************************************************************************************
 +* STRUPR
 +* Convertit une chaîne de caractères minuscules en majuscules
 +************************************************************************************************************
 +STRUPR SET    *
 +       PSHS   A,B,X
 +       TSTA
 +
 +SULOOP BEQ    SURTS
 +
 +       LDB    ,X
 +       BSR    UPCASE
 +       STB    ,X+
 +       DECA
 +       BRA    SULOOP
 +
 +SURTS  PULS   PC,X,B,A
 +
 +************************************************************************************************************
 +* MEMCPY
 +* Copie une zone mémoire
 +************************************************************************************************************
 +MEMCPY SET    *
 +       TSTA
 +
 +MCLOOP BNE    MCNXT
 +       RTS
 +
 +MCNXT  LDB    ,Y+
 +       STB    ,X+
 +       DECA
 +       BRA    MCLOOP
 +
 +************************************************************************************************************
 +* PRSH16
 +* Convertit 4 caractères représentant un nombre hexadécimal en entier 16 bits. Inutilisé.
 +************************************************************************************************************
 +PRSH16 SET    *
 +       LDY    #0
 +       PSHS   Y
 +       LBSR   SKPSPC
 +       PSHS   CC
 +       LEAX   1,X
 +       PULS   CC
 +       BEQ    PHRTS
 +
 +       BRA    PHLP1
 +
 +PHNXTC BSR    GETACH
 +       BNE    PHLP1
 +
 +PHRTS  PULS   PC,Y
 +
 +PHLP1  BSR    ISHEX
 +       BCC    PHCONV
 +
 +       LEAX   -1,X
 +       INCA
 +       BRA    PHRTS
 +
 +PHCONV LDY    #4
 +
 +PHLP2  ASL    1,S
 +       ROL    ,S
 +       LEAY   -1,Y
 +       BNE    PHLP2
 +
 +       ADDB   1,S
 +       STB    1,S
 +       BRA    PHNXTC
 +
 +************************************************************************************************************
 +* ISHEX
 +* Convertit un caractère représentant un chiffre hexadécimal en entier 4 bits
 +************************************************************************************************************
 +ISHEX  SET    *
 +       LBSR   UPCASE
 +       SUBB   #'0
 +       BCS    IHRTS
 +
 +       CMPB   #10
 +       BCS    IHDONE
 +
 +       SUBB   #7
 +       CMPB   #10
 +       BCS    IHERR
 +
 +       CMPB   #16
 +       BCC    IHERR
 +
 +IHDONE ANDCC  #$FE
 +
 +IHRTS  RTS
 +
 +IHERR  ORCC   #1
 +       RTS
 +
 +************************************************************************************************************
 +* GETACH
 +* Récupère le prochain caractère dans une chaîne
 +************************************************************************************************************
 +GETACH SET    *
 +       TSTA
 +       BEQ    GCRTS
 +
 +       LDB    ,X+
 +       DECA
 +       ANDCC  #$FB
 +
 +GCRTS  RTS
 +
 +************************************************************************************************************
 +* PRSNMB
 +* Convertit une chaîne de caractère en entier
 +************************************************************************************************************
 +PRSNMB SET    *
 +       CLR    ,-S
 +       CLR    ,-S
 +       PSHS   B
 +       TSTA
 +       BEQ    PNERR
 +
 +PNLOOP TSTA
 +       BEQ    PNRTS1
 +
 +       LDB    ,X
 +       LBSR   UPCASE
 +       CMPB   #SPACE
 +       BEQ    PNRTS1
 +
 +       SUBB   #'0
 +       CMPB   #10
 +       BCS    PNVLD
 +
 +       CMPB   #17
 +       BCS    PNERR
 +
 +       SUBB   #7
 +
 +PNVLD  CMPB   ,S
 +       BCC    PNERR
 +
 +       LEAX   1,X
 +       DECA
 +       PSHS   A
 +       LDA    1,S
 +       PSHS   A
 +       LDA    #0
 +
 +PNMUL  ADDD   3,S
 +       BCS    PNRTS2
 +       DEC    ,S
 +       BNE    PNMUL
 +
 +       STD    3,S
 +       PULS   A
 +       PULS   A
 +       BRA    PNLOOP
 +
 +PNRTS1 ANDCC  #$FE
 +       PULS   PC,Y,B
 +
 +PNERR  ORCC   #1
 +       PULS   PC,Y,B
 +
 +PNRTS2 PULS   B
 +       PULS   PC,Y,B,A
 +
 +************************************************************************************************************
 +* PRSPFX
 +* Demande un nombre décimal ou hexadécimal. Inutilisé.
 +************************************************************************************************************
 +PRSPFX SET    *
 +       LEAX   BUF06C,PCR
 +       LBSR   TINPUT
 +       BNE    PPCHK
 +
 +       LDY    #0
 +       RTS
 +
 +PPCHK  PSHS   CC
 +       LBSR   DCRLF
 +       LDB    ,X
 +       CMPB   #DOLLAR
 +       BNE    PPDEC
 +
 +       LEAX   1,X
 +       DECA
 +       LDB    #16
 +       BRA    PPDOIT
 +
 +PPDEC  LDB    #10
 +
 +PPDOIT LBSR   PRSNMB
 +       PULS   PC,CC
 +
 +************************************************************************************************************
 +* BN2HX
 +* Convertit un entier 16 bits en chaîne de caractères hexadécimale
 +************************************************************************************************************
 +BN2HX  SET    *
 +       PSHS   U
 +       LEAU   BASE16,PCR
 +       BRA    BN2GO
 +
 +************************************************************************************************************
 +* BN2DC
 +* Convertit un entier 16 bits en chaîne de caractères décimale
 +************************************************************************************************************
 +BN2DC  SET    *
 +       PSHS   U
 +       LEAU   BASE10,PCR
 +
 +BN2GO  PSHS   A,B
 +       LDA    ,U+
 +       STA    1,S
 +       PULS   A
 +
 +BN2LP1 BSR    DIVISE
 +       BNE    BN2CNV
 +
 +       DEC    ,S
 +       BNE    BN2LP1
 +
 +       LDB    #'0
 +       STB    ,X+
 +       BRA    BN2RTS
 +
 +BN2LP2 BSR    DIVISE
 +
 +BN2CNV PSHS   B
 +       LDB    ,X
 +       ADDB   #'0
 +       CMPB   #'9
 +       BLS    BN2DGT
 +
 +       ADDB   #7
 +
 +BN2DGT STB    ,X+
 +       PULS   B
 +       DEC    ,S
 +       BNE    BN2LP2
 +
 +BN2RTS PULS   PC,U,A
 +
 +************************************************************************************************************
 +* DIVISE
 +* Effectue une division
 +************************************************************************************************************
 +DIVISE SET    *
 +       CLR    ,X
 +
 +DVLOOP SUBD   ,U
 +       BCS    DVDONE
 +
 +       INC    ,X
 +       BRA    DVLOOP
 +
 +DVDONE ADDD   ,U++
 +       TST    ,X
 +       RTS
 +
 +BASE10 FCB    5
 +       FDB    10000
 +       FDB    1000
 +       FDB    100
 +       FDB    10
 +       FDB    1
 +
 +BASE16 FCB    4
 +       FDB    $1000
 +       FDB    $100
 +       FDB    $10
 +       FDB    $1
 +
 +************************************************************************************************************
 +* DINT
 +* Affiche un entier 8 bits en décimal
 +************************************************************************************************************
 +DINT   SET    *
 +       CLRA
 +       BSR    CNVDEC
 +       LEAX   -2,X
 +       LBRA   DSPSTR
 +
 +************************************************************************************************************
 +* DSPDC1
 +* Affiche un entier 16 bits en décimal
 +************************************************************************************************************
 +DSPDC1 SET    *
 +       BSR    CNVDEC
 +       LEAX   -5,X
 +       LBRA   DSPSTR
 +
 +************************************************************************************************************
 +* DSPDC2
 +* Affiche un entier en décimal
 +************************************************************************************************************
 +DSPDC2 BSR    CNVDEC
 +       LEAX   CNVBUF,PCR
 +       LBRA   DSPSTR
 +
 +************************************************************************************************************
 +* CNVDEC
 +* Convertit un entier 16 bits en décimal
 +************************************************************************************************************
 +CNVDEC SET    *
 +       LEAX   CNVBUF,PCR
 +       BSR    BN2DC
 +       CLR    ,X
 +       RTS
 +
 +************************************************************************************************************
 +* DISPHX
 +* Affiche un entier 16 bits en hexadécimal. Inutilisé.
 +************************************************************************************************************
 +DISPHX SET    *
 +       LEAX   CNVBUF,PCR
 +       PSHS   X
 +       LBSR   BN2HX
 +       CLR    ,X
 +       PULS   X
 +       LBRA   DSPSTR
 +       
 +       FCC    /    /
 +       
 +CNVBUF RMB    6,0       
 </code> </code>
 [[code_source_de_nrdos.mo5_version_3.5|Retourner à la liste des fichiers]] [[code_source_de_nrdos.mo5_version_3.5|Retourner à la liste des fichiers]]
utils.asm.1767354853.txt.gz · Last modified: by fool-duplex

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki