User Tools

Site Tools


libmo5.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
libmo5.asm [2025/12/29 11:33] – fool-duplexlibmo5.asm [2026/01/05 18:15] (current) – fool-duplex
Line 5: Line 5:
  
 ************************************************************************************************************ ************************************************************************************************************
-MEMFRM SET    *              +* MEMFRM 
-       PSHS   B              +* Bascule en mémoire vidéo forme 
-       LDB    SYSPRA         +************************************************************************************************************ 
-       ORAB   #1             +MEMFRM SET    * 
-       STB    SYSPRA         +       PSHS   B 
-       PULS   PC,B           +       LDB    SYSPRA 
-                             +       ORB    #1 
-GETKEY SET    *             +       STB    SYSPRA 
 +       PULS   PC,B 
 + 
 +************************************************************************************************************ 
 +* GETKEY 
 +* Lit une touche au clavier 
 +************************************************************************************************************ 
 +GETKEY SET    *
        LDB    KEYFLG,PCR        LDB    KEYFLG,PCR
-       BEQ    GKLP01         +       BEQ    GKLP01 
-                            +
        CLR    KEYFLG,PCR        CLR    KEYFLG,PCR
-       RTS                   +       RTS 
-                             + 
-GKLP01 CALL   GETCH          +GKLP01 CALL   GETCH 
-       BEQ    GKLP01         +       BEQ    GKLP01 
-                             + 
-       RTS                   +       RTS 
-                             + 
-KEYFLG FCB 0                 +KEYFLG FCB 0 
-                             + 
-KEYPRS SET    *              +************************************************************************************************************ 
-       TST    KEYFLG         +* KEYPRS 
-       BNE    KPRTS          +* Teste si une touche a été pressée 
-                             +************************************************************************************************************ 
-       CALL   GETCH          +KEYPRS SET    * 
-       BNE    KPFLAG         +       TST    KEYFLG 
-                             +       BNE    KPRTS 
-       RTS                   + 
-                             +       CALL   GETCH 
-KPFLAG STB    KEYFLG-*-3,PC ; Bug ? +       BNE    KPFLAG 
-                             + 
-KPRTS  RTS                   +       RTS 
-                             + 
-PCHAR  SET    *              +KPFLAG STB    KEYFLG,PCR ; Bug ? 
-       GOTO   PUTCH          + 
-                             +KPRTS  RTS 
-DCRLF  SET    *              + 
-       PSHS   CC,B           +************************************************************************************************************ 
-       LDB    #CR            +* PCHAR 
-       LBSR   PCHAR          +* Affiche un caractère 
-       LDB    #LF            +************************************************************************************************************ 
-       LBSR   PCHAR          +PCHAR  SET    * 
-       PULS   PC,B,CC        +       GOTO   PUTCH 
-                             + 
-DSPACE SET    *              +************************************************************************************************************ 
-       PSHS   CC,B           +* DCRLF 
-       LDB    #SPACE         +* Effectue un retour à la ligne 
-       LBSR   PCHAR          +************************************************************************************************************ 
-       PULS   PC,B,CC        +DCRLF  SET    * 
-                             +       PSHS   CC,B 
-PLAY   SET    *              +       LDB    #CR 
-       GOTO   NOTEH          +       LBSR   PCHAR 
-                             +       LDB    #LF 
-                             +       LBSR   PCHAR 
-DSPSTR SET    *              +       PULS   PC,B,CC 
-       LDB    ,X+            + 
-       BNE    DSDO           +************************************************************************************************************ 
-                             +* DSPACE 
-       RTS                   +* Affiche une espace 
-                             +************************************************************************************************************ 
-DSDO   LBSR   PCHAR          +DSPACE SET    * 
-       BRA    DSPSTR         +       PSHS   CC,B 
-                             +       LDB    #SPACE 
-DSPSTL SET    *              +       LBSR   PCHAR 
-       PSHS   A,B,X          +       PULS   PC,B,CC 
-                             + 
-DLLOOP TSTA                  +************************************************************************************************************ 
-       BEQ    DLRTS          +* PLAY 
-                             +* Joue une note de musique 
-       LDB    ,X+            +************************************************************************************************************ 
-       LBSR   PCHAR          +PLAY   SET    * 
-       DECA                  +       GOTO   NOTEH 
-       BRA    DLLOOP         + 
-                             +************************************************************************************************************ 
-DLRTS  PULS   PC,X,B,A       +* DSPSTR 
-                             +* Affiche une chaîne de caractère terminée par 0. 
-YESNO  SET    *              +************************************************************************************************************ 
-       LEAX   YNBUFF,PCR  +DSPSTR SET    * 
-       LBSR   TINPUT         +       LDB    ,X+ 
-       BEQ    YESNO          +       BNE    DSDO 
-                             + 
-       LDB    ,X             +       RTS 
-       LBSR   UPCASE         + 
-       CMPB   #'O           +DSDO   LBSR   PCHAR 
-       BEQ    YNRTS          +       BRA    DSPSTR 
-                             + 
-       CMPB   #'N           +************************************************************************************************************ 
-       BEQ    YNRTS          +* DSPSTL 
-                             +* Affiche une chaîne de caractère de longueur A. 
-       LBSR   DISPBS         +************************************************************************************************************ 
-       LBSR   BEEP           +DSPSTL SET    * 
-       BRA    YESNO          +       PSHS   A,B,X 
-                             + 
-YNRTS  RTS                   +DLLOOP TSTA 
-                             +       BEQ    DLRTS 
-TINPUT SET    *              + 
-       PSHS   B,U            +       LDB    ,X+ 
-       TFR    X,U           +       LBSR   PCHAR 
-       LDA    ,X++           +       DECA 
-       PSHS   X              +       BRA    DLLOOP 
-                            + 
 +DLRTS  PULS   PC,X,B,A 
 + 
 +************************************************************************************************************ 
 +* OUINON 
 +* Attend que l'utilisateur presse O ou N 
 +************************************************************************************************************ 
 +OUINON SET    * 
 +       LEAX   YNBUFF,PCR 
 +       LBSR   TINPUT 
 +       BEQ    OUINON 
 + 
 +       LDB    ,X 
 +       LBSR   UPCASE 
 +       CMPB   #'O 
 +       BEQ    YNRTS 
 + 
 +       CMPB   #'N 
 +       BEQ    YNRTS 
 + 
 +       LBSR   DISPBS 
 +       LBSR   BEEP 
 +       BRA    OUINON 
 + 
 +YNRTS  RTS 
 + 
 +************************************************************************************************************ 
 +* TINPUT 
 +* Lit une chaîne de caractère dans un fichier ou au clavier 
 +************************************************************************************************************ 
 +TINPUT SET    * 
 +       PSHS   B,U 
 +       TFR    X,U 
 +       LDA    ,X++ 
 +       PSHS   X 
 TILOOP TST    FOFLG           ; Fichier ouvert ? TILOOP TST    FOFLG           ; Fichier ouvert ?
