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:35] – fool-duplexlibmo5.asm [2026/01/05 18:15] (current) – fool-duplex
Line 8: Line 8:
 * Bascule en mémoire vidéo forme * Bascule en mémoire vidéo forme
 ************************************************************************************************************ ************************************************************************************************************
-MEMFRM SET    *              +MEMFRM SET    * 
-       PSHS   B              +       PSHS   B 
-       LDB    SYSPRA         +       LDB    SYSPRA 
-       ORAB   #1             +       ORB    #1 
-       STB    SYSPRA         +       STB    SYSPRA 
-       PULS   PC,B          +       PULS   PC,B
  
-************************************************************************************************************                            +************************************************************************************************************
 * GETKEY * GETKEY
 * Lit une touche au clavier * Lit une touche au clavier
 ************************************************************************************************************ ************************************************************************************************************
-GETKEY SET    *             +GETKEY SET    *
        LDB    KEYFLG,PCR        LDB    KEYFLG,PCR
-       BEQ    GKLP01         +       BEQ    GKLP01 
-                            +
        CLR    KEYFLG,PCR        CLR    KEYFLG,PCR
-       RTS                   +       RTS
-                             +
-GKLP01 CALL   GETCH          +
-       BEQ    GKLP01         +
-                             +
-       RTS                   +
-                             +
-KEYFLG FCB 0                +
  
-************************************************************************************************************                            +GKLP01 CALL   GETCH 
 +       BEQ    GKLP01 
 + 
 +       RTS 
 + 
 +KEYFLG FCB 0 
 + 
 +************************************************************************************************************
 * KEYPRS * KEYPRS
 * Teste si une touche a été pressée * Teste si une touche a été pressée
 ************************************************************************************************************ ************************************************************************************************************
-KEYPRS SET    *              +KEYPRS SET    * 
-       TST    KEYFLG         +       TST    KEYFLG 
-       BNE    KPRTS          +       BNE    KPRTS 
-                             + 
-       CALL   GETCH          +       CALL   GETCH 
-       BNE    KPFLAG         +       BNE    KPFLAG 
-                             + 
-       RTS                   +       RTS 
-                             + 
-KPFLAG STB    KEYFLG-*-3,PC ; Bug ? +KPFLAG STB    KEYFLG,PCR ; Bug ? 
-                             + 
-KPRTS  RTS                  +KPRTS  RTS
  
 ************************************************************************************************************ ************************************************************************************************************
 * PCHAR * PCHAR
 * Affiche un caractère * Affiche un caractère
-************************************************************************************************************                             +************************************************************************************************************ 
-PCHAR  SET    *              +PCHAR  SET    * 
-       GOTO   PUTCH         +       GOTO   PUTCH
  
 ************************************************************************************************************ ************************************************************************************************************
 * DCRLF * DCRLF
 * Effectue un retour à la ligne * Effectue un retour à la ligne
-************************************************************************************************************                             +************************************************************************************************************ 
-DCRLF  SET    *              +DCRLF  SET    * 
-       PSHS   CC,B           +       PSHS   CC,B 
-       LDB    #CR            +       LDB    #CR 
-       LBSR   PCHAR          +       LBSR   PCHAR 
-       LDB    #LF            +       LDB    #LF 
-       LBSR   PCHAR          +       LBSR   PCHAR 
-       PULS   PC,B,CC        +       PULS   PC,B,CC 
-                            +
 ************************************************************************************************************ ************************************************************************************************************
 * DSPACE * DSPACE
 * Affiche une espace * Affiche une espace
-************************************************************************************************************                             +************************************************************************************************************ 
-DSPACE SET    *              +DSPACE SET    * 
-       PSHS   CC,B           +       PSHS   CC,B 
-       LDB    #SPACE         +       LDB    #SPACE 
-       LBSR   PCHAR          +       LBSR   PCHAR 
-       PULS   PC,B,CC       +       PULS   PC,B,CC
  
 ************************************************************************************************************ ************************************************************************************************************
 * PLAY * PLAY
-* Joue une note de musique                             +* Joue une note de musique 
-PLAY   SET    *              +************************************************************************************************************ 
-       GOTO   NOTEH          +PLAY   SET    * 
-                             +       GOTO   NOTEH 
-                             + 
-DSPSTR SET    *              +************************************************************************************************************ 
-       LDB    ,X+            +* DSPSTR 
-       BNE    DSDO           +* Affiche une chaîne de caractère terminée par 0. 
-                             +************************************************************************************************************ 
-       RTS                   +DSPSTR SET    * 
-                             +       LDB    ,X+ 
-DSDO   LBSR   PCHAR          +       BNE    DSDO 
-       BRA    DSPSTR         + 
-                             +       RTS 
-DSPSTL SET    *              + 
-       PSHS   A,B,X          +DSDO   LBSR   PCHAR 
-                             +       BRA    DSPSTR 
-DLLOOP TSTA                  + 
-       BEQ    DLRTS          +************************************************************************************************************ 
-                             +* DSPSTL 
-       LDB    ,X+            +* Affiche une chaîne de caractère de longueur A. 
-       LBSR   PCHAR          +************************************************************************************************************ 
-       DECA                  +DSPSTL SET    * 
-       BRA    DLLOOP         +       PSHS   A,B,X 
-                             + 
-DLRTS  PULS   PC,X,B,A       +DLLOOP TSTA 
-                             +       BEQ    DLRTS 
-YESNO  SET    *              + 
-       LEAX   YNBUFF,PCR  +       LDB    ,X+ 
-       LBSR   TINPUT         +       LBSR   PCHAR 
-       BEQ    YESNO          +       DECA 
-                             +       BRA    DLLOOP 
-       LDB    ,X             + 
-       LBSR   UPCASE         +DLRTS  PULS   PC,X,B,A 
-       CMPB   #'O           + 
-       BEQ    YNRTS          +************************************************************************************************************ 
-                             +* OUINON 
-       CMPB   #'N           +* Attend que l'utilisateur presse O ou N 
-       BEQ    YNRTS          +************************************************************************************************************ 
-                             +OUINON SET    * 
-       LBSR   DISPBS         +       LEAX   YNBUFF,PCR 
-       LBSR   BEEP           +       LBSR   TINPUT 
-       BRA    YESNO          +       BEQ    OUINON 
-                             + 
-YNRTS  RTS                   +       LDB    ,X 
-                             +       LBSR   UPCASE 
-TINPUT SET    *              +       CMPB   #'O 
-       PSHS   B,U            +       BEQ    YNRTS 
-       TFR    X,U           + 
-       LDA    ,X++           +       CMPB   #'N 
-       PSHS   X              +       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.1767004559.txt.gz · Last modified: by fool-duplex

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki