home *** CD-ROM | disk | FTP | other *** search
- ;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
-