Listing of file='PATCH.MAC;07' on disk='vmedia/asm_utility_routines-sideB-sector.ccvf'
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; SOUNDWARE/SCROLL/NO-ECHO/CLOCK PATCH ; ; SOUND ROUTINE IS A LA CAP ELECTRONICS ; TITLE PATCH ; ENTRY PATCH EXTRN CLOCK,CLKOFF CALVEC EQU 8202H ;BASIC CALL(X) VECTOR PATCH: LXI H,SWARE ;SET UP JUMP FOR BASIC CALL(X) SHLD CALVEC+1 MVI A,0C3H STA CALVEC JMP CLOCK ;EXIT VIA CLOCK ROUTINE TO ; START CLOCK DISPLAY ; ; SOUNDWARE ROUTINE - SEE CAP ELECTRONICS DOCUMENTATION ; ; OTHER (BETTER) ROUTINES EXIST, BUT THIS IS PROVIDED ; FOR COMPATIBILITY ; ENTRY SWARE ENTRY SOUND PUBLIC PITCH,DURN,NSTEPS,STEP1,STEP2 PITCH: DB 50,0 DURN: DB 15,0 NSTEPS: DB 0 STEP1: DB 0 STEP2: DB 0 SWARE: MOV A,E ORA A JNZ SCRL SOUND: MVI E,8 DI LDA STEP1 MOV D,A LDA STEP2 ORA A JNZ SW10 MOV A,D STA STEP2 SW10: LHLD PITCH SHLD SW30+1 LHLD DURN SHLD SW20+1 SW20: LXI H,DURN SW30: LXI B,PITCH SW40: DCX B MOV A,B ORA C JNZ SW40 MOV A,E XRI 02 OUT 04 MOV E,A DCX H MOV A,H ORA L JNZ SW30 LDA NSTEPS CPI 0 JZ SW50 DCR A STA NSTEPS LDA SW30+1 ADD D STA SW30+1 LDA STEP2 MOV H,A MOV A,D STA STEP2 MOV D,H JMP SW20 SW50: STA STEP2 STA DURN+1 STA PITCH+1 MVI A,15 STA DURN MVI A,50 STA PITCH EI RET ; ; SCROLL PATCH - SEE COLORCUE VOL I.1 PAGES 2-3 ; ; VALUES ARE: ; STADR = 28672 + 2*X + 128*Y ; NOLINS = H (>1) ; WIDTH = W (1-64) ; DOUBLE = C (0 OR 1) ; ; SEE DOCUMENTATION FOR DEFINITIONS OF X,Y,H,W,C ; ENTRY SCRL ENTRY SCROLL PUBLIC STADR,NOLINS,WIDTH,DOUBLE STADR: DW 7000H ;TOP OF SCREEN NOLINS: DB 4 ;4 LINES WIDTH: DB 64 ;64 CHRS - WHOLE LINE DOUBLE: DB 1 ;CCI FLAG - SCROLL COLOR TOO SCRL: CPI 1 JNZ NOEC SCROLL: LHLD STADR LDA NOLINS MOV B,A DCR B SC10: LDA WIDTH MOV C,A PUSH H PUSH H LXI D,128 DAD D SC20: MOV A,M INX H XTHL MOV M,A INX H XTHL LDA DOUBLE ORA A JZ SC30 INX H XTHL JMP SC40 SC30: MOV A,M INX H XTHL MOV M,A SC40: INX H XTHL DCR C JNZ SC20 POP H POP H LXI D,128 DAD D DCR B JNZ SC10 POP H RET ; ; NOECHO PATCH - SEE COLORCUE VOL I.2 PAGES 7-8 ; ; MODIFIED VERSION - TIME DELAY IS IN D REG. ; I.E. IN BASIC USE: CALL(256*DELAY + 2) ; IF DELAY IS ZERO, ROUTINE WAITS INDEFINITELY FOR ; A CHARACTER. ; ENTRY NOEC ENTRY NOECHO KEYTST EQU 0024H READY EQU 81FFH NOEC: CPI 02 JNZ ADDR NOECHO: MOV H,D NOEC10: LXI B,2000H NOEC20: CALL KEYTST JZ NOEC30 MOV A,H ORA A JZ NOEC20 DCX B MOV A,C ORA B JNZ NOEC20 DCR D JNZ NOEC10 LXI D,0FFFFH JMP NOEC40 NOEC30: MOV E,A XRA A MOV D,A NOEC40: XRA A STA READY RET ; ; RETURN THE ADDRESS OF START OF "CALL" ROUTINES ; ADDR: CPI 100 JNZ ADDR10 LXI D,PITCH RET ADDR10: CPI 101 JNZ CLK LXI D,STADR RET ; ; TURN CLOCK DISPLAY ON OR OFF AS REQD ; CLK: CPI 200 JZ CLOCK CPI 201 RNZ MVI A,0FFH STA CLKOFF RET END PATCH