home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / simtel / sigm / vols000 / vol058 / edit2.sqc / EDIT2.SRC
Encoding:
Text File  |  1985-02-10  |  13.4 KB  |  583 lines

  1. ;               OPTIONS MODE PROCEDURES
  2.  
  3. OPTIONS$MODE:
  4.         CALL    CLR$SCR
  5.         LHLD    TOP
  6.         XCHG
  7.         LXI     H,OPMENU+15
  8.         MVI     A,4
  9.         CALL    INT$TO$STR
  10.         LHLD    X$TOP
  11.         XCHG
  12.         LXI     H,OPMENU+29
  13.         MVI     A,4
  14.         CALL    INT$TO$STR
  15.         WRTLN   OPMENU
  16.         READ    CH
  17.         MOV     B,A
  18.         MIFI    'C',CHORUS,OPMD01
  19.         MIFI    'F',FIND,OPMD01
  20.         MIFI    'L',LABEL,OPMD01
  21.         MIFI    'R',REPEAT,OPMD01
  22.         MIFI    'T',TEMPO,OPMD01
  23.         MIFI    'U',TRANSPOSE,OPMD01
  24.         MIFI    'V',VERIFY,OPMD01
  25.         MIFI    'W',WAVEFORM,OPMD01
  26.         MIFI    'X',CEXIT,OPMD01
  27.         MIFI    FLT,SET$FLAT,OPMD01
  28.         MIFI    '1',SET$FLAT,OPMD01
  29.         MIFI    '#',SET$SHARP,OPMD01
  30.         MIFI    '3',SET$SHARP,OPMD01
  31. OPMD01:
  32.         MVI     A,TRUE          ; SHOW PAGE(TRUE)
  33.         CALL    SHOW$PAGE
  34.         RET
  35. OPMENU: DB      '        used = xxxx, avail = xxxx'
  36.         DB      13,10
  37.         DB      'Type a...'
  38.         DB      13,10
  39.         DB      '  C  to call a chorus'
  40.         DB      13,10
  41.         DB      '  F  to find a label, line or measure'
  42.         DB      13,10
  43.         DB      '  L  to label the current song line'
  44.         DB      13,10
  45.         DB      '  R  to mark a repeat'
  46.         DB      13,10
  47.         DB      '  T  to change the tempo'
  48.         DB      13,10
  49.         DB      '  U  to transpose one or more voices'
  50.         DB      13,10
  51.         DB      '  V  to verify completeness'
  52.         DB      13,10
  53.         DB      '  W  to change waveforms'
  54.         DB      13,10
  55.         DB      '  X  to end a chorus'
  56.         DB      13,10
  57.         DB      '  !  to change the flat signature'
  58.         DB      13,10
  59.         DB      '  #  to change the sharp signature'
  60.         DB      13,10
  61.         DB      '  ...>'
  62.         DB      '$'
  63.  
  64. CHORUS:
  65.         WRTLN   CHRL1
  66.         FCHI    SONG$LINE,15,SPACE
  67.         LXI     H,SONG$LINE
  68.         MVI     M,'*'
  69.         INX     H
  70.         MVI     M,'C'
  71.         CALL    GET$NAME
  72.         CALL    LAST$LINE
  73.         CALL    NSRT$LINE
  74.         CALL    PUT$LINE
  75.         CALL    PUT$LINE
  76.         CALL    NEXT$LINE
  77.         RET
  78. CHRL1:  DB      13,10
  79.         DB      'Enter chorus label  >'
  80.         DB      '$'
  81.         
  82. FIND:
  83.         DMOV    SAVE$CURR,CURR
  84.         DMOV    SAVE$LINE,LINE
  85.         CALL    HEAD$SONG
  86.         WRTLN   FDMENU
  87.         MOVI    XFND,FALSE
  88.         DMVI    I,0
  89.         READ    CH
  90.         MOV     B,A
  91.         MIFI    'L',F$LABEL,FND01
  92.         MIFI    'M',F$MEASURE,FND01
  93.         MIFI    'S',F$LINE,FND01
  94. FND01:
  95.         MCPI    XFND,TRUE
  96.         LXI     D,FNDL1
  97.         CNZ     ERROR
  98.         MOVI    ATTR,0
  99.         DMOV    CURR,SAVE$CURR
  100.         DMOV    LINE,SAVE$LINE
  101.         RET
  102. FDMENU:
  103.         DB      13,10
  104.         DB      'Type a...'
  105.         DB      13,10
  106.         DB      '  L  to find a label'
  107.         DB      13,10
  108.         DB      '  M  to find a measure'
  109.         DB      13,10
  110.         DB      '  S  to find a song line'
  111.         DB      13,10
  112.         DB      '  ...>'
  113.         DB      '$'
  114. FNDL1:  DB      7,'Argument not found.'
  115.         DB      '$'
  116.  
  117. F$LABEL:
  118.         WRTLN   F$LBL1
  119.         REDLN   WNAM,8
  120. F$LB01:
  121.         MCPI    EOS,TRUE
  122.         RZ
  123.         CALL    NEXT$LINE
  124.         CALL    GET$LINE
  125.         CALL    F$LTCH
  126.         MCPI    XFND,TRUE
  127.         JNZ     F$LB01
  128.         DMOV    SAVE$CURR,CURR
  129.         DMOV    SAVE$LINE,LINE
  130.         RET
  131. F$LBL1: DB      13,10
  132.         DB      'Enter label to be found  >'
  133.         DB      '$'
  134.  
  135. F$LTCH:
  136.         MCPI    SONG$LINE+0,'*'
  137.         RNZ
  138.         MCPI    SONG$LINE+1,'L'
  139.         RNZ
  140.         LXI     D,WNAM
  141.         LXI     H,SONG$LINE+3
  142.         LDA     WNAM-1
  143.         MOV     C,A
  144. F$LT01:
  145.         LDAX    D
  146.         CMP     M
  147.         RNZ
  148.         INX     H
  149.         INX     D
  150.         DCR     C
  151.         JNZ     F$LT01
  152.         MOVI    XFND,TRUE
  153.         RET
  154.  
  155. F$MEASURE:
  156.         WRTLN   F$MSL1
  157.         LXI     H,9999
  158.         CALL    GET$INT
  159.         SHLD    I
  160. F$MS01:
  161.         MCPI    EOS,TRUE
  162.         RZ
  163.         CALL    NEXT$LINE
  164.         CALL    GET$LINE
  165.         MCPI    SONG$LINE+0,'*'
  166.         JNZ     F$MS01
  167.         MCPI    SONG$LINE+1,'M'
  168.         JNZ     F$MS01
  169.         LXI     H,SONG$LINE+3
  170.         CALL    STR$TO$INT
  171.         XCHG
  172.         LHLD    I
  173.         CALL    CPHLDE
  174.         JNZ     F$MS01
  175.         MOVI    XFND,TRUE
  176.         DMOV    SAVE$CURR,CURR
  177.         DMOV    SAVE$LINE,LINE
  178.         RET
  179. F$MSL1: DB      13,10
  180.         DB      'Enter measure number to be found  >'
  181.         DB      '$'
  182.  
  183. F$LINE:
  184.         WRTLN   F$LNL1
  185.         LXI     H,9999
  186.         CALL    GET$INT
  187.         SHLD    I
  188. F$LN01:
  189.         MCPI    EOS,TRUE
  190.         RZ
  191.         CALL    NEXT$LINE
  192.         DCP     LINE,I
  193.         JNZ     F$LN01
  194.         MOVI    XFND,TRUE
  195.         DMOV    SAVE$CURR,CURR
  196.         DMOV    SAVE$LINE,LINE
  197.         RET
  198. F$LNL1: DB      13,10
  199.         DB      'Enter line number to be found  >'
  200.         DB      '$'
  201.  
  202. LABEL:
  203.         WRTLN   LBLL1
  204.         FCHI    SONG$LINE,15,SPACE
  205.         LXI     H,SONG$LINE
  206.         MVI     M,'*'
  207.         INX     H
  208.         MVI     M,'L'
  209.         CALL    GET$NAME
  210.         WRTLN   LBLL2
  211.         READ    CH
  212.         CPI     SPACE
  213.         JP      LBL01
  214.         MVI     A,SPACE
  215. LBL01:
  216.         STA     SONG$LINE+12
  217.         CALL    LAST$LINE
  218.         CALL    NSRT$LINE
  219.         CALL    PUT$LINE
  220.         CALL    NEXT$LINE
  221.         RET
  222. LBLL1:  DB      13,10
  223.         DB      'Enter label name (up to 8 char)  >'
  224.         DB      '$'
  225. LBLL2:  DB      13,10
  226.         DB      'Enter label key for PLAY  >'
  227.         DB      '$'
  228.  
  229. REPEAT:
  230.         WRTLN   RPTL1
  231.         FCHI    SONG$LINE,15,SPACE
  232.         LXI     H,SONG$LINE
  233.         MVI     M,'*'
  234.         INX     H
  235.         MVI     M,'R'
  236.         CALL    GET$NAME
  237.         WRTLN   RPTL2
  238.         LXI     H,255
  239.         CALL    GET$INT
  240.         XCHG
  241.         LXI     H,SONG$LINE+12
  242.         MVI     A,3
  243.         CALL    INT$TO$STR
  244.         CALL    LAST$LINE
  245.         CALL    NSRT$LINE
  246.         CALL    PUT$LINE
  247.         CALL    NEXT$LINE
  248.         RET
  249. RPTL1:  DB      13,10
  250.         DB      'Enter repeat label  >'
  251.         DB      '$'
  252. RPTL2:  DB      13,10
  253.         DB      'Enter number of repeats (1..255)  >'
  254.         DB      '$'
  255.  
  256. TEMPO:
  257.         WRTLN   TMPOL1
  258.         FCHI    SONG$LINE,15,SPACE
  259.         LXI     H,SONG$LINE
  260.         MVI     M,'*'
  261.         INX     H
  262.         MVI     M,'T'
  263.         LXI     H,999
  264.         CALL    GET$INT
  265.         XCHG
  266.         LXI     H,SONG$LINE+3
  267.         MVI     A,3
  268.         CALL    INT$TO$STR
  269.         CALL    LAST$LINE
  270.         CALL    NSRT$LINE
  271.         CALL    PUT$LINE
  272.         CALL    NEXT$LINE
  273.         RET
  274. TMPOL1: DB      13,10
  275.         DB      'Enter tempo in number of'
  276.         DB      13,10
  277.         DB      'quarter notes per minute  >'
  278.         DB      '$'
  279.  
  280. TRANSPOSE:
  281.         FCHI    SONG$LINE,15,SPACE
  282.         LXI     H,SONG$LINE
  283.         MVI     M,'*'
  284.         INX     H
  285.         MVI     M,'U'
  286. TRSP01:
  287.         WRTLN   TRSPL1
  288.         READ    SONG$LINE+2
  289.         MCPI    SONG$LINE+2,'C'
  290.         JZ      TRSP02
  291.         MCPI    SONG$LINE+2,'M'
  292.         JNZ     TRSP01
  293. TRSP02:
  294.         DMVI    I,2
  295. TRSP03:
  296.         LHLD    I
  297.         DCX     H
  298.         XCHG
  299.         LXI     H,TRSPL3
  300.         MVI     A,1
  301.         CALL    INT$TO$STR
  302.         WRTLN   TRSPL2
  303.         MOVI    TRSGN,'+'
  304. TRSP04:
  305.         REDLN   TRSPL5,8
  306.         LXI     H,TRSPL5
  307.         LDA     TRSPL5
  308.         CPI     '+'
  309.         JZ      TRSP05
  310.         CPI     '-'
  311.         JNZ     TRSP06
  312. TRSP05:
  313.         STA     TRSGN
  314.         INX     H
  315. TRSP06:
  316.         CALL    STR$TO$INT
  317.         PUSH    H
  318.         LHLD    I
  319.         DCX     H
  320.         PUSH    H
  321.         POP     D
  322.         DAD     H
  323.         DAD     D
  324.         LXI     D,SONG$LINE
  325.         DAD     D
  326.         LDA     TRSGN
  327.         MOV     M,A
  328.         INX     H
  329.         POP     D
  330.         MVI     A,2
  331.         CALL    INT$TO$STR
  332.         NEXT    TRSP03,I,HI$VOICE
  333.         CALL    LAST$LINE
  334.         CALL    NSRT$LINE
  335.         CALL    PUT$LINE
  336.         CALL    NEXT$LINE
  337.         RET
  338. TRSPL1: DB      13,10
  339.         DB      13,10
  340.         DB      'Type a...'
  341.         DB      13,10
  342.         DB      '  C for chromatic'
  343.         DB      13,10
  344.         DB      '  M for microtonal'
  345.         DB      13,10
  346.         DB      '  ...>'
  347.         DB      '$'
  348. TRSPL2: DB      13,10
  349.         DB      'Enter transpose factor'
  350.         DB      13,10
  351.         DB      'for voice '
  352. TRSPL3: DB      '   (+/- tt) >'
  353.         DB      '$'
  354. TRSPL4: DB      13,10
  355.         DB      '+ or - sign first  >'
  356.         DB      '$'
  357.         DB      8
  358.         DS      1
  359. TRSPL5: DS      8
  360. TRSGN:  DS      1
  361.  
  362. VERIFY:
  363.         CALL    CLR$SCR
  364.         WRTLN   VRFYL1
  365.         CALL    HEAD$SONG
  366.         CALL    NEXT$LINE
  367. VRFY01:
  368.         CALL    GET$LINE
  369.         MCPI    SONG$LINE,'.'
  370.         JNZ     VRFY08
  371.         MOVI    VOICE,-1
  372. VRFY02:
  373.         MINC    VOICE
  374.         MOVI    ATTR,-1
  375. VRFY03:
  376.         MINC    ATTR
  377.         MCPI    VOICE,0
  378.         JNZ     VRFY04
  379.         MCPI    ATTR,1
  380.         JP      VRFY07
  381. VRFY04:
  382.         MCP     VOICE,HI$VOICE
  383.         JZ      VRFY08
  384.         LXI     H,SONG$LINE
  385.         LDA     ATTR
  386.         MOV     E,A
  387.         LDA     VOICE
  388.         ORA     A
  389.         JNZ     VRFY05
  390.         INR     E
  391. VRFY05:
  392.         CALL    COMP$SONG
  393.         MCPI    ATTR,0
  394.         JNZ     VRFY06
  395.         MOV     A,M
  396.         CPI     'R'
  397.         JZ      VRFY07
  398. VRFY06:
  399.         MOV     A,M
  400.         CPI     SPACE
  401.         RZ
  402.         MCPI    ATTR,2          ; NEXT ATTRIBUTE
  403.         JNZ     VRFY03
  404. VRFY07:
  405.         MCP     VOICE,HI$VOICE  ; NEXT VOICE
  406.         JNZ     VRFY02
  407. VRFY08:
  408.         CALL    NEXT$LINE       ; NEXT SONG LINE
  409.         MCPI    EOS,TRUE
  410.         JNZ     VRFY01
  411.         CALL    HEAD$SONG
  412.         MOVI    VOICE,0
  413.         MOVI    ATTR,0
  414.         RET
  415. VRFYL1: DB      'Verify in progress. Please stand by.'
  416.         DB      '$'
  417.  
  418. WAVEFORM:
  419.         FCHI    SONG$LINE,15,SPACE
  420.         LXI     H,SONG$LINE
  421.         MVI     M,'*'
  422.         INX     H
  423.         MVI     M,'W'
  424.         DMVI    I,2
  425. WVFR01:
  426.         LHLD    I
  427.         DCX     H
  428.         XCHG
  429.         LXI     H,WVFRL2
  430.         MVI     A,1
  431.         CALL    INT$TO$STR
  432.         WRTLN   WVFRL1
  433.         LXI     H,16
  434.         CALL    GET$INT
  435.         PUSH    H
  436.         LHLD    I
  437.         DCX     H
  438.         PUSH    H
  439.         POP     D
  440.         DAD     H
  441.         DAD     D
  442.         LXI     D,SONG$LINE
  443.         DAD     D
  444.         POP     D
  445.         MVI     A,2
  446.         CALL    INT$TO$STR
  447.         NEXT    WVFR01,I,HI$VOICE
  448.         CALL    LAST$LINE
  449.         CALL    NSRT$LINE
  450.         CALL    PUT$LINE
  451.         CALL    NEXT$LINE
  452.         RET
  453. WVFRL1: DB      13,10
  454.         DB      'Enter waveform table number'
  455.         DB      13,10
  456.         DB      'for voice '
  457. WVFRL2: DB      '    >'
  458.         DB      '$'
  459.  
  460. CEXIT:
  461.         FCHI    SONG$LINE,15,SPACE
  462.         LXI     H,SONG$LINE
  463.         MVI     M,'*'
  464.         INX     H
  465.         MVI     M,'X'
  466.         CALL    LAST$LINE
  467.         CALL    NSRT$LINE
  468.         CALL    PUT$LINE
  469.         CALL    NEXT$LINE
  470.         RET
  471.  
  472. SET$FLAT:
  473.         MOVI    FLAT,FALSE
  474.         WRTLN   STFTL1
  475.         GTCH    CH
  476.         MCPI    CH,'1'
  477.         JM      STFT01
  478.         MCPI    CH,'8'
  479.         JM      STFT04
  480. STFT01:
  481.         MCP     CH,RETURN
  482.         JZ      STFT06
  483.         MCPI    CH,'A'
  484.         JM      STFT03
  485.         MCPI    CH,'H'
  486.         JP      STFT03
  487.         WRITE   CH
  488.         CALL    STFTST
  489. STFT02:
  490.         WRTLN   STFTL3
  491.         GTCH    CH
  492.         JMP     STFT01
  493. STFT03:
  494.         WRTLN   STFTL2
  495.         JMP     STFT02
  496. STFT04:
  497.         ANI     0FH
  498.         MOV     D,A
  499.         LXI     H,STFTL4
  500. STFT05:
  501.         MOV     A,M
  502.         STA     CH
  503.         CALL    STFTST
  504.         INX     H
  505.         DCR     D
  506.         JNZ     STFT05
  507. STFT06:
  508.         MOVE    M$FLAT,FLAT
  509.         RET
  510. STFTST:
  511.         LDA     FLAT
  512.         MOV     B,A
  513.         LDA     CH
  514.         CALL    FIND$BIT
  515.         ORA     B
  516.         STA     FLAT
  517.         RET
  518. STFTL1: DB      13,10
  519.         DB      'Enter flat signature (1..7,A..G)  >'
  520.         DB      '$'
  521. STFTL2: DB      7
  522.         DB      '$'
  523. STFTL3: DB      ','
  524.         DB      '$'
  525. STFTL4: DB      'BEADGCF'
  526.  
  527. SET$SHARP:
  528.         MOVI    SHARP,FALSE
  529.         WRTLN   STSRL1
  530.         GTCH    CH
  531.         MCPI    CH,'1'
  532.         JM      STSR01
  533.         MCPI    CH,'8'
  534.         JM      STSR04
  535. STSR01:
  536.         MCP     CH,RETURN
  537.         JZ      STSR06
  538.         MCPI    CH,'A'
  539.         JM      STSR03
  540.         MCPI    CH,'H'
  541.         JP      STSR03
  542.         WRITE   CH
  543.         CALL    STSRST
  544. STSR02:
  545.         WRTLN   STSRL3
  546.         GTCH    CH
  547.         JMP     STSR01
  548. STSR03:
  549.         WRTLN   STSRL2
  550.         JMP     STSR02
  551. STSR04:
  552.         ANI     0FH
  553.         MOV     D,A
  554.         LXI     H,STSRL4
  555. STSR05:
  556.         MOV     A,M
  557.         STA     CH
  558.         CALL    STSRST
  559.         INX     H
  560.         DCR     D
  561.         JNZ     STSR05
  562. STSR06:
  563.         MOVE    M$SHARP,SHARP
  564.         RET
  565. STSRST:
  566.         LDA     SHARP
  567.         MOV     B,A
  568.         LDA     CH
  569.         CALL    FIND$BIT
  570.         ORA     B
  571.         STA     SHARP
  572.         RET
  573. STSRL1: DB      13,10
  574.         DB      'Enter sharp signature (1..7,A..G)  >'
  575.         DB      '$'
  576. STSRL2: DB      7
  577.         DB      '$'
  578. STSRL3: DB      ','
  579.         DB      '$'
  580. STSRL4: DB      'FCGDAEB'
  581.         
  582.         
  583.