Listing of file='SENDS.MAC;01' on disk='vmedia/taylor_5-sector.ccvf'
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; SEND A MORSE CHARACTER USING SOUNDWARE ; ENTRY SEND PUBLIC DOTTIM,CHSPD EXTRN ENCODE SEND: ANI 7FH ;MAKE SURE IT'S ASCII LXI H,ENCODE ;INDEX INTO MORSE CODE TABLE MOV C,A MVI B,0 DAD B MOV A,M STA CODE ;SAVE THE MORSE FOR LATER ORA A JNZ XMIT ;NULLS COUNT AS SPACES CALL DOTOFF ;I.E. ANY CHARACTER WITH NO JMP SPACE ;MORSE EQUIVALENT IS A SPACE ; ; MAIN SENDING LOOP ; XMIT: LDA CODE ;GET NEXT DOT OR DASH ADD A STA CODE JZ SPACE ;FINISHED IF NOTHING LEFT LHLD DOTTIM ;GET DOT TIME JNC MARK ;MULTIPLY BY THREE IF A DASH MOV B,H MOV C,L DAD H DAD B MARK: CALL SOUND ;SEND THE DOT OR DASH CALL DOTOFF ;FOLLOWED BY ONE DOT SPACE JMP XMIT ;AND REPEAT ; ; SPACE BETWEEN CHARACTERS ; SPACE: CALL DOTOFF ;ALWAYS ONE DOT SPACE CALL CHRSPC ;PLUS INTER-CHARACTER SPACE RET ; ;.............................................................. ; ; WAIT ONE DOT TIME WITH NO SOUND ; DOTOFF: LHLD DOTTIM MVI A,0 STA NOISE CALL TONE RET ; ;.............................................................. ; ; WAIT ONE CHARACTER SPACE WITH NO SOUND ; CHRSPC: LDA CHSPD PUSH PSW CS01: CALL DOTOFF POP PSW DCR A PUSH PSW JNZ CS01 POP PSW RET ; ;.............................................................. ; ; MAKE A SOUND (DOT OR DASH) ; ; DURATION IS IN HL ON ENTRY ; SOUND: MVI A,0FFH STA NOISE CALL TONE RET ; ;.............................................................. ; ; GENERATE A TONE OR SIMPLY A DELAY ; ; DURATION IS IN HL ON ENTRY. ; NOTE THAT INTERRUPTS ARE DISABLED, SO THE REAL-TIME ; CLOCK WILL RUN SLOW. ; TONE: MVI C,8 DI TN02: LDA PITCH MOV D,A TN03: DCR D JNZ TN03 LDA NOISE ;SEE IF NOISE ON OR OFF ORA A JZ TN04 MOV A,C ;OUTPUT THE SOUND BY RESETTING XRI 02 ;AND SETTING THE BREAK BIT IN OUT 04 ;THE 5501 ALTERNATELY MOV C,A JMP TN05 TN04: MOV C,A ;NO SOUND OUTPUT MOV A,C ;JUST FILL IN TIME TO MAKE THE MOV C,A ;DELAY EQUAL IN LENGTH TO THE MOV A,C ;SOUND OUTPUT PART MOV C,A NOP NOP NOP TN05: DCX H ;DECREMENT DURATION MOV A,H ORA L JNZ TN02 ;REPEAT IF NOT SATISFIED EI RET ; ; STORAGE AREA FOR TIMING AND TONE GENERATION DATA ; CODE: DB 0 PITCH: DB 94,0 DOTTIM: DB 103,0 CHSPD: DB 2 NOISE: DB 0 END