BBS: Inland Empire Archive Date: 11-30-92 (21:19) Number: 379 From: RICH GELDREICH Refer#: NONE To: ALL Recvd: NO Subj: Mod Player/7 Conf: (2) Quik_Bas
'<<Part 7 Starts Here>> C.Volume(A)=64 C.Command(A)=0 END IF CASE 2 'Port down C.Period(A) = C.Period(A) - C.PortSpeed(A) IF C.Period(A)<113 THEN C.Period(A) = 113 C.Command(A) = 0 END IF C.HighStep(A) = PeriodHigh(C.Period(A)) C.LowStep(A) = PeriodLow(C.Period(A)) CASE 3 'Port up C.Period(A) = C.Period(A) + C.PortSpeed(A) IF C.Period(A)>1023 THEN C.Period(A) = 1023 C.Command(A) = 0 END IF C.HighStep(A) = PeriodHigh(C.Period(A)) C.LowStep(A) = PeriodLow(C.Period(A)) CASE 4 'Port to Note Down C.Period(A) = C.Period(A) - C.PortSpeed(A) IF C.Period(A) <= C.PortDest(A) THEN C.Period(A) = C.PortDest(A) C.Command(A) = 0 END IF C.HighStep(A) = PeriodHigh(C.Period(A)) C.LowStep(A) = PeriodLow(C.Period(A)) CASE 5 'Port to Note Up C.Period(A) = C.Period(A) + C.PortSpeed(A) IF C.Period(A) >= C.PortDest(A) THEN C.Period(A) = C.PortDest(A) C.Command(A) = 0 END IF C.HighStep(A) = PeriodHigh(C.Period(A)) C.LowStep(A) = PeriodLow(C.Period(A)) END SELECT END IF NEXT RETURN '===================================================================== 'Allocates memory from DOS. FUNCTION Alloc (A) CPU.ax = &H4800 CPU.bx = A CALL interruptx(&H21, CPU, CPU) IF (CPU.Flags AND 1) THEN ExitWithError "Out of Memory" Alloc = CPU.ax END FUNCTION '===================================================================== SUB ExitWithError (A$) IF POS(0) <> 1 THEN PRINT PRINT A$: END END SUB '===================================================================== 'Extracts a Motorola word from a string, and multiples it by 2. FUNCTION Extract% (A$, offset) v& = (512&*ASC(MID$(A$,offset,1))+ASC(MID$(A$,offset+1, 1)) * 2&) IF v& > 65535 THEN ExitWithError "Sample Too Large" IF v& > 32767 THEN v& = v& - 65536 Extract% = v& END FUNCTION '===================================================================== 'Reprograms the 8255 timer so it hits an int 8 at a different rate. SUB SetInt8Rate (A&) OUT &H42, 2 + 4 + 16 + 32 OUT &H40, CINT(A&) AND 255 OUT &H40, A& \ 256 END SUB '===================================================================== SUB SpeakerOff OUT &H61, INP(&H61) AND 252 END SUB '===================================================================== SUB SpeakerOn OUT &H61,INP(&H61) OR 3:OUT &H43,128+32+16:OUT &H42,0 OUT &H42,0:OUT &H43,128+16 END SUB '===================================================================== ErrorHandler: SELECT CASE ERR CASE 7 ExitWithError "Out of Memory Error" CASE 52, 53, 68 ExitWithError "Bad File Name/File not found" CASE ELSE ExitWithError "Fatal Error"+STR$(ERR)+" has occured!" END SELECT 'END OF QBMP15.BAS==================================================== '<<-Cut Here->> Continued! --- MsgToss 2.0b * Origin: Computer Co-Op - Voorhees, NJ | Ted Hare (1:266/29)
Books at Amazon:
Back to BASIC: The History, Corruption, and Future of the Language
Hackers: Heroes of the Computer Revolution (including Tiny BASIC)
Go to: The Story of the Math Majors, Bridge Players, Engineers, Chess Wizards, Scientists and Iconoclasts who were the Hero Programmers of the Software Revolution
The Advent of the Algorithm: The Idea that Rules the World
Moths in the Machine: The Power and Perils of Programming
Mastering Visual Basic .NET