home *** CD-ROM | disk | FTP | other *** search
/ Enigma Amiga Life 109 / EnigmaAmiga109CD.iso / software / testi / corsoasm / sorgenti8 / lezione14-9b.s < prev    next >
Text File  |  1995-10-23  |  3KB  |  110 lines

  1.  
  2. ; Corso Asm:    LEZIONE14 - ** (IN)UTILITY DI DIAL DA CLI **
  3.  
  4. ; Questo sorgente va assemblato e reso eseguibile, poichè funziona come
  5. ; comando da CLI: es) > Dial 113[RETURN]
  6. ; Assemblare con 'a' e salvare con 'wo'
  7.  
  8.     SECTION    LEZIONE14-9b,CODE
  9.  
  10. main:    
  11.     moveq    #0,d0
  12.     move.b    (a0)+,d0        ;l'OS punta a0 alla stringa ASCII
  13.                     ;dei parametri dopo il comando CLI
  14.     cmp.b    #10,d0            ;loopa fino al return (ASCII=10)
  15.     beq.b    .esci
  16.     sub.w    #'0',d0
  17.     add.w    d0,d0
  18.     add.w    d0,d0
  19.     move.l    Numbers(pc,d0.w),d0
  20.     bsr.s    Start
  21.     bra.s    main
  22. .esci:    moveq    #0,d0
  23.     rts
  24.  
  25.     even
  26. Numbers:
  27.  
  28. zero:        dc.l    $ee00a7        ; 0
  29. uno:        dc.l    $14100b9    ; 1
  30. due:        dc.l    $14100a7    ; 2
  31. tre:        dc.l    $1410097    ; 3
  32. quattro:    dc.l    $12200b9    ; 4
  33. cinque:        dc.l    $12200a7    ; 5
  34. sei:        dc.l    $1220097    ; 6
  35. sette:        dc.l    $10700b9    ; 7
  36. otto:        dc.l    $10700a7    ; 8
  37. nove:        dc.l    $1070097    ; 9
  38. cancelletto:    dc.l    $ee0097        ; #
  39. asterisco:    dc.l    $ee00b7        ; *
  40.  
  41. ; d0.l =    numero da suonare
  42.  
  43. _LVODisable    EQU    -120
  44. _LVOEnable    EQU    -126
  45.  
  46. Start:
  47.     move.l    4.w,a6
  48.     jsr    _LVODisable(a6)
  49.  
  50.     lea    $dff000,a5    ; Custom base per offsets
  51.  
  52.     move.l    #SMP1,$a0(a5)        ; AUD0LCH - indirizzo del sample
  53.     move.l    #SMP1,$b0(a5)        ; AUD1LCH - indirizzo del sample
  54.     move.l    #SMP1,$c0(a5)        ; AUD2LCH - indirizzo del sample
  55.     move.l    #SMP1,$d0(a5)        ; AUD3LCH - indirizzo del sample
  56.     move.w    #SMP1LEN,$A4(a5)    ; AUD0LEN - lunghezza del sample
  57.     move.w    #SMP1LEN,$B4(a5)    ; AUD1LEN - lunghezza del sample
  58.     move.w    #SMP1LEN,$C4(a5)    ; AUD2LEN - lunghezza del sample
  59.     move.w    #SMP1LEN,$D4(a5)    ; AUD3LEN - lunghezza del sample
  60.     move.w    #64,$A8(a5)        ; AUD0VOL - volume massimo
  61.     move.w    #64,$B8(a5)        ; AUD1VOL - volume massimo
  62.     move.w    #64,$C8(a5)        ; AUD2VOL - volume massimo
  63.     move.w    #64,$D8(a5)        ; AUD3VOL - volume massimo
  64.     move.w    d0,$c6(a5)        ; AUD2PER - period
  65.     move.w    d0,$d6(a5)        ; AUD3PER - period
  66.     swap    d0
  67.     move.w    d0,$a6(a5)        ; AUD0PER - period
  68.     move.w    d0,$b6(a5)        ; AUD1PER - period
  69.  
  70.     move.w    $2(a5),d7
  71.     move.w    #$820f,$96(a5)    ; MACON - abilito il canale DMA audio 0,
  72.                 ; dunque il sample comincia ad essere suonato.
  73.     MOVEQ    #12,D1        ; numero di fotogrammi da aspettare
  74.     MOVEQ    #-1,D0
  75. WBLAN1:    CMP.B    6(A5),d0
  76.     BNE.S    WBLAN1
  77. WBLAN2:    CMP.B    6(A5),D0
  78.     BEQ.S    WBLAN2
  79.     DBRA    D1,WBLAN1
  80.  
  81.     or.w    #$8000,d7
  82.     move.w    #$000f,$96(a5)
  83.     move.w    d7,$96(a5)    ; DMACON - chiudo il canale audio 0 (zitto!)
  84.  
  85.     MOVEQ    #4,D1        ; numero di fotogrammi da aspettare
  86.     MOVEQ    #-1,D0
  87. WBLAN1b:CMP.B    6(A5),d0
  88.     BNE.S    WBLAN1b
  89. WBLAN2b:CMP.B    6(A5),D0
  90.     BEQ.S    WBLAN2b
  91.     DBRA    D1,WBLAN1b
  92.  
  93.     jsr    _LVOEnable(a6)
  94.     rts
  95.  
  96.     SECTION    Tono,DATA_C
  97.  
  98. SMP1:
  99.     dc.b $00,$31,$5a,$75,$7f,$75,$5a,$31,$00,$cf,$a6,$8b,$81,$8b,$a6,$cf
  100. SMP1LEN    equ    (*-SMP1)>>1    ; lunghezza del sample in words
  101.  
  102.     END
  103.  
  104.  
  105. Adesso abbiamo toccato il fondo: ecco a voi una perfetta INUTILITY !!!
  106. Un programmino eseguibile da CLI che serve a comporre numeri telefonici
  107. a toni: non serve a nulla, ma, se non altro, avete imparato come il sistema
  108. operativo passa la linea dei paramentri di un comando CLI...
  109.  
  110.