home *** CD-ROM | disk | FTP | other *** search
/ Crawly Crypt Collection 2 / crawlyvol2.bin / ste / cpu_mod / cpu_modx.s < prev    next >
Text File  |  1989-12-29  |  5KB  |  238 lines

  1. ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  2. ;~~~ Shell *.TTP type for the routine CPU_MOD.BIN ~~~
  3. ;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  4. ;This routine is relocatable , reserve 70000 bytes free after the code
  5. ;reserve 1000 bytes free after the module
  6. ;You must be in supervisor mode.
  7.  
  8.     OUTPUT    CPU_MODX.TTP
  9.  
  10. ;-------------------------------------------------------------------------------
  11. ;TOS-Type call:
  12.  
  13. ;Error.B = CPU_MOD( Cmd.W ,0.W , Mo_St.W , Freq.W , MOD_Ad.L , MOD_Ln.L )
  14. ;D0            SP+4     SP+8       SP+10    SP+12      SP+16
  15.  
  16. ;Error= 0:No error
  17. ;      -1:Error (Power OFF ? , Incorrect module ? , No module ?)
  18.  
  19. ;Cmd=     0:-
  20. ;     1:Power OFF/ON                     [Esc]
  21. ;     2:Open new module at address=MOD_Ad and length=MOD_Ln
  22. ;     3:Pause/Play                        [SP]
  23. ;     4:Stop                         [-]
  24. ;     5:Song position Reverse Search             [(]
  25. ;     6:Song position Forward Search             [)]
  26. ;     7:Fast Forward OFF/ON                    [+]
  27. ;     8:Repeat mode OFF/ON                    [.]
  28.  
  29. ;Mo_St= 0:-
  30. ;    1:Mono/Stereo                        [*]
  31.  
  32. ;Freq=    0:-
  33. ;    1: 6258 Hz (Default)                    [0]
  34. ;    2:12517 Hz                        [1]
  35. ;    3:25033 Hz                        [2]
  36. ;    4:50066 Hz                        [3]
  37.  
  38. ;-------------------------------------------------------------------------------
  39.  
  40. ModuleLength=512*1024
  41.  
  42. INIT: ;LOADING
  43.     MOVEA.L 4(SP),A6
  44.     ADDA    #128+1,A6
  45.     ;FILE_OPEN
  46.       CLR      -(SP)
  47.       PEA      (A6)
  48.       MOVE      #61,-(SP)
  49.       TRAP      #1
  50.       ADDQ      #8,SP
  51.     MOVE    D0,D7
  52.     BMI    FIN
  53.     LEA    MODULE,A6
  54.     ;FILE_READ
  55.       PEA      (A6)
  56.       MOVE.L  #ModuleLength,-(SP)
  57.       MOVE      D7,-(SP)
  58.       MOVE      #63,-(SP)
  59.       TRAP      #1
  60.       ADDA      #12,SP
  61.     MOVE.L    D0,D6
  62.     ;FILE_CLOSE
  63.       MOVE      D7,-(SP)
  64.       MOVE      #62,-(SP)
  65.       TRAP      #1
  66.       ADDQ      #4,SP
  67.     ;PROG_SUPERMODE
  68.       CLR.L   -(SP)
  69.       MOVE      #32,-(SP)
  70.       TRAP      #1
  71.       ADDQ      #6,SP
  72.       MOVEA.L D0,A5 ;Saved
  73.  
  74.     MOVE.B    $484,CLAVIER
  75.     ANDI.B    #%11111000,$484
  76.  
  77.     LEA    CPU_MOD(PC),A4
  78.  
  79.     MOVE    #3,-(SP) ;25 KHz
  80.     MOVE    #1,-(SP) ;ST
  81.     CLR    -(SP)
  82.     MOVE    #1,-(SP) ;Power ON
  83.     JSR    (A4)
  84.     ADDQ    #8,SP
  85.  
  86.     MOVE.L    D6,-(SP)
  87.     PEA    (A6)
  88.     CLR    -(SP)
  89.     CLR    -(SP)
  90.     CLR    -(SP)
  91.     MOVE    #2,-(SP) ;Open MOD
  92.     JSR    (A4)
  93.     ADDA    #16,SP
  94.  
  95.     TST.B    D0
  96.     BNE    SORTIE
  97.  ;Extract the module name
  98.     LEA    MODULE,A0
  99.     LEA    NomMOD+10,A1
  100.     MOVEQ    #20-1,D0
  101. .1    MOVE.B    (A0)+,D1
  102.     BEQ.S    .aff
  103.     MOVE.B    D1,(A1)+
  104.     DBRA    D0,.1
  105.  
  106. .aff ;Print the page
  107.     PEA    PAGE(PC)
  108.     MOVE    #9,-(SP)
  109.     TRAP    #1
  110.     ADDQ    #6,SP
  111.     BRA.S    PLAY
  112.  
  113. ATT: ;Wait
  114.       ;A key ?
  115.     MOVE    #2,-(SP)
  116.     MOVE    #1,-(SP)
  117.     TRAP    #13
  118.     ADDQ    #4,SP
  119.     TST    D0
  120.     BEQ    ATT
  121.     MOVE    #2,-(SP)
  122.     MOVE    #2,-(SP)
  123.     TRAP    #13
  124.     ADDQ    #4,SP
  125.  
  126.     CMPI.B    #27,D0 ;Esc
  127.     BEQ    SORTIE
  128.     CMPI.B    #' ',D0
  129.     BEQ.S    PLAY
  130.     CMPI.B    #'-',D0
  131.     BEQ.S    STOP
  132.     CMPI.B    #'(',D0
  133.     BEQ.S    SGRS
  134.     CMPI.B    #')',D0
  135.     BEQ.S    SGFS
  136.     CMPI.B    #'+',D0
  137.     BEQ.S    FAST
  138.     CMPI.B    #'.',D0
  139.     BEQ.S    REPEAT
  140.     CMPI.B    #'*',D0
  141.     BEQ.S    MO_ST
  142.     CMPI.B    #'0',D0
  143.     BLO    ATT
  144.     CMPI.B    #'3',D0
  145.     BLS.S    FREQ
  146.     BRA    ATT
  147.  
  148. CMD    CLR    -(SP)
  149.     CLR    -(SP)
  150.     CLR    -(SP)
  151.     MOVE    D0,-(SP)
  152.     JSR    (A4)
  153.     ADDQ    #8,SP
  154.     BRA    ATT
  155.  
  156. PLAY    MOVEQ    #3,D0
  157.     BRA    CMD
  158.  
  159. STOP    MOVEQ    #4,D0
  160.     BRA    CMD
  161.  
  162. SGRS    MOVEQ    #5,D0
  163.     BRA    CMD
  164.  
  165. SGFS    MOVEQ    #6,D0
  166.     BRA    CMD
  167.  
  168. FAST    MOVEQ    #7,D0
  169.     BRA    CMD
  170.  
  171. REPEAT    MOVEQ    #8,D0
  172.     BRA    CMD
  173.  
  174. HARD    MOVE    D2,-(SP)
  175.     MOVE    D1,-(SP)
  176.     MOVE    D0,-(SP)
  177.     CLR    -(SP)
  178.     JSR    (A4)
  179.     ADDQ    #8,SP
  180.     BRA    ATT
  181.  
  182. MO_ST    MOVEQ    #0,D0
  183.     MOVEQ    #1,D1
  184.     MOVEQ    #0,D2
  185.     BRA    HARD
  186.  
  187. FREQ    ANDI    #$FF,D0
  188.     SUBI    #'0',D0
  189.     MOVEQ    #4,D2
  190.     SUB    D0,D2
  191.     MOVEQ    #0,D0
  192.     MOVEQ    #0,D1
  193.     BRA    HARD
  194.  
  195. SORTIE    MOVE    #1,-(SP) ;Power OFF
  196.     JSR    (A4)
  197.     ADDQ    #2,SP
  198.  
  199.     MOVE.B CLAVIER,$484
  200.  
  201.     ;PROG_SUPERMODE
  202.       PEA      (A5)
  203.       MOVE      #32,-(SP)
  204.       TRAP      #1
  205.       ADDQ      #6,SP
  206.  
  207. FIN:    ;PROG_END
  208.       CLR    -(SP)
  209.       TRAP    #1
  210.  
  211.  DATA
  212. PAGE:    DC.B 27,'f',27,'w',27,'q',27,'E'
  213. NomMOD    DC.B '<<<<<<<<<              >>>>>>>>>',13,10,13,10
  214.     DC.B '       Quit             [Esc]',13,10
  215.     DC.B '       Pause/',27,'p','Play',27,'q','            [SP]',13,10
  216.     DC.B '       Stop             [-]',13,10
  217.     DC.B '       Song position Reverse Search [(]',13,10
  218.     DC.B '       Song position Forward Search [)]',13,10
  219.     DC.B '       Fast Forward mode ',27,'p','OFF',27,'q','/ON     [+]',13,10
  220.     DC.B '       Repeat mode ',27,'p','OFF',27,'q','/ON        [.]',13,10
  221.     DC.B '       Mono/',27,'p','Stereo',27,'q','            [*]',13,10
  222.     DC.B '       50066 Hz            [0]',13,10
  223.     DC.B '       ',27,'p','25033 Hz',27,'q','             [1]',13,10
  224.     DC.B '       12517 Hz            [2]',13,10
  225.     DC.B '        6258 Hz            [3]',13,10,13,10
  226.     DC.B '       ',27,'p','REVERSE VIDEO',27,'q',': BY DEFAULT',13,10
  227.     DC.B '<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>',13,10
  228.     DC.B '<<<      Code: Patrick RUIZ       >>>',13,10
  229.     DC.B '<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>',13,10,0
  230.  
  231. CPU_MOD: INCBIN "CPU_MOD.BIN"
  232.  
  233.  BSS
  234.     DS.B 70000 ;for CPU_MOD.BIN
  235. MODULE: DS.B ModuleLength+1000
  236. CLAVIER: DS.B 1
  237.  END
  238.