romex/common/iiee.defs

72 lines
2.2 KiB
Plaintext

; macros
; use at beginning of patch, set maxsize=0 for no max size check
.macro rompatch addr,maxsize,desc
patchstart = addr
.org patchstart
patchmsize = maxsize
.define patchdesc desc
.if patchmsize > 0
.out .sprintf(" ROM patch %s bgn %x, max size %d", patchdesc, patchstart, patchmsize)
.else
.out .sprintf(" ROM patch %s bgn %x, max size unconstrained", patchdesc, patchstart)
.endif
.endmacro
; use at end of patch, displays info about the patch
; and checks for over-size patch
.macro endpatch
.if patchmsize > 0
.out .sprintf(" ROM patch %s end %x; size: %d of %d, %d left", patchdesc, *-1, *-patchstart, patchmsize, patchmsize-*+patchstart)
.assert * <= (patchstart+patchmsize), error, .sprintf(" ROM patch %s code too big", patchdesc)
.else
.out .sprintf(" ROM patch %s end %x; size: %d", patchdesc, *-1, *-patchstart)
.endif
.endmacro
; hardware
;set80col = $c001
setslotcxrom = $c006
setintcxrom = $c007
setaltchar = $c00f
butn0 = $c061
butn1 = $c062
kbd = $c000
kbdstrb = $c010
romin = $c081
; ZP locations
ch = $24 ; cursor horizontal pos
cv = $25
; locations
softev = $3f2
pwerdup = $3f4
ampervec = $3f5
; values
pwrbyte = $a5
menucol = 10 ; column for menu entries
; entries
init = $fb2f ; init text screen
tabv = $fb5b ; vtab to a-reg
vtab = $fc22 ; vtab to cv
sloop = $faba ; slot scan loop
title = $fb60 ; clear screen, display "Apple //e"
kbdwait = $fb88 ; wait for keyboard input, print char
bell1 = $fbdd ; beep
wait = $fca8 ; waste time
rdkey = $fd0c ; read keyboard
cout = $fded ; character out
setkbd = $fe89 ; set keyboard as input
setvid = $fe93 ; set text screen as output
rdchar = $fd35 ; rdchar, used for delete key patch
prhex = $fde3 ; x,y preserved
prbyte = $fdda ; x,y preserved
monitor = $ff59 ; monitor
intcxrts = $f8cb ; switch in internal cx ROM and rts
slotcxrts = $fec5 ; switch in slot cx ROM and rts