; ; 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