Files
2026-05-07 10:03:27 +12:00

273 lines
7.7 KiB
ArmAsm

;declare 6510 ports
d6510 = 0 ;6510 data direction register
r6510 = 1 ;6510 data register
.segment "ZPKERNAL" : zeropage
status .res 1 ;i/o operation status byte
; crfac .res 2 ;correction factor (unused)
stkey .res 1 ;stop key flag
svxt .res 1 ;temporary
verck .res 1 ;load or verify flag
c3p0 .res 1 ;ieee buffered char flag
bsour .res 1 ;char buffer for ieee
syno .res 1 ;cassette sync #
xsav .res 1 ;temp for basin
ldtnd .res 1 ;index to logical file
dfltn .res 1 ;default input device #
dflto .res 1 ;default output device #
prty .res 1 ;cassette parity
dpsw .res 1 ;cassette dipole switch
msgflg .res 1 ;os message flag
ptr1 ;cassette error pass1
t1 .res 1 ;temporary 1
tmpc
ptr2 ;cassette error pass2
t2 .res 1 ;temporary 2
time .res 3 ;24 hour clock in 1/60th seconds
r2d2 ;serial bus usage
pcntr .res 1 ;cassette stuff
; ptch .res 1 (unused)
bsour1 ;temp used by serial routine
firt .res 1
count ;temp used by serial routine
cntdn .res 1 ;cassette sync countdown
bufpt .res 1 ;cassette buffer pointer
inbit ;rs-232 rcvr input bit storage
shcnl .res 1 ;cassette short count
bitci ;rs-232 rcvr bit count in
rer .res 1 ;cassette read error
rinone ;rs-232 rcvr flag for start bit check
rez .res 1 ;cassete reading zeroes
ridata ;rs-232 rcvr byte buffer
rdflg .res 1 ;cassette read mode
riprty ;rs-232 rcvr parity storage
shcnh .res 1 ;cassette short cnt
sal .res 1
sah .res 1
eal .res 1
eah .res 1
cmp0 .res 1
temp .res 1
tape1 .res 2 ;address of tape buffer #1y.
bitts ;rs-232 trns bit count
snsw1 .res 1
nxtbit ;rs-232 trns next bit to be sent
diff .res 1
rodata ;rs-232 trns byte buffer
prp .res 1
fnlen .res 1 ;length current file n str
la .res 1 ;current file logical addr
sa .res 1 ;current file 2nd addr
fa .res 1 ;current file primary addr
fnadr .res 2 ;addr current file name str
roprty ;rs-232 trns parity buffer
ochar .res 1
fsblk .res 1 ;cassette read block count
mych .res 1
cas1 .res 1 ;cassette manual/controlled switch
tmp0
stal .res 1
stah .res 1
memuss ;cassette load temps (2 bytes)
tmp2 .res 2
;
;variables for screen editor
;
lstx .res 1 ;key scan index
; sfst .res 1 ;keyboard shift flag (unused)
ndx .res 1 ;index to keyboard q
rvs .res 1 ;rvs field on flag
indx .res 1
lsxp .res 1 ;x pos at start
lstp .res 1
sfdx .res 1 ;shift mode on print
blnsw .res 1 ;cursor blink enab
blnct .res 1 ;count to toggle cur
gdbln .res 1 ;char before cursor
blnon .res 1 ;on/off blink flag
crsw .res 1 ;input vs get flag
pnt .res 2 ;pointer to row
; point .res 1 (unused)
pntr .res 1 ;pointer to column
qtsw .res 1 ;quote switch
lnmx .res 1 ;40/80 max positon
tblx .res 1
data .res 1
insrt .res 1 ;insert mode flag
ldtb1 .res 26 ;line flags+endspace
user .res 2 ;screen editor color ip
keytab .res 2 ;keyscan table indirect
;rs-232 z-page
ribuf .res 2 ;rs-232 input buffer pointer
robuf .res 2 ;rs-232 output buffer pointer
frekzp .res 4 ;free kernal zero page 9/24/80
baszpt .res 1 ;location ($00ff) used by basic
.segment "STACK"
bad .res 1
.segment "KVAR"
buf .res 89 ;basic/monitor buffer
; tables for open files
;
lat .res 10 ;logical file numbers
fat .res 10 ;primary device numbers
sat .res 10 ;secondary addresses
; system storage
;
keyd .res 10 ;irq keyboard buffer
memstr .res 2 ;start of memory
memsiz .res 2 ;top of memory
timout .res 1 ;ieee timeout flag
; screen editor storage
;
color .res 1 ;activ color nybble
gdcol .res 1 ;original color before cursor
hibase .res 1 ;base location of screen (top)
xmax .res 1
rptflg .res 1 ;key repeat flag
kount .res 1
delay .res 1
shflag .res 1 ;shift flag byte
lstshf .res 1 ;last shift pattern
keylog .res 2 ;indirect for keyboard table setup
mode .res 1 ;0-pet mode, 1-cattacanna
autodn .res 1 ;auto scroll down flag(=0 on,<>0 off)
; rs-232 storage
;
m51ctr .res 1 ;6551 control register
m51cdr .res 1 ;6551 command register
m51ajb .res 2 ;non standard (bittime/2-100)
rsstat .res 1 ; rs-232 status register
bitnum .res 1 ;number of bits to send (fast response)
baudof .res 2 ;baud rate full bit time (created by open)
;
; reciever storage
;
; inbit .res 1 ;input bit storage
; bitci .res 1 ;bit count in
; rinone .res 1 ;flag for start bit check
; ridata .res 1 ;byte in buffer
; riprty .res 1 ;byte in parity storage
ridbe .res 1 ;input buffer index to end
ridbs .res 1 ;input buffer pointer to start
;
; transmitter storage
;
; bitts .res 1 ;# of bits to be sent
; nxtbit .res 1 ;next bit to be sent
; roprty .res 1 ;parity of byte sent
; rodata .res 1 ;byte buffer out
rodbs .res 1 ;output buffer index to start
rodbe .res 1 ;output buffer index to end
;
irqtmp .res 2 ;holds irq during tape ops
;
; temp space for vic-40 variables ****
;
enabl .res 1 ;rs-232 enables (replaces ier)
caston .res 1 ;tod sense during cassettes
kika26 .res 1 ;temp storage for cassette read routine
stupid .res 1 ;temp d1irq indicator for cassette read
lintmp .res 1 ;temporary for line index
palnts .res 1 ;pal vs ntsc flag 0=ntsc 1=pal
.segment "KVECTORS";rem kernal/os indirects(20)
cinv .res 2 ;irq ram vector
cbinv .res 2 ;brk instr ram vector
nminv .res 2 ;nmi ram vector
iopen .res 2 ;indirects for code
iclose .res 2 ; conforms to kernal spec 8/19/80
ichkin .res 2
ickout .res 2
iclrch .res 2
ibasin .res 2
ibsout .res 2
istop .res 2
igetin .res 2
iclall .res 2
usrcmd .res 2
iload .res 2
isave .res 2 ;savesp
tbuffr =$033C ;cassette data buffer
vicscn =$0400
; i/o devices
;
vicreg =$d000
sidreg =$d400
viccol =$d800 ;vic color nybbles
cia1 =$dc00 ;device1 6526 (page1 irq)
d1pra =cia1+0
colm =d1pra ;keyboard matrix
d1prb =cia1+1
rows =d1prb ;keyboard matrix
d1ddra =cia1+2
d1ddrb =cia1+3
d1t1l =cia1+4
d1t1h =cia1+5
d1t2l =cia1+6
d1t2h =cia1+7
d1tod1 =cia1+8
d1tods =cia1+9
d1todm =cia1+10
d1todh =cia1+11
d1sdr =cia1+12
d1icr =cia1+13
d1cra =cia1+14
d1crb =cia1+15
cia2 =$dd00 ;device2 6526 (page2 nmi)
d2pra =cia2+0
d2prb =cia2+1
d2ddra =cia2+2
d2ddrb =cia2+3
d2t1l =cia2+4
d2t1h =cia2+5
d2t2l =cia2+6
d2t2h =cia2+7
d2tod1 =cia2+8
d2tods =cia2+9
d2todm =cia2+10
d2todh =cia2+11
d2sdr =cia2+12
d2icr =cia2+13
d2cra =cia2+14
d2crb =cia2+15
timrb =$19 ;6526 crb enable one-shot tb
;tape block types
;
eot =5 ;end of tape
blf =1 ;basic load file
bdf =2 ;basic data file
plf =3 ;fixed program type
bdfh =4 ;basic data file header
bufsz =192 ;buffer size
;
;screen editor constants
;
llen =40 ;single line 40 columns
llen2 =80 ;double line = 80 columns
nlines =25 ;25 rows on screen
white =$01 ;white screen color
blue =$06 ;blue char color
cr =$d ;carriage return
;rsr 8/3/80 add & change z-page
;rsr 8/11/80 add memuss & plf type
;rsr 8/22/80 add rs-232 routines
;rsr 8/24/80 add open variables
;rsr 8/29/80 add baud space move rs232 to z-page
;rsr 9/2/80 add screen editor vars&con 
;rsr 12/7/81 modify for vic-40