pintcat

afswitch (switches audio filter on Amiga computers)

Apr 4th, 2020 (edited)
1,118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.         SECTION AFSWITCH,CODE
  2.  
  3.         movem.l d1-d7/a1-a6,-(a7)
  4.         bset    #5,(a0)     ; Argument in Kleinuchstaben ändern
  5.         cmpi.b  #"e",(a0)   ; Argument="e": Filter/LED an
  6.         beq.b   ENABL
  7.         cmpi.b  #"d",(a0)   ; Argument="d": Filter/LED aus
  8.         beq.b   DISABL
  9.         cmpi.b  #"s",(a0)   ; Argument="s": Filter/LED umschalten
  10.         beq.b   SWITCH
  11.         cmpi.b  #"h",(a0)   ; Argument="h": Help-Text anzeigen
  12.         beq.b   HELP
  13.         cmpi.b  #"?",(a0)   ; Argument="?": Help-Text anzeigen
  14.         beq.b   HELP
  15.         bra.b   EXIT        ; falsches oder gar kein Argument: Ende
  16.  
  17. ENABL:  bclr    #1,$bfe001  ; löscht Bit 1 von $BFE001 -> Filter an
  18.         bra.b   EXIT
  19.  
  20. DISABL: bset    #1,$bfe001  ; setzt Bit 1 von $BFE001 -> Filter aus
  21.         bra.b   EXIT
  22.  
  23. SWITCH: bchg    #1,$bfe001  ; ändert Bit 1 von $BFE001
  24.  
  25. EXIT:   moveq   #0,d0
  26.         btst    #1,$bfe001  ; Audiofilter an?
  27.         beq.b   .OUT        ; wenn ja, Ende
  28.         moveq   #5,d0       ; sonst Exit mit Returncode 5
  29. .OUT:   movem.l (a7)+,d1-d7/a1-a6
  30.         rts
  31.  
  32. HELP:   move.4.w,a6      ; Adresse der Execbase in A6
  33.         cmpi.w  #$1f,$14(a6)    ; exec.library < V.31 (Kick1.1)?
  34.         bmi.b   EXIT        ; wenn ja, Ende
  35.         lea LNAME(PC),a1    ; A1 zeigt auf LibName
  36.         moveq   #0,d0       ; DOS-Version nicht prüfen
  37.         jsr -$228(a6)   ; OpenLibrary (dos.library öffnen)
  38.         move.l  d0,d4       ; DOS-Base in D4 sichern
  39.         movea.l d4,a5       ; ...und in A5
  40.         jsr -$3c(a5)    ; LVOOutput (hole Standart-Output)
  41.         move.l  d0,d1       ; sichere dessen Adresse in D1
  42.         lea MSG+5(PC),a0
  43.         move.l  a0,d2       ; Help-Text in D2 sichern
  44.         move.l  #LNAME-MSG-5,d3 ; Größe des Text-Puffers in D3
  45.         jsr -$30(a5)    ; LVOWrite (schreibe in Standart-Output)
  46.         movea.l d4,a1       ; DOS-Base in A1
  47.         jsr -$19e(a6)   ; CloseLibrary (schließe dos.library)
  48.         bra.b   EXIT
  49.  
  50. MSG:    dc.b    "$VER:AFSwitch 1.5 - switches audio filter (04.04.2020) © P.Düren",10,10
  51.         dc.b    "Options are:   E   Enable filter",10
  52.         dc.b    "       D   Disable filter",10
  53.         dc.b    "       S   Switch current state",10
  54.         dc.b    "       H or ?  this text... obviously",10,10
  55. LNAME:  dc.b    "dos.library",0
  56.  
  57.  
  58.  
  59. ;--- Testskript zum Abfragen des Returncodes: --------------------------
  60. ;
  61. ;echo "Audio filter is " NOLINE
  62. ;afs
  63. ;if WARN
  64. ;   echo "off."
  65. ;else
  66. ;   echo "on."
  67. ;endif
  68. ;
  69. ;-----------------------------------------------------------------------
  70.  
Add Comment
Please, Sign In to add comment