1
0
mirror of https://github.com/cc65/cc65.git synced 2024-06-26 20:29:34 +00:00

Combine the existing include files, move zp space out of crt0.s

git-svn-id: svn://svn.cc65.org/cc65/trunk@1290 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
cuz 2002-05-26 09:08:52 +00:00
parent 9556117f0f
commit 3aadd7f62b
39 changed files with 656 additions and 768 deletions

View File

@ -7,7 +7,7 @@
.export set_bank, sys_bank, restore_bank
.importzp ptr1
.include "zeropage.inc"
.include "cbm510.inc"
.code

View File

@ -9,8 +9,7 @@
.export _brk_a, _brk_x, _brk_y, _brk_sr, _brk_pc
.import _atexit
.include "zeropage.inc"
.include "page3.inc"
.include "cbm510.inc"
.bss

340
libsrc/cbm510/cbm510.inc Normal file
View File

@ -0,0 +1,340 @@
;
; Zero page variables and I/O definitions for the CBM 510
;
; Taken from a kernal disassembly done by myself in 2000/2001.
;
; Ullrich von Bassewitz, 13.09.2001
;-----------------------------------------------------------------------------
; 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
SCREEN_PTR = $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
CURS_FLAG = $E6 ; 1 = no cursor
CURS_BLINK = $E7 ; cursor blink counter
CRAM_PTR = $E8
TempColor = $EA
CURS_STATE = $EB ; Cursor blink state
CHARCOLOR = $EC
CURS_COLOR = $ED ; Color behind cursor
OutCharTmp = $EE
ScreenSeq = $EF ; Segment of video RAM
;-----------------------------------------------------------------------------
; 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
funvec = $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: VIC
VIC_SPR0_X = $00
VIC_SPR0_Y = $01
VIC_SPR1_X = $02
VIC_SPR1_Y = $03
VIC_SPR2_X = $04
VIC_SPR2_Y = $05
VIC_SPR3_X = $06
VIC_SPR3_Y = $07
VIC_SPR4_X = $08
VIC_SPR4_Y = $09
VIC_SPR5_X = $0A
VIC_SPR5_Y = $0B
VIC_SPR6_X = $0C
VIC_SPR6_Y = $0D
VIC_SPR7_X = $0E
VIC_SPR7_Y = $0F
VIC_SPR_HI_X = $10
VIC_SPR_ENA = $15
VIC_SPR_EXP_X = $17
VIC_SPR_EXP_Y = $1D
VIC_SPR_MCOLOR = $1C
VIC_SPR_BG_PRIO = $1B
VIC_SPR_MCOLOR0 = $25
VIC_SPR_MCOLOR1 = $26
VIC_SPR0_COLOR = $27
VIC_SPR1_COLOR = $28
VIC_SPR2_COLOR = $29
VIC_SPR3_COLOR = $2A
VIC_SPR4_COLOR = $2B
VIC_SPR5_COLOR = $2C
VIC_SPR6_COLOR = $2D
VIC_SPR7_COLOR = $2E
VIC_CTRL1 = $11
VIC_CTRL2 = $16
VIC_HLINE = $12
VIC_VIDEO_ADR = $18
VIC_IRR = $19 ; Interrupt request register
VIC_IMR = $1A ; Interrupt mask register
VIC_BORDERCOLOR = $20
VIC_BG_COLOR0 = $21
VIC_BG_COLOR1 = $22
VIC_BG_COLOR2 = $23
VIC_BG_COLOR3 = $24
; I/O $da00: SID 6581
SID_S1Lo = $00
SID_S1Hi = $01
SID_PB1Lo = $02
SID_PB1Hi = $03
SID_Ctl1 = $04
SID_AD1 = $05
SID_SUR1 = $06
SID_S2Lo = $07
SID_S2Hi = $08
SID_PB2Lo = $09
SID_PB2Hi = $0A
SID_Ctl2 = $0B
SID_AD2 = $0C
SID_SUR2 = $0D
SID_S3Lo = $0E
SID_S3Hi = $0F
SID_PB3Lo = $10
SID_PB3Hi = $11
SID_Ctl3 = $12
SID_AD3 = $13
SID_SUR3 = $14
SID_FltLo = $15
SID_FltHi = $16
SID_FltCtl = $17
SID_Amp = $18
SID_ADConv1 = $19
SID_ADConv2 = $1A
SID_Noise = $1B
SID_Read3 = $1C
; I/O $db00: CIA 6526 Inter Process Communication
; I/O $dc00: CIA 6526
CIA_PRA = $00
CIA_PRB = $01
CIA_DDRA = $02
CIA_DDRB = $03
CIA_ICR = $0D
CIA_CRA = $0E
CIA_CRB = $0F
; 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
; Out video memory address
COLOR_RAM = $D400 ; System bank