-       BEQ    TIKYBD         +       BEQ    TIKYBD 
-                            +
        LBSR   FGETCH          ; Oui, on va lire un caractère        LBSR   FGETCH          ; Oui, on va lire un caractère
-       BRA    TIKEYS           +       BRA    TIKEYS 
-                            +
 TIKYBD LBSR   GETKEY          ; Non, on lit au clavier TIKYBD LBSR   GETKEY          ; Non, on lit au clavier
-                            +
 TIKEYS CMPB   #CR             ; Fin de ligne TIKEYS CMPB   #CR             ; Fin de ligne
-       BEQ    TIEND          +       BEQ    TIEND 
-                            +
        CMPB   #EOF            ; Fin de fichier        CMPB   #EOF            ; Fin de fichier
-       BEQ    TIEND          +       BEQ    TIEND 
-                            +
        CMPB   #LEFT           ; Efface le dernier caractère        CMPB   #LEFT           ; Efface le dernier caractère
-       BEQ    TILEFT         +       BEQ    TILEFT 
-                            +
        CMPB   #UP             ; Efface toute la ligne        CMPB   #UP             ; Efface toute la ligne
-       BEQ    TIUPLP         +       BEQ    TIUPLP 
-                            +
        CMPB   #RIGHT          ; Rétablit le dernier caractère        CMPB   #RIGHT          ; Rétablit le dernier caractère
