.export set_bank, sys_bank, restore_bank
.importzp ptr1
- .include "zeropage.inc"
+ .include "cbm510.inc"
.code
.export _brk_a, _brk_x, _brk_y, _brk_sr, _brk_pc
.import _atexit
- .include "zeropage.inc"
- .include "page3.inc"
+ .include "cbm510.inc"
.bss
--- /dev/null
+;
+; 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
+
.condes k_blncur, 2
.import cursor
- .include "zeropage.inc"
- .include "page3.inc"
+ .include "cbm510.inc"
; ------------------------------------------------------------------------
@L9: sty CURS_FLAG ; Cursor on (Y = 0)
rts
-
+
.endproc
.export _clrscr
.import plot
- .include "zeropage.inc"
- .include "io.inc"
+ .include "cbm510.inc"
; ------------------------------------------------------------------------
; void __fastcall__ clrscr (void);
.proc clearpage
-
+
txa
pha ; Save count
.import sys_bank, restore_bank
.importzp vic
- .include "zeropage.inc"
- .include "io.inc"
+ .include "cbm510.inc"
; ------------------------------------------------------------------------
.exportzp CURS_X, CURS_Y
- .include "zeropage.inc"
-
+ .include "cbm510.inc"
+
.import popa, _gotoxy
.import xsize, revers
- .include "zeropage.inc"
+ .include "cbm510.inc"
.include "../cbm/cbm.inc"
; ------------------------------------------------------------------------
rts
newline:
- clc
+ clc
lda xsize
adc SCREEN_PTR
sta SCREEN_PTR
.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
; that is overwritten later.
;
+.code
+
; To make things more simple, make the code of this module absolute.
.org $0001
+++ /dev/null
-;
-; 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
-
.export _kbhit
.import return0, return1
- .include "zeropage.inc"
+ .include "cbm510.inc"
.proc _kbhit
lda KeyIndex ; Get number of characters
.import __IRQFUNC_TABLE__, __IRQFUNC_COUNT__
.importzp tpi1
- .include "zeropage.inc"
- .include "io.inc"
- .include "page3.inc"
+ .include "cbm510.inc"
; -------------------------------------------------------------------------
.import __VIDRAM_START__
.importzp crtc
- .include "zeropage.inc"
- .include "io.inc"
+ .include "cbm510.inc"
.macpack generic
.export k_scnkey
.importzp tpi2, ktab1, ktab2, ktab3, ktab4
- .include "zeropage.inc"
- .include "io.inc"
- .include "page3.inc"
+ .include "cbm510.inc"
.proc k_scnkey
.import popax, addysp1
.importzp vic, sid, ptr1, sp
- .include "zeropage.inc"
- .include "io.inc"
+ .include "cbm510.inc"
.macpack generic
+++ /dev/null
-;
-; 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
-
-
.export _peekbsys, _peekwsys
.importzp ptr1
- .include "zeropage.inc"
+ .include "cbm510.inc"
; ------------------------------------------------------------------------
.import popsreg
.importzp sreg, tmp1
- .include "zeropage.inc"
+ .include "cbm510.inc"
; ------------------------------------------------------------------------
.import sys_bank, restore_bank
.importzp cia2, tmp1
- .include "io.inc"
+ .include "cbm510.inc"
; ------------------------------------------------------------------------
; unsigned __fastcall__ readjoy (unsigned char joy);
.export _rs232_put, _rs232_pause, _rs232_unpause, _rs232_status
.export k_rs232
- .include "zeropage.inc"
+ .include "cbm510.inc"
;----------------------------------------------------------------------------
+++ /dev/null
-;
-; 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
-
.export set_bank, sys_bank, restore_bank
.importzp ptr1
- .include "zeropage.inc"
+ .include "cbm610.inc"
.code
.export _brk_a, _brk_x, _brk_y, _brk_sr, _brk_pc
.import _atexit
- .include "zeropage.inc"
- .include "page3.inc"
+ .include "cbm610.inc"
.bss
;
-; 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
+
+
.import plot, write_crtc
.import cursor
- .include "zeropage.inc"
- .include "page3.inc"
+ .include "cbm610.inc"
_cgetc: lda KeyIndex ; Get number of characters
.export _clrscr
.import plot
- .include "zeropage.inc"
+ .include "cbm610.inc"
.proc _clrscr
.import xsize, revers
.include "cbm610.inc"
- .include "zeropage.inc"
.include "../cbm/cbm.inc"
_cputcxy:
; Handle character if high bit set
-L10: and #$7F
+L10: and #$7F
cmp #$7E ; PI?
bne L11
lda #$5E ; Load screen code for PI
.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
; that is overwritten later.
;
+.code
+
; To make things more simple, make the code of this module absolute.
.org $0001
spsave: .res 1
-
+
.importzp crtc
.include "cbm610.inc"
- .include "zeropage.inc"
; Write a value to the CRTC. The index is in Y, the value in A
+++ /dev/null
-;
-; 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
-
-
-
-
.export _kbhit
.import return0, return1
- .include "zeropage.inc"
+ .include "cbm610.inc"
.proc _kbhit
lda KeyIndex ; Get number of characters
.import k_scnkey, k_udtim, k_rs232
.importzp tpi1
- .include "zeropage.inc"
- .include "io.inc"
- .include "page3.inc"
+ .include "cbm610.inc"
; -------------------------------------------------------------------------
.export k_plot
.importzp crtc
- .include "zeropage.inc"
+ .include "cbm610.inc"
.proc k_plot
.export k_scnkey
.importzp tpi2, ktab1, ktab2, ktab3, ktab4
- .include "zeropage.inc"
- .include "io.inc"
- .include "page3.inc"
+ .include "cbm610.inc"
.proc k_scnkey
+++ /dev/null
-;
-; 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
-
-
.export _peekbsys, _peekwsys
.importzp ptr1
- .include "zeropage.inc"
+ .include "cbm610.inc"
; ------------------------------------------------------------------------
.import popsreg
.importzp sreg, tmp1
- .include "zeropage.inc"
+ .include "cbm610.inc"
_pokebsys:
.export _rs232_put, _rs232_pause, _rs232_unpause, _rs232_status
.export k_rs232
- .include "zeropage.inc"
+ .include "cbm610.inc"
;----------------------------------------------------------------------------
lda #ErrOverflow
ldx #$00
rts
-
+
; There is enough room (character still in A)
@L3: ldx IndReg
+++ /dev/null
-;
-; 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
-
-
-
-
-