View File

@ -8,8 +8,7 @@
.condes k_blncur, 2
.import cursor
.include "zeropage.inc"
.include "page3.inc"
.include "cbm510.inc"
; ------------------------------------------------------------------------
@ -91,7 +90,7 @@ L4: lda KeyBuf+1,x ; Move up the remaining chars
@L9: sty CURS_FLAG ; Cursor on (Y = 0)
rts
.endproc

View File

@ -5,8 +5,7 @@
.export _clrscr
.import plot
.include "zeropage.inc"
.include "io.inc"
.include "cbm510.inc"
; ------------------------------------------------------------------------
; void __fastcall__ clrscr (void);
@ -30,7 +29,7 @@
.proc clearpage
txa
pha ; Save count

View File

@ -6,8 +6,7 @@
.import sys_bank, restore_bank
.importzp vic
.include "zeropage.inc"
.include "io.inc"
.include "cbm510.inc"
; ------------------------------------------------------------------------

View File

@ -6,5 +6,5 @@
.exportzp CURS_X, CURS_Y
.include "zeropage.inc"
.include "cbm510.inc"

View File

@ -10,7 +10,7 @@
.import popa, _gotoxy
.import xsize, revers
.include "zeropage.inc"
.include "cbm510.inc"
.include "../cbm/cbm.inc"
; ------------------------------------------------------------------------
@ -60,7 +60,7 @@ L3: sty CURS_X
rts
newline:
clc
clc
lda xsize
adc SCREEN_PTR
sta SCREEN_PTR

View File

@ -13,39 +13,9 @@
.import k_irq, k_nmi, k_plot, k_udtim, k_scnkey
.include "zeropage.inc"
.include "io.inc"
.include "cbm510.inc"
; ------------------------------------------------------------------------
; Define and export the ZP variables for the CBM510 runtime
.exportzp sp, sreg, regsave
.exportzp ptr1, ptr2, ptr3, ptr4
.exportzp tmp1, tmp2, tmp3, tmp4
.exportzp regbank, zpspace
.exportzp vic, sid, cia1, cia2, acia, tpi1, tpi2
.exportzp ktab1, ktab2, ktab3, ktab4, time, RecvBuf, SendBuf
.zeropage
zpstart = *
sp: .res 2 ; Stack pointer
sreg: .res 2 ; Secondary register/high 16 bit for longs
regsave: .res 2 ; slot to save/restore (E)AX into
ptr1: .res 2
ptr2: .res 2
ptr3: .res 2
ptr4: .res 2
tmp1: .res 1
tmp2: .res 1
tmp3: .res 1
tmp4: .res 1
regbank: .res 6 ; 6 byte register bank
zpspace = * - zpstart ; Zero page space allocated
.code
; ------------------------------------------------------------------------
; BASIC header and a small BASIC program. Since it is not possible to start
; programs in other banks using SYS, the BASIC program will write a small
@ -75,6 +45,8 @@ zpspace = * - zpstart ; Zero page space allocated
; that is overwritten later.
;
.code
; To make things more simple, make the code of this module absolute.
.org $0001

View File

