home *** CD-ROM | disk | FTP | other *** search
- ; OPTIONS MODE PROCEDURES
-
- OPTIONS$MODE:
- CALL CLR$SCR
- LHLD TOP
- XCHG
- LXI H,OPMENU+15
- MVI A,4
- CALL INT$TO$STR
- LHLD X$TOP
- XCHG
- LXI H,OPMENU+29
- MVI A,4
- CALL INT$TO$STR
- WRTLN OPMENU
- READ CH
- MOV B,A
- MIFI 'C',CHORUS,OPMD01
- MIFI 'F',FIND,OPMD01
- MIFI 'L',LABEL,OPMD01
- MIFI 'R',REPEAT,OPMD01
- MIFI 'T',TEMPO,OPMD01
- MIFI 'U',TRANSPOSE,OPMD01
- MIFI 'V',VERIFY,OPMD01
- MIFI 'W',WAVEFORM,OPMD01
- MIFI 'X',CEXIT,OPMD01
- MIFI FLT,SET$FLAT,OPMD01
- MIFI '1',SET$FLAT,OPMD01
- MIFI '#',SET$SHARP,OPMD01
- MIFI '3',SET$SHARP,OPMD01
- OPMD01:
- MVI A,TRUE ; SHOW PAGE(TRUE)
- CALL SHOW$PAGE
- RET
- OPMENU: DB ' used = xxxx, avail = xxxx'
- DB 13,10
- DB 'Type a...'
- DB 13,10
- DB ' C to call a chorus'
- DB 13,10
- DB ' F to find a label, line or measure'
- DB 13,10
- DB ' L to label the current song line'
- DB 13,10
- DB ' R to mark a repeat'
- DB 13,10
- DB ' T to change the tempo'
- DB 13,10
- DB ' U to transpose one or more voices'
- DB 13,10
- DB ' V to verify completeness'
- DB 13,10
- DB ' W to change waveforms'
- DB 13,10
- DB ' X to end a chorus'
- DB 13,10
- DB ' ! to change the flat signature'
- DB 13,10
- DB ' # to change the sharp signature'
- DB 13,10
- DB ' ...>'
- DB '$'
-
- CHORUS:
- WRTLN CHRL1
- FCHI SONG$LINE,15,SPACE
- LXI H,SONG$LINE
- MVI M,'*'
- INX H
- MVI M,'C'
- CALL GET$NAME
- CALL LAST$LINE
- CALL NSRT$LINE
- CALL PUT$LINE
- CALL PUT$LINE
- CALL NEXT$LINE
- RET
- CHRL1: DB 13,10
- DB 'Enter chorus label >'
- DB '$'
-
- FIND:
- DMOV SAVE$CURR,CURR
- DMOV SAVE$LINE,LINE
- CALL HEAD$SONG
- WRTLN FDMENU
- MOVI XFND,FALSE
- DMVI I,0
- READ CH
- MOV B,A
- MIFI 'L',F$LABEL,FND01
- MIFI 'M',F$MEASURE,FND01
- MIFI 'S',F$LINE,FND01
- FND01:
- MCPI XFND,TRUE
- LXI D,FNDL1
- CNZ ERROR
- MOVI ATTR,0
- DMOV CURR,SAVE$CURR
- DMOV LINE,SAVE$LINE
- RET
- FDMENU:
- DB 13,10
- DB 'Type a...'
- DB 13,10
- DB ' L to find a label'
- DB 13,10
- DB ' M to find a measure'
- DB 13,10
- DB ' S to find a song line'
- DB 13,10
- DB ' ...>'
- DB '$'
- FNDL1: DB 7,'Argument not found.'
- DB '$'
-
- F$LABEL:
- WRTLN F$LBL1
- REDLN WNAM,8
- F$LB01:
- MCPI EOS,TRUE
- RZ
- CALL NEXT$LINE
- CALL GET$LINE
- CALL F$LTCH
- MCPI XFND,TRUE
- JNZ F$LB01
- DMOV SAVE$CURR,CURR
- DMOV SAVE$LINE,LINE
- RET
- F$LBL1: DB 13,10
- DB 'Enter label to be found >'
- DB '$'
-
- F$LTCH:
- MCPI SONG$LINE+0,'*'
- RNZ
- MCPI SONG$LINE+1,'L'
- RNZ
- LXI D,WNAM
- LXI H,SONG$LINE+3
- LDA WNAM-1
- MOV C,A
- F$LT01:
- LDAX D
- CMP M
- RNZ
- INX H
- INX D
- DCR C
- JNZ F$LT01
- MOVI XFND,TRUE
- RET
-
- F$MEASURE:
- WRTLN F$MSL1
- LXI H,9999
- CALL GET$INT
- SHLD I
- F$MS01:
- MCPI EOS,TRUE
- RZ
- CALL NEXT$LINE
- CALL GET$LINE
- MCPI SONG$LINE+0,'*'
- JNZ F$MS01
- MCPI SONG$LINE+1,'M'
- JNZ F$MS01
- LXI H,SONG$LINE+3
- CALL STR$TO$INT
- XCHG
- LHLD I
- CALL CPHLDE
- JNZ F$MS01
- MOVI XFND,TRUE
- DMOV SAVE$CURR,CURR
- DMOV SAVE$LINE,LINE
- RET
- F$MSL1: DB 13,10
- DB 'Enter measure number to be found >'
- DB '$'
-
- F$LINE:
- WRTLN F$LNL1
- LXI H,9999
- CALL GET$INT
- SHLD I
- F$LN01:
- MCPI EOS,TRUE
- RZ
- CALL NEXT$LINE
- DCP LINE,I
- JNZ F$LN01
- MOVI XFND,TRUE
- DMOV SAVE$CURR,CURR
- DMOV SAVE$LINE,LINE
- RET
- F$LNL1: DB 13,10
- DB 'Enter line number to be found >'
- DB '$'
-
- LABEL:
- WRTLN LBLL1
- FCHI SONG$LINE,15,SPACE
- LXI H,SONG$LINE
- MVI M,'*'
- INX H
- MVI M,'L'
- CALL GET$NAME
- WRTLN LBLL2
- READ CH
- CPI SPACE
- JP LBL01
- MVI A,SPACE
- LBL01:
- STA SONG$LINE+12
- CALL LAST$LINE
- CALL NSRT$LINE
- CALL PUT$LINE
- CALL NEXT$LINE
- RET
- LBLL1: DB 13,10
- DB 'Enter label name (up to 8 char) >'
- DB '$'
- LBLL2: DB 13,10
- DB 'Enter label key for PLAY >'
- DB '$'
-
- REPEAT:
- WRTLN RPTL1
- FCHI SONG$LINE,15,SPACE
- LXI H,SONG$LINE
- MVI M,'*'
- INX H
- MVI M,'R'
- CALL GET$NAME
- WRTLN RPTL2
- LXI H,255
- CALL GET$INT
- XCHG
- LXI H,SONG$LINE+12
- MVI A,3
- CALL INT$TO$STR
- CALL LAST$LINE
- CALL NSRT$LINE
- CALL PUT$LINE
- CALL NEXT$LINE
- RET
- RPTL1: DB 13,10
- DB 'Enter repeat label >'
- DB '$'
- RPTL2: DB 13,10
- DB 'Enter number of repeats (1..255) >'
- DB '$'
-
- TEMPO:
- WRTLN TMPOL1
- FCHI SONG$LINE,15,SPACE
- LXI H,SONG$LINE
- MVI M,'*'
- INX H
- MVI M,'T'
- LXI H,999
- CALL GET$INT
- XCHG
- LXI H,SONG$LINE+3
- MVI A,3
- CALL INT$TO$STR
- CALL LAST$LINE
- CALL NSRT$LINE
- CALL PUT$LINE
- CALL NEXT$LINE
- RET
- TMPOL1: DB 13,10
- DB 'Enter tempo in number of'
- DB 13,10
- DB 'quarter notes per minute >'
- DB '$'
-
- TRANSPOSE:
- FCHI SONG$LINE,15,SPACE
- LXI H,SONG$LINE
- MVI M,'*'
- INX H
- MVI M,'U'
- TRSP01:
- WRTLN TRSPL1
- READ SONG$LINE+2
- MCPI SONG$LINE+2,'C'
- JZ TRSP02
- MCPI SONG$LINE+2,'M'
- JNZ TRSP01
- TRSP02:
- DMVI I,2
- TRSP03:
- LHLD I
- DCX H
- XCHG
- LXI H,TRSPL3
- MVI A,1
- CALL INT$TO$STR
- WRTLN TRSPL2
- MOVI TRSGN,'+'
- TRSP04:
- REDLN TRSPL5,8
- LXI H,TRSPL5
- LDA TRSPL5
- CPI '+'
- JZ TRSP05
- CPI '-'
- JNZ TRSP06
- TRSP05:
- STA TRSGN
- INX H
- TRSP06:
- CALL STR$TO$INT
- PUSH H
- LHLD I
- DCX H
- PUSH H
- POP D
- DAD H
- DAD D
- LXI D,SONG$LINE
- DAD D
- LDA TRSGN
- MOV M,A
- INX H
- POP D
- MVI A,2
- CALL INT$TO$STR
- NEXT TRSP03,I,HI$VOICE
- CALL LAST$LINE
- CALL NSRT$LINE
- CALL PUT$LINE
- CALL NEXT$LINE
- RET
- TRSPL1: DB 13,10
- DB 13,10
- DB 'Type a...'
- DB 13,10
- DB ' C for chromatic'
- DB 13,10
- DB ' M for microtonal'
- DB 13,10
- DB ' ...>'
- DB '$'
- TRSPL2: DB 13,10
- DB 'Enter transpose factor'
- DB 13,10
- DB 'for voice '
- TRSPL3: DB ' (+/- tt) >'
- DB '$'
- TRSPL4: DB 13,10
- DB '+ or - sign first >'
- DB '$'
- DB 8
- DS 1
- TRSPL5: DS 8
- TRSGN: DS 1
-
- VERIFY:
- CALL CLR$SCR
- WRTLN VRFYL1
- CALL HEAD$SONG
- CALL NEXT$LINE
- VRFY01:
- CALL GET$LINE
- MCPI SONG$LINE,'.'
- JNZ VRFY08
- MOVI VOICE,-1
- VRFY02:
- MINC VOICE
- MOVI ATTR,-1
- VRFY03:
- MINC ATTR
- MCPI VOICE,0
- JNZ VRFY04
- MCPI ATTR,1
- JP VRFY07
- VRFY04:
- MCP VOICE,HI$VOICE
- JZ VRFY08
- LXI H,SONG$LINE
- LDA ATTR
- MOV E,A
- LDA VOICE
- ORA A
- JNZ VRFY05
- INR E
- VRFY05:
- CALL COMP$SONG
- MCPI ATTR,0
- JNZ VRFY06
- MOV A,M
- CPI 'R'
- JZ VRFY07
- VRFY06:
- MOV A,M
- CPI SPACE
- RZ
- MCPI ATTR,2 ; NEXT ATTRIBUTE
- JNZ VRFY03
- VRFY07:
- MCP VOICE,HI$VOICE ; NEXT VOICE
- JNZ VRFY02
- VRFY08:
- CALL NEXT$LINE ; NEXT SONG LINE
- MCPI EOS,TRUE
- JNZ VRFY01
- CALL HEAD$SONG
- MOVI VOICE,0
- MOVI ATTR,0
- RET
- VRFYL1: DB 'Verify in progress. Please stand by.'
- DB '$'
-
- WAVEFORM:
- FCHI SONG$LINE,15,SPACE
- LXI H,SONG$LINE
- MVI M,'*'
- INX H
- MVI M,'W'
- DMVI I,2
- WVFR01:
- LHLD I
- DCX H
- XCHG
- LXI H,WVFRL2
- MVI A,1
- CALL INT$TO$STR
- WRTLN WVFRL1
- LXI H,16
- CALL GET$INT
- PUSH H
- LHLD I
- DCX H
- PUSH H
- POP D
- DAD H
- DAD D
- LXI D,SONG$LINE
- DAD D
- POP D
- MVI A,2
- CALL INT$TO$STR
- NEXT WVFR01,I,HI$VOICE
- CALL LAST$LINE
- CALL NSRT$LINE
- CALL PUT$LINE
- CALL NEXT$LINE
- RET
- WVFRL1: DB 13,10
- DB 'Enter waveform table number'
- DB 13,10
- DB 'for voice '
- WVFRL2: DB ' >'
- DB '$'
-
- CEXIT:
- FCHI SONG$LINE,15,SPACE
- LXI H,SONG$LINE
- MVI M,'*'
- INX H
- MVI M,'X'
- CALL LAST$LINE
- CALL NSRT$LINE
- CALL PUT$LINE
- CALL NEXT$LINE
- RET
-
- SET$FLAT:
- MOVI FLAT,FALSE
- WRTLN STFTL1
- GTCH CH
- MCPI CH,'1'
- JM STFT01
- MCPI CH,'8'
- JM STFT04
- STFT01:
- MCP CH,RETURN
- JZ STFT06
- MCPI CH,'A'
- JM STFT03
- MCPI CH,'H'
- JP STFT03
- WRITE CH
- CALL STFTST
- STFT02:
- WRTLN STFTL3
- GTCH CH
- JMP STFT01
- STFT03:
- WRTLN STFTL2
- JMP STFT02
- STFT04:
- ANI 0FH
- MOV D,A
- LXI H,STFTL4
- STFT05:
- MOV A,M
- STA CH
- CALL STFTST
- INX H
- DCR D
- JNZ STFT05
- STFT06:
- MOVE M$FLAT,FLAT
- RET
- STFTST:
- LDA FLAT
- MOV B,A
- LDA CH
- CALL FIND$BIT
- ORA B
- STA FLAT
- RET
- STFTL1: DB 13,10
- DB 'Enter flat signature (1..7,A..G) >'
- DB '$'
- STFTL2: DB 7
- DB '$'
- STFTL3: DB ','
- DB '$'
- STFTL4: DB 'BEADGCF'
-
- SET$SHARP:
- MOVI SHARP,FALSE
- WRTLN STSRL1
- GTCH CH
- MCPI CH,'1'
- JM STSR01
- MCPI CH,'8'
- JM STSR04
- STSR01:
- MCP CH,RETURN
- JZ STSR06
- MCPI CH,'A'
- JM STSR03
- MCPI CH,'H'
- JP STSR03
- WRITE CH
- CALL STSRST
- STSR02:
- WRTLN STSRL3
- GTCH CH
- JMP STSR01
- STSR03:
- WRTLN STSRL2
- JMP STSR02
- STSR04:
- ANI 0FH
- MOV D,A
- LXI H,STSRL4
- STSR05:
- MOV A,M
- STA CH
- CALL STSRST
- INX H
- DCR D
- JNZ STSR05
- STSR06:
- MOVE M$SHARP,SHARP
- RET
- STSRST:
- LDA SHARP
- MOV B,A
- LDA CH
- CALL FIND$BIT
- ORA B
- STA SHARP
- RET
- STSRL1: DB 13,10
- DB 'Enter sharp signature (1..7,A..G) >'
- DB '$'
- STSRL2: DB 7
- DB '$'
- STSRL3: DB ','
- DB '$'
- STSRL4: DB 'FCGDAEB'
-
-