;rptpat1-add automatic key repeat to the
;C64 BIOS and change the border, screen,
;and character colors for SOFT80 V.1
;
; 29 September 1984
;
; Author: Ross A. Alford
; ...{decvax, akgua, ihnp4}!mcnc!ecsvax!alford
; Compuserve 75475,1404
;
; Department of Zoology
; Duke University
; Durham, NC 27706
;
;
; This program is hereby licensed for
; unlimited noncommercial distribution,
; provided this notice remains atached.
; Any comercial use requires the written
; consent of the author.
;
; This program operates correctly with
; my version of C64 CP/M. Other
; versions may exist. If it appears
; not to work with your system, check
; the equates against your BIOS.
; It occupies the space reserved for
; BIOS65 function 7, and so conflicts
; with that function
;
; I assume no liability for the operation
; of this program, nor for any direct
; or consequential damages caused
; by it.
;
;
;define true and false
;
true equ 0ffh
false equ 00h
;
;
;assemble for 44k or 48k?
;
forty8 equ true
forty4 equ false
;
;
;conditional equates
;
;
if forty8
lastky equ 0ba63h
j9 equ 0bbd5h
const1 equ 0bbd7h
const2 equ 0bbdch
endif
;
;
if forty4
lastky equ 0aa63h
j9 equ 0abd5h
const1 equ 0abd7h
const2 equ 0abdch
endif
;
;
;global equates
;
;
bdos equ 0005h
esc equ 01bh
offset equ 0fc00h
border equ 0c020h
cr equ 0dh
lf equ 0ah
bgcolor equ 06h ;background color
ccolor equ 14h ;char color
;
;
;routine that sets colors and
; relocates the patch
; routines into the
; extra 512 bytes at 0fe00h
; and patches conout in the
; bios to jump to patch
;
org 0100h
;print sign on message, change screen colors
lxi d,msg
mvi c,09h ;print string
call bdos
;change border color
mvi a,0bh
sta border
;
;
;install BIOS patches
;
lxi b,pbegin
lxi h,pend-pbegin
lxi d,0fe00h
call movup
lxi b,bpatch
lxi d,j9-1
lxi h,0003h
call movup
ret
;
;
movup: ldax b
stax d
inx b
inx d
dcx h
xra a
cmp h
jnz movup
cmp l
jnz movup
ret
;
;
msg db esc,'K',bgcolor ;set background color
db esc,'H',ccolor ;set character color
db cr,lf,'RPTPAT v1.0',cr,lf
db 'Enables auto-repeat keyboard,',cr,lf
db 'sets character and background colors',cr,lf
db cr,lf,'Copyright 1984 by Ross A. Alford',cr,lf
db 'All commercial rights reserved',cr,lf,'$'
;
;
;patch to jump for keyboard
; auto repeat. inserted into
; BIOS80 at j9-1, which should
; be CMP M
;
;
bpatch: jmp rptpat+offset
;
;
;rptpat routine: a jump to this
; is inserted at j9-1 in the
; BIOS. This repeats any
; keypress after a delay
;
;
org 0200h
pbegin: ;start of patches
;
;
rptpat: mov b,a
cpi 040h
jnz rpp1+offset
sta lastky
jmp const1
rpp1: cmp m
jz rpp2+offset
mvi a,080h
sta delay+offset
mov a,b
jmp const2
rpp2: lxi h,delay+offset
dcr m
jnz const1
mvi a,018h
mov m,a
mov a,b
jmp const2
;
;
;storage locations
;
;
delay: db 080h
;
;
pend: end