-       BEQ    TIRGHT         +       BEQ    TIRGHT 
-                            +
        CMPB   #DOWN           ; Rétablit toute la ligne        CMPB   #DOWN           ; Rétablit toute la ligne
-       BEQ    TIDNLP         +       BEQ    TIDNLP 
-                            +
        CMPB   #SPACE          ; Caractères 0..31 interdits        CMPB   #SPACE          ; Caractères 0..31 interdits
-       BCS    TIERR          +       BCS    TIERR 
-                            +
        CMPB   #127            ; Caractères 128..255 interdits        CMPB   #127            ; Caractères 128..255 interdits
-       BHI    TIERR          +       BHI    TIERR 
-                            +
        TSTA                   ; Plus de place dans le buffer ?        TSTA                   ; Plus de place dans le buffer ?
-       BEQ    TIERR          +       BEQ    TIERR 
-                            +
        STB    ,X+             ; On ajoute le caractère        STB    ,X+             ; On ajoute le caractère
-       DECA                 +       DECA
        LBSR   PCHAR           ; Et on l'affiche        LBSR   PCHAR           ; Et on l'affiche
-       BRA    TILOOP         +       BRA    TILOOP 
-                            +
 TILEFT CMPA   ,U              ; Buffer vide ? TILEFT CMPA   ,U              ; Buffer vide ?
-       BEQ    TIERR          +       BEQ    TIERR 
-                            +
        BSR    DELCHR          ; Efface le dernier caractère        BSR    DELCHR          ; Efface le dernier caractère
-       BRA    TILOOP         +       BRA    TILOOP 
-                             + 
-DELCHR SET    *                  +************************************************************************************************************ 
-       LBSR   ISPBS          +* DELCHR 
-       INCA                  +* Efface un caractère 
-       LEAX   1,X            +************************************************************************************************************ 
-       RTS                   +DELCHR SET    * 
-                            +       LBSR   DISPBS 
 +       INCA 
 +       LEAX   -1,X 
 +       RTS 
 + 
 +************************************************************************************************************ 
 +* Suite de TINPUT 
 +************************************************************************************************************
 TIUPLP CMPA   ,U              ; Buffer vide ? TIUPLP CMPA   ,U              ; Buffer vide ?
-       BEQ    TILOOP         +       BEQ    TILOOP 
-                            +
        BSR    DELCHR          ; Efface un caractère        BSR    DELCHR          ; Efface un caractère
-       BRA    TIUPLP         +       BRA    TIUPLP 
-                            +
 TIRGHT TSTA                   ; Fin de buffer ? TIRGHT TSTA                   ; Fin de buffer ?
-       BEQ    TIERR          +       BEQ    TIERR 
-                            +
        BSR    RSTCHR          ; Restaure le dernier caractère        BSR    RSTCHR          ; Restaure le dernier caractère
-       BRA    TILOOP         +       BRA    TILOOP 
-                             + 
-RSTCHR SET    *               +************************************************************************************************************ 
-       TFR    A,B           +* RSTCHR 
-       SUBB   ,U             +* Rétablit un caractère 
-       NEGB                  +************************************************************************************************************ 
-       CMPB   1,U            +RSTCHR SET    * 
-       BCC    RCERR          +       TFR    A,B 
-                             +       SUBB   ,U 
-       LDB    ,X             +       NEGB 
-       CMPB   #SPACE           +       CMPB   1,U 
-       BCS    RCERR          +       BCC    RCERR 
-                             + 
-       CMPB   #127           +       LDB    ,X 
-       BHI    RCERR          +       CMPB   #SPACE 
-                             +       BCS    RCERR 
-       DECA                  + 
-       LEAX   1,X            +       CMPB   #127 
-       LBSR   PCHAR          +       BHI    RCERR 
-       ANDCC  #$FE           + 
-       RTS                   +       DECA 
-                             +       LEAX   1,X 
-RCERR  ORCC   #1             +       LBSR   PCHAR 
-       RTS                   +       ANDCC  #$FE 
-                            +       RTS 
 + 
 +RCERR  ORCC   #1 
 +       RTS 
 + 
 +************************************************************************************************************ 
 +* Suite de TINPUT 
 +************************************************************************************************************
 TIDNLP TSTA                   ; Fin de buffer ? TIDNLP TSTA                   ; Fin de buffer ?