@ -1,149 +0,0 @@
;
; I/O definitions for the CBM 510
;
; Taken from a kernal disassembly done by myself in 2000/2001.
;
; Ullrich von Bassewitz, 13.09.2001
; I/O $d800: VIC
VIC_SPR0_X = $00
VIC_SPR0_Y = $01
VIC_SPR1_X = $02
VIC_SPR1_Y = $03
VIC_SPR2_X = $04
VIC_SPR2_Y = $05
VIC_SPR3_X = $06
VIC_SPR3_Y = $07
VIC_SPR4_X = $08
VIC_SPR4_Y = $09
VIC_SPR5_X = $0A
VIC_SPR5_Y = $0B
VIC_SPR6_X = $0C
VIC_SPR6_Y = $0D
VIC_SPR7_X = $0E
VIC_SPR7_Y = $0F
VIC_SPR_HI_X = $10
VIC_SPR_ENA = $15
VIC_SPR_EXP_X = $17
VIC_SPR_EXP_Y = $1D
VIC_SPR_MCOLOR = $1C
VIC_SPR_BG_PRIO = $1B
VIC_SPR_MCOLOR0 = $25
VIC_SPR_MCOLOR1 = $26
VIC_SPR0_COLOR = $27
VIC_SPR1_COLOR = $28
VIC_SPR2_COLOR = $29
VIC_SPR3_COLOR = $2A
VIC_SPR4_COLOR = $2B
VIC_SPR5_COLOR = $2C
VIC_SPR6_COLOR = $2D
VIC_SPR7_COLOR = $2E
VIC_CTRL1 = $11
VIC_CTRL2 = $16
VIC_HLINE = $12
VIC_VIDEO_ADR = $18
VIC_IRR = $19 ; Interrupt request register
VIC_IMR = $1A ; Interrupt mask register
VIC_BORDERCOLOR = $20
VIC_BG_COLOR0 = $21
VIC_BG_COLOR1 = $22
VIC_BG_COLOR2 = $23
VIC_BG_COLOR3 = $24
; I/O $da00: SID 6581
SID_S1Lo = $00
SID_S1Hi = $01
SID_PB1Lo = $02
SID_PB1Hi = $03
SID_Ctl1 = $04
SID_AD1 = $05
SID_SUR1 = $06
SID_S2Lo = $07
SID_S2Hi = $08
SID_PB2Lo = $09
SID_PB2Hi = $0A
SID_Ctl2 = $0B
SID_AD2 = $0C
SID_SUR2 = $0D
SID_S3Lo = $0E
SID_S3Hi = $0F
SID_PB3Lo = $10
SID_PB3Hi = $11
SID_Ctl3 = $12
SID_AD3 = $13
SID_SUR3 = $14
SID_FltLo = $15
SID_FltHi = $16
SID_FltCtl = $17
SID_Amp = $18
SID_ADConv1 = $19
SID_ADConv2 = $1A
SID_Noise = $1B
SID_Read3 = $1C
; I/O $db00: CIA 6526 Inter Process Communication
; I/O $dc00: CIA 6526
CIA_PRA = $00
CIA_PRB = $01
CIA_DDRA = $02
CIA_DDRB = $03
CIA_ICR = $0D
CIA_CRA = $0E
CIA_CRB = $0F
; 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
; Out video memory address
COLOR_RAM = $D400 ; System bank

View File

@ -7,7 +7,7 @@
.export _kbhit
.import return0, return1
.include "zeropage.inc"
.include "cbm510.inc"
.proc _kbhit
lda KeyIndex ; Get number of characters

View File

@ -10,9 +10,7 @@
.import __IRQFUNC_TABLE__, __IRQFUNC_COUNT__
.importzp tpi1
.include "zeropage.inc"
.include "io.inc"
.include "page3.inc"
.include "cbm510.inc"
; -------------------------------------------------------------------------

View File

@ -8,8 +8,7 @@
.import __VIDRAM_START__
.importzp crtc
.include "zeropage.inc"
.include "io.inc"
.include "cbm510.inc"
.macpack generic

View File

@ -7,9 +7,7 @@
.export k_scnkey
.importzp tpi2, ktab1, ktab2, ktab3, ktab4
.include "zeropage.inc"
.include "io.inc"
.include "page3.inc"
.include "cbm510.inc"
.proc k_scnkey

View File

@ -17,8 +17,7 @@
.import popax, addysp1
.importzp vic, sid, ptr1, sp
.include "zeropage.inc"
.include "io.inc"
.include "cbm510.inc"
.macpack generic

View File

@ -1,94 +0,0 @@
;
; Page 3 variables for the CBM 610
;
; Taken from a kernal disassembly done by myself in 1987.
;
; Ullrich von Bassewitz, 28.09.1998
;
; 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
funvec = $03B5 ; Vector for function key handline
FunKeyTmp = $03B7
sedt3 = $03B9
MoniSegSave = $03f0
wstvec = $03F8
WstFlag = $03FA ; Warm start flag

View File

@ -5,7 +5,7 @@
.export _peekbsys, _peekwsys
.importzp ptr1
.include "zeropage.inc"
.include "cbm510.inc"
; ------------------------------------------------------------------------

View File

@ -8,7 +8,7 @@
.import popsreg
.importzp sreg, tmp1
.include "zeropage.inc"
.include "cbm510.inc"
; ------------------------------------------------------------------------

View File

@ -8,7 +8,7 @@
.import sys_bank, restore_bank
.importzp cia2, tmp1
.include "io.inc"
.include "cbm510.inc"
; ------------------------------------------------------------------------
; unsigned __fastcall__ readjoy (unsigned char joy);

View File

@ -30,7 +30,7 @@
.export _rs232_put, _rs232_pause, _rs232_unpause, _rs232_status
.export k_rs232
.include "zeropage.inc"
.include "cbm510.inc"
;----------------------------------------------------------------------------

View File

@ -1,105 +0,0 @@
;
; Zero page variables for the CBM P500
;
; Taken from a kernal disassembly done by myself in 2000/2001.
;
; Ullrich von Bassewitz, 13.09.2001
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
SCREEN_PTR = $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
CURS_FLAG = $E6 ; 1 = no cursor
CURS_BLINK = $E7 ; cursor blink counter
CRAM_PTR = $E8
TempColor = $EA
CURS_STATE = $EB ; Cursor blink state
CHARCOLOR = $EC
CURS_COLOR = $ED ; Color behind cursor
OutCharTmp = $EE
ScreenSeq = $EF ; Segment of video RAM

View File

@ -7,7 +7,7 @@
.export set_bank, sys_bank, restore_bank
.importzp ptr1
.include "zeropage.inc"
.include "cbm610.inc"
.code

View File

@ -9,8 +9,7 @@
.export _brk_a, _brk_x, _brk_y, _brk_sr, _brk_pc
.import _atexit
.include "zeropage.inc"
.include "page3.inc"
.include "cbm610.inc"
.bss

View File

@ -1,17 +1,289 @@
;
; CBM610 generic definitions.
; 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
; ---------------------------------------------------------------------------
; Vector and other locations
; 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
FUNKEY_VEC = $03B5
; ---------------------------------------------------------------------------
; I/O
; 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

View File

@ -8,8 +8,7 @@
.import plot, write_crtc
.import cursor
.include "zeropage.inc"
.include "page3.inc"
.include "cbm610.inc"
_cgetc: lda KeyIndex ; Get number of characters

View File

@ -7,7 +7,7 @@
.export _clrscr
.import plot
.include "zeropage.inc"
.include "cbm610.inc"
.proc _clrscr

View File

@ -13,7 +13,6 @@
.import xsize, revers
.include "cbm610.inc"
.include "zeropage.inc"
.include "../cbm/cbm.inc"
_cputcxy:
@ -71,7 +70,7 @@ L4: inc CURS_Y
; Handle character if high bit set
L10: and #$7F
L10: and #$7F
cmp #$7E ; PI?
bne L11
lda #$5E ; Load screen code for PI

View File

@ -12,39 +12,9 @@
.import k_irq, k_nmi, k_plot, k_udtim, k_scnkey
.include "zeropage.inc"
.include "io.inc"
.include "cbm610.inc"
; ------------------------------------------------------------------------
; Define and export the ZP variables for the CBM610 runtime
.exportzp sp, sreg, regsave
.exportzp ptr1, ptr2, ptr3, ptr4
.exportzp tmp1, tmp2, tmp3, tmp4
.exportzp regbank, zpspace
.exportzp crtc, sid, IPCcia, cia, acia, tpi1, tpi2
.exportzp ktab1, ktab2, ktab3, ktab4, time, RecvBuf, SendBuf
.zeropage
zpstart = *
sp: .res 2 ; Stack pointer
sreg: .res 2 ; Secondary register/high 16 bit for longs
regsave: .res 2 ; slot to save/restore (E)AX into
ptr1: .res 2
ptr2: .res 2
ptr3: .res 2
ptr4: .res 2
tmp1: .res 1
tmp2: .res 1
tmp3: .res 1
tmp4: .res 1
regbank: .res 6 ; 6 byte register bank
zpspace = * - zpstart ; Zero page space allocated
.code
; ------------------------------------------------------------------------
; BASIC header and a small BASIC program. Since it is not possible to start
; programs in other banks using SYS, the BASIC program will write a small
@ -74,6 +44,8 @@ zpspace = * - zpstart ; Zero page space allocated
; that is overwritten later.
;
.code
; To make things more simple, make the code of this module absolute.
.org $0001
@ -415,4 +387,4 @@ k_settim:
spsave: .res 1

View File

@ -8,7 +8,6 @@
.importzp crtc
.include "cbm610.inc"
.include "zeropage.inc"
; Write a value to the CRTC. The index is in Y, the value in A

View File

@ -1,108 +0,0 @@
;
; I/O definitions for the CBM 610
;
; Taken from a kernal disassembly done by myself in 1987.
;
; Ullrich von Bassewitz, 28.09.1998
; I/O $d800: CRTC 6545
; crtc = $d800
CAdrReg = $00
CDataReg = $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

View File

@ -7,7 +7,7 @@
.export _kbhit
.import return0, return1
.include "zeropage.inc"
.include "cbm610.inc"
.proc _kbhit
lda KeyIndex ; Get number of characters

View File

@ -8,9 +8,7 @@
.import k_scnkey, k_udtim, k_rs232
.importzp tpi1
.include "zeropage.inc"
.include "io.inc"
.include "page3.inc"
.include "cbm610.inc"
; -------------------------------------------------------------------------

View File

@ -7,7 +7,7 @@
.export k_plot
.importzp crtc
.include "zeropage.inc"
.include "cbm610.inc"
.proc k_plot

View File

@ -7,9 +7,7 @@
.export k_scnkey
.importzp tpi2, ktab1, ktab2, ktab3, ktab4
.include "zeropage.inc"
.include "io.inc"
.include "page3.inc"
.include "cbm610.inc"
.proc k_scnkey

View File

@ -1,94 +0,0 @@
;
; Page 3 variables for the CBM 610
;
; Taken from a kernal disassembly done by myself in 1987.
;
; Ullrich von Bassewitz, 28.09.1998
;
; 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
funvec = $03B5 ; Vector for function key handline
FunKeyTmp = $03B7
sedt3 = $03B9
MoniSegSave = $03f0
wstvec = $03F8
WstFlag = $03FA ; Warm start flag

View File

@ -5,7 +5,7 @@
.export _peekbsys, _peekwsys
.importzp ptr1
.include "zeropage.inc"
.include "cbm610.inc"
; ------------------------------------------------------------------------

View File

@ -8,7 +8,7 @@
.import popsreg
.importzp sreg, tmp1
.include "zeropage.inc"
.include "cbm610.inc"
_pokebsys:

View File

@ -30,7 +30,7 @@
.export _rs232_put, _rs232_pause, _rs232_unpause, _rs232_status
.export k_rs232
.include "zeropage.inc"
.include "cbm610.inc"
;----------------------------------------------------------------------------
@ -327,7 +327,7 @@ _rs232_put:
lda #ErrOverflow
ldx #$00
rts
; There is enough room (character still in A)
@L3: ldx IndReg

View File

@ -1,100 +0,0 @@
;
; Zero page variables for the CBM 610
;
; Taken from a kernal disassembly done by myself in 1987.
;
; Ullrich von Bassewitz, 28.09.1998
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