mirror of
https://github.com/cc65/cc65.git
synced 2024-08-17 03:29:15 +00:00
290 lines
5.3 KiB
PHP
290 lines
5.3 KiB
PHP
;
|
|
; Zeropage and I/O definitions for the CBM 610
|
|
;
|
|
; Taken from a kernal disassembly done by myself in 1987.
|
|
;
|
|
; Ullrich von Bassewitz, 28.09.1998
|
|
|
|
|
|
; ---------------------------------------------------------------------------
|
|
; Zeropage stuff
|
|
|
|
ExecReg = $0000
|
|
IndReg = $0001
|
|
|
|
; Up to $20 and $60-8F used by runtime and fixed values
|
|
; -----------------------------------
|
|
|
|
KbdScanBuf = $20 ; Intermediate for keyboard scan
|
|
; RS232 stuff
|
|
RecvHead = $21 ; Head of receive buffer
|
|
RecvTail = $22 ; Tail of receive buffer
|
|
RecvFreeCnt = $23 ; Number of bytes in receive buffer
|
|
SendHead = $24 ; Head of send buffer
|
|
SendTail = $25 ; Tail of send buffer
|
|
SendFreeCnt = $26 ; Number of bytes free in send buffer
|
|
|
|
FileNameAdrLo = $90
|
|
FileNameAdrHi = $91
|
|
FileNameAdrSeg = $92
|
|
SaveAdrLow = $93
|
|
SaveAdrHi = $94
|
|
SaveAdrSeg = $95
|
|
EndAdrLow = $96
|
|
EndAdrHi = $97
|
|
EndAdrSeg = $98
|
|
StartAdrLow = $99
|
|
StartAdrHi = $9A
|
|
StartAdrSeg = $9B
|
|
Status = $9C
|
|
FileNameLen = $9D
|
|
LogicalAdr = $9E
|
|
FirstAdr = $9F
|
|
SecondAdr = $A0
|
|
DefInpDev = $A1
|
|
DefOutDev = $A2
|
|
TapeBufPtr = $A3
|
|
TapeBufPtrSeg = $A5
|
|
rs232BufPtr = $A6
|
|
rs232BufPtrSeg = $A8
|
|
StopKeyFlag = $A9
|
|
CTemp = $AA
|
|
snsw1 = $AB
|
|
SegChgPtr = $AC
|
|
PChighSave = $AE
|
|
PClowSave = $AF
|
|
SRSave = $B0
|
|
ACSave = $B1
|
|
XRSave = $B2
|
|
YRSave = $B3
|
|
SPSave = $B4
|
|
IndSegSave = $B5
|
|
IRQSaveHi = $B7
|
|
IRQSaveLo = $B8
|
|
Adr1 = $B9
|
|
Adr2 = $BB
|
|
MoniCntr = $BD
|
|
MoniTmp = $BE
|
|
MoniDevNr = $BF
|
|
PgmKeyBuf = $C0
|
|
PgmKeyPtr = $C2
|
|
sedsal = $C4
|
|
sedeal = $C6
|
|
CharPtr = $C8
|
|
CURS_Y = $CA
|
|
CURS_X = $CB
|
|
GrafMode = $CC
|
|
LastIndex = $CD
|
|
LastLine = $CE
|
|
LastCol = $CF
|
|
crsw = $D0
|
|
KeyIndex = $D1
|
|
QuoteSw = $D2
|
|
Insrt = $D3
|
|
Config = $D4
|
|
LastLinePos = $D5
|
|
PgmKeyIndex = $D6
|
|
RepeatCount = $D7
|
|
RepeatDelay = $D8
|
|
sedt1 = $D9 ; Temp
|
|
sedt2 = $DA ; Temp, frequently used
|
|
PrtData = $DB
|
|
ScreenTop = $DC
|
|
ScreenBot = $DD
|
|
ScreenLeft = $DE
|
|
ScreenRight = $DF
|
|
ModKey = $E0
|
|
NorKey = $E1
|
|
BitTable = $E2
|
|
|
|
|
|
; ---------------------------------------------------------------------------
|
|
; Page 3 variables
|
|
|
|
;
|
|
; system ram vectors
|
|
;
|
|
|
|
IRQVec = $0300
|
|
BRKVec = $0302
|
|
NMIVec = $0304
|
|
openVec = $0306
|
|
closeVec = $0308
|
|
chkinVec = $030A
|
|
ckoutVec = $030C
|
|
clrchVec = $030E
|
|
basinVec = $0310
|
|
bsoutVec = $0312
|
|
stopVec = $0314
|
|
getinVec = $0316
|
|
clallVec = $0318
|
|
loadVec = $031A
|
|
saveVec = $031C
|
|
usrcmd = $031E
|
|
escvec = $0320
|
|
ctrlvec = $0322
|
|
secndVec = $0324
|
|
tksaVec = $0326
|
|
acptrVec = $0328
|
|
cioutVec = $032A
|
|
untlkVec = $032C
|
|
unlsnVec = $032E
|
|
listnVec = $0330
|
|
talkVec = $0332
|
|
|
|
;
|
|
;
|
|
;
|
|
|
|
LogicalAdrTable = $0334
|
|
FirstAdrTable = $033E
|
|
SecondAdrTable = $0348
|
|
SysMemBot = $0352
|
|
SysMemTop = $0355
|
|
UsrMemBot = $0358
|
|
UsrMemTop = $035B
|
|
TimOut = $035E
|
|
VerifyFlag = $035F
|
|
DevTabIndex = $0360
|
|
MsgFlag = $0361
|
|
CassBufPtr = $0362
|
|
t1 = $0363
|
|
t2 = $0364
|
|
XSave = $0365
|
|
SaveX = $0366
|
|
SaveXt = $0367
|
|
temp = $0368
|
|
alarm = $0369
|
|
TapeVec = $036A
|
|
LoadStAdr = $036F
|
|
CassMotFlag = $0375
|
|
m6551Ctrl = $0376
|
|
m6551Cmd = $0377
|
|
rs232status = $037A
|
|
dcddsr = $037B
|
|
rs232head = $037C
|
|
rs232tail = $037D
|
|
PgmKeyEnd = $0380
|
|
PgmKeySeg = $0382
|
|
PgmKeySize = $0383
|
|
rvsFlag = $0397
|
|
linetmp = $0398
|
|
LastPrtChar = $0399
|
|
InsertFlag = $039A
|
|
ScrollFlag = $039B
|
|
FktTemp = $039C
|
|
PgmKeyIdx = $039D
|
|
LogScrollFlag = $039E
|
|
BellMode = $039F ; Bell on/off 00 = an
|
|
SegSave = $03A0
|
|
TabStopTable = $03A1 ; 80 bits for tabstops
|
|
KeyBuf = $03AB ; Keyboard buffer
|
|
FUNKEY_VEC = $03B5 ; Vector for function key handline
|
|
FunKeyTmp = $03B7
|
|
sedt3 = $03B9
|
|
MoniSegSave = $03f0
|
|
wstvec = $03F8
|
|
WstFlag = $03FA ; Warm start flag
|
|
|
|
|
|
; ---------------------------------------------------------------------------
|
|
; I/O definitions
|
|
|
|
|
|
; I/O $d800: CRTC 6545
|
|
|
|
CRTC = $D800
|
|
CRTC_ADDR = $00
|
|
CRTC_DATA = $01
|
|
|
|
|
|
; I/O $da00: SID 6581
|
|
|
|
; sid = $da00
|
|
|
|
Osc1 = $00
|
|
Osc2 = $07
|
|
Osc3 = $0e
|
|
|
|
FreqLo = $00
|
|
FreqHi = $01
|
|
PulseF = $02
|
|
PulseC = $03
|
|
OscCtl = $04
|
|
AtkDcy = $05
|
|
SusRel = $06
|
|
|
|
FiCtlLo = $15
|
|
FiCtlHi = $16
|
|
Resonance = $17
|
|
Volume = $18
|
|
PotX = $19
|
|
PotY = $1A
|
|
Random = $1B
|
|
Env3 = $1C
|
|
|
|
|
|
|
|
; I/O $db00: CIA 6526 Inter Process Communication
|
|
|
|
; IPCcia = $db00
|
|
|
|
PortA = $00
|
|
PortB = $01
|
|
DDRA = $02
|
|
DDRB = $03
|
|
TimALo = $04
|
|
TimAHi = $05
|
|
TimBLo = $06
|
|
TimBHi = $07
|
|
TOD10 = $08
|
|
TODsec = $09
|
|
TODmin = $0A
|
|
TODhour = $0B
|
|
SerDataReg = $0C
|
|
IntCtrReg = $0D
|
|
CtrlA = $0E
|
|
CtrlB = $0F
|
|
|
|
|
|
|
|
; I/O $dc00: CIA 6526
|
|
|
|
; cia = $dc00
|
|
|
|
|
|
|
|
; I/O $dd00: ACIA 6551
|
|
|
|
; acia = $dd00
|
|
|
|
ADataReg = $00
|
|
AStatusReg = $01
|
|
ACmdReg = $02
|
|
ACtrlReg = $03
|
|
|
|
|
|
|
|
; I/O $de00: Triport #1 6525
|
|
|
|
; tpi1 = $de00
|
|
|
|
tpiPortA = $00
|
|
tpiPortB = $01
|
|
tpiPortC = $02
|
|
tpiIntLatch = $02
|
|
tpiDDRA = $03
|
|
tpiDDRB = $04
|
|
tpiDDRC = $05
|
|
tpiIntMask = $05
|
|
tpiCtrlReg = $06
|
|
tpiActIntReg = $07
|
|
|
|
|
|
|
|
; I/O $df00: Triport #2 6525
|
|
|
|
; tpi2 = $df00
|
|
|
|
|