-       BEQ    TIERR          +       BEQ    TIERR 
-                            +
        BSR    RSTCHR          ; Restaure un caractère        BSR    RSTCHR          ; Restaure un caractère
-       BCC    TIDNLP         +       BCC    TIDNLP 
-                             + 
-       LBRA   TILOOP         +       LBRA   TILOOP 
-                             + 
-TIEND  SUBA   ,U             +TIEND  SUBA   ,U 
-       NEGA                  +       NEGA 
-       STA    1,U           +       STA    1,U
        PULS   X               ; X pointe sur le résultat        PULS   X               ; X pointe sur le résultat
-       PULS   PC,U,B         +       PULS   PC,U,B 
-                             + 
-TIERR  BSR    BEEP           +TIERR  BSR    BEEP 
-       LBRA   TILOOP         +       LBRA   TILOOP 
-                             + 
-BEEP   SET    *               +************************************************************************************************************ 
-       PSHS   CC,A,B         +* BEEP 
-       LDD    #8             +* Joue un BEEP 
-       STD    OCTAVE         +************************************************************************************************************ 
-       LDB    #36            +BEEP   SET    * 
-       STB    DUREE          +       PSHS   CC,A,B 
-       LDB    #5             +       LDD    #8 
-       STB    TEMPO          +       STD    OCTAVE 
-       LDB    #3             +       LDB    #36 
-       STB    TIMBRE         +       STB    DUREE 
-       LDB    #$31            ; Devrait être $01 (MO5), pas $31 (TO7) +       LDB    #5 
-       LBSR   PLAY           +       STB    TEMPO 
-       PULS   PC,B,A,CC      +       LDB    #3 
-                             +       STB    TIMBRE 
-DHEX8  SET    *                   +       LDB    #$31            ; Erreur: devrait être $01 (MO5), pas $31 (TO7) 
-       PSHS   B              +       LBSR   PLAY 
-       LSRB                  +       PULS   PC,B,A,CC 
-       LSRB                  + 
-       LSRB                  +************************************************************************************************************ 
-       LSRB                  +* DHEX8 
-       BSR    DHXDGT         +* Affiche un entier 8 bits en hexadécimal 
-       PULS   B              +************************************************************************************************************ 
-       ANDB   #$F            +DHEX8  SET    * 
-                             +       PSHS   B 
-DHXDGT SET    *               +       LSRB 
-       CMPB   #10            +       LSRB 
-       BCC    DHDHEX         +       LSRB 
-                             +       LSRB 
-       ADDB   #'0            +       BSR    DHXDGT 
-       LBRA   PCHAR          +       PULS   B 
-                            +       ANDB   #$F 
 + 
 +************************************************************************************************************ 
 +* DHXDGT 
 +* Affiche un chiffre hexadécimal 
 +************************************************************************************************************ 
 +DHXDGT SET    * 
 +       CMPB   #10 
 +       BCC    DHDHEX 
 + 
 +       ADDB   #'0 
 +       LBRA   PCHAR 
 DHDHEX ADDB   #$37            ; Correction pour caractère A..F DHDHEX ADDB   #$37            ; Correction pour caractère A..F
-       LBRA   PCHAR         +       LBRA   PCHAR
 </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]]
libmo5.asm.1767004426.txt.gz · Last modified: by fool-duplex

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki