mirror of
https://github.com/cc65/cc65.git
synced 2024-12-22 12:30:41 +00:00
PET-II improvements
git-svn-id: svn://svn.cc65.org/cc65/trunk@2849 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
parent
7c609c4e8e
commit
96ef6d828f
@ -72,6 +72,109 @@
|
|||||||
.endproc
|
.endproc
|
||||||
|
|
||||||
|
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
|
; Page 3 data. This page contains the break vector and the bankswitch
|
||||||
|
; subroutine that is copied into high memory on startup. The space occupied by
|
||||||
|
; this routine will later be used for a copy of the bank 15 stack. It must be
|
||||||
|
; saved, since we're going to destroy it when calling bank 15.
|
||||||
|
|
||||||
|
.segment "PAGE3"
|
||||||
|
|
||||||
|
BRKVec: .addr _exit ; BRK indirect vector
|
||||||
|
|
||||||
|
.proc callbank15
|
||||||
|
|
||||||
|
excrts = $FEFE
|
||||||
|
|
||||||
|
.org $FEC3
|
||||||
|
|
||||||
|
entry: php
|
||||||
|
pha
|
||||||
|
lda #$0F ; Bank 15
|
||||||
|
sta IndReg
|
||||||
|
txa
|
||||||
|
pha
|
||||||
|
tya
|
||||||
|
pha
|
||||||
|
sei
|
||||||
|
ldy #$FF
|
||||||
|
lda (sysp1),y
|
||||||
|
tay
|
||||||
|
lda ExecReg
|
||||||
|
sta (sysp1),y
|
||||||
|
dey
|
||||||
|
|
||||||
|
lda #.hibyte(excrts-1)
|
||||||
|
sta (sysp1),y
|
||||||
|
dey
|
||||||
|
lda #.lobyte(excrts-1)
|
||||||
|
sta (sysp1),y
|
||||||
|
|
||||||
|
tya
|
||||||
|
sec
|
||||||
|
sbc #7
|
||||||
|
sta $1FF ; Save new sp
|
||||||
|
tay
|
||||||
|
|
||||||
|
tsx
|
||||||
|
|
||||||
|
pla
|
||||||
|
iny
|
||||||
|
sta (sysp1),y
|
||||||
|
pla
|
||||||
|
iny
|
||||||
|
sta (sysp1),y
|
||||||
|
pla
|
||||||
|
iny
|
||||||
|
sta (sysp1),y
|
||||||
|
pla
|
||||||
|
iny
|
||||||
|
sta (sysp1),y
|
||||||
|
|
||||||
|
lda $105,x
|
||||||
|
sec
|
||||||
|
sbc #3
|
||||||
|
iny
|
||||||
|
sta (sysp1),y
|
||||||
|
lda $106,x
|
||||||
|
sbc #0
|
||||||
|
iny
|
||||||
|
sta (sysp1),y
|
||||||
|
|
||||||
|
ldy $1FF ; Restore sp in bank 15
|
||||||
|
|
||||||
|
lda #.hibyte(expull-1)
|
||||||
|
sta (sysp1),y
|
||||||
|
dey
|
||||||
|
lda #.lobyte(expull-1)
|
||||||
|
sta (sysp1),y
|
||||||
|
dey
|
||||||
|
pla
|
||||||
|
pla
|
||||||
|
tsx
|
||||||
|
stx $1FF
|
||||||
|
tya
|
||||||
|
tax
|
||||||
|
txs
|
||||||
|
lda IndReg
|
||||||
|
jmp $FFF6
|
||||||
|
|
||||||
|
expull: pla
|
||||||
|
tay
|
||||||
|
pla
|
||||||
|
tax
|
||||||
|
pla
|
||||||
|
plp
|
||||||
|
rts
|
||||||
|
|
||||||
|
.if (expull <> $FF26)
|
||||||
|
.error "Symbol expull must be aligned with kernal in bank 15"
|
||||||
|
.endif
|
||||||
|
|
||||||
|
.reloc
|
||||||
|
|
||||||
|
.endproc
|
||||||
|
|
||||||
;------------------------------------------------------------------------------
|
;------------------------------------------------------------------------------
|
||||||
; The code in the target bank when switching back will be put at the bottom
|
; The code in the target bank when switching back will be put at the bottom
|
||||||
; of the stack. We will jump here to switch segments. The range $F2..$FF is
|
; of the stack. We will jump here to switch segments. The range $F2..$FF is
|
||||||
@ -79,11 +182,7 @@
|
|||||||
|
|
||||||
.segment "STARTUP"
|
.segment "STARTUP"
|
||||||
|
|
||||||
Back: sei
|
Back: sta ExecReg
|
||||||
ldx spsave
|
|
||||||
txs
|
|
||||||
lda IndReg
|
|
||||||
sta ExecReg
|
|
||||||
|
|
||||||
; We are at $100 now. The following snippet is a copy of the code that is poked
|
; We are at $100 now. The following snippet is a copy of the code that is poked
|
||||||
; in the system bank memory by the basic header program, it's only for
|
; in the system bank memory by the basic header program, it's only for
|
||||||
@ -129,27 +228,9 @@ Back: sei
|
|||||||
.word $ebd1 ; ktab4
|
.word $ebd1 ; ktab4
|
||||||
.endproc
|
.endproc
|
||||||
|
|
||||||
; The following code is part of the kernal call subroutine. It is copied
|
|
||||||
; to $FFAE
|
|
||||||
|
|
||||||
.proc callsysbank_15
|
|
||||||
php
|
|
||||||
pha
|
|
||||||
lda #$0F ; Bank 15
|
|
||||||
sta IndReg
|
|
||||||
sei
|
|
||||||
.endproc
|
|
||||||
|
|
||||||
; Save the old stack pointer from the system bank and setup our hw sp
|
|
||||||
|
|
||||||
Origin: tsx
|
|
||||||
stx spsave ; Save the system stackpointer
|
|
||||||
ldx #$FE ; Leave $1FF untouched for cross bank calls
|
|
||||||
txs ; Set up our own stack
|
|
||||||
|
|
||||||
; Switch the indirect segment to the system bank
|
; Switch the indirect segment to the system bank
|
||||||
|
|
||||||
lda #$0F
|
Origin: lda #$0F
|
||||||
sta IndReg
|
sta IndReg
|
||||||
|
|
||||||
; Initialize the extended zeropage
|
; Initialize the extended zeropage
|
||||||
@ -160,6 +241,15 @@ L1: lda extzp,x
|
|||||||
dex
|
dex
|
||||||
bpl L1
|
bpl L1
|
||||||
|
|
||||||
|
; Save the old stack pointer from the system bank and setup our hw sp
|
||||||
|
|
||||||
|
tsx
|
||||||
|
txa
|
||||||
|
ldy #$FF
|
||||||
|
sta (sysp1),y ; Save system stack point into $F:$1FF
|
||||||
|
ldx #$FE ; Leave $1FF untouched for cross bank calls
|
||||||
|
txs ; Set up our own stack
|
||||||
|
|
||||||
; Copy stuff from the system zeropage to ours
|
; Copy stuff from the system zeropage to ours
|
||||||
|
|
||||||
lda #.sizeof(transfer_table)
|
lda #.sizeof(transfer_table)
|
||||||
@ -184,57 +274,34 @@ L3: lda vectors,x
|
|||||||
|
|
||||||
; Setup the C stack
|
; Setup the C stack
|
||||||
|
|
||||||
lda #.lobyte($FEAE - .sizeof(callsysbank_15))
|
lda #.lobyte(callbank15::entry)
|
||||||
sta sp
|
sta sp
|
||||||
lda #.hibyte($FEAE - .sizeof(callsysbank_15))
|
lda #.hibyte(callbank15::entry)
|
||||||
sta sp+1
|
sta sp+1
|
||||||
|
|
||||||
; Setup the subroutine and jump vector table that redirects kernal calls to
|
; Setup the subroutine and jump vector table that redirects kernal calls to
|
||||||
; the system bank. Copy the bank switch routines starting at $FEAE from the
|
; the system bank.
|
||||||
; system bank into the current bank.
|
|
||||||
|
|
||||||
|
ldy #.sizeof(callbank15)
|
||||||
ldy #.sizeof(callsysbank_15)-1 ; Copy the modified part
|
@L1: lda callbank15-1,y
|
||||||
@L1: lda callsysbank_15,y
|
sta callbank15::entry-1,y
|
||||||
sta $FEAE - .sizeof(callsysbank_15),y
|
|
||||||
dey
|
dey
|
||||||
bpl @L1
|
bne @L1
|
||||||
|
|
||||||
lda #.lobyte($FEAE) ; Copy the ROM part
|
; Setup the jump vector table. Y is zero on entry.
|
||||||
sta ptr1
|
|
||||||
lda #.hibyte($FEAE)
|
|
||||||
sta ptr1+1
|
|
||||||
ldy #$00
|
|
||||||
@L2: lda (ptr1),y
|
|
||||||
sta $FEAE,y
|
|
||||||
iny
|
|
||||||
cpy #<($FF6F-$FEAE)
|
|
||||||
bne @L2
|
|
||||||
|
|
||||||
; Setup the jump vector table
|
|
||||||
|
|
||||||
ldy #$00
|
|
||||||
ldx #45-1 ; Number of vectors
|
ldx #45-1 ; Number of vectors
|
||||||
@L3: lda #$20 ; JSR opcode
|
@L2: lda #$20 ; JSR opcode
|
||||||
sta $FF6F,y
|
sta $FF6F,y
|
||||||
iny
|
iny
|
||||||
lda #.lobyte($FEAE - .sizeof(callsysbank_15))
|
lda #.lobyte(callbank15::entry)
|
||||||
sta $FF6F,y
|
sta $FF6F,y
|
||||||
iny
|
iny
|
||||||
lda #.hibyte($FEAE - .sizeof(callsysbank_15))
|
lda #.hibyte(callbank15::entry)
|
||||||
sta $FF6F,y
|
sta $FF6F,y
|
||||||
iny
|
iny
|
||||||
dex
|
dex
|
||||||
bpl @L3
|
bpl @L2
|
||||||
|
|
||||||
; Copy the stack from the system bank into page 3
|
|
||||||
|
|
||||||
ldy #$FF
|
|
||||||
L4: lda (sysp1),y
|
|
||||||
sta $300,y
|
|
||||||
dey
|
|
||||||
cpy spsave
|
|
||||||
bne L4
|
|
||||||
|
|
||||||
; Set the indirect segment to bank we're executing in
|
; Set the indirect segment to bank we're executing in
|
||||||
|
|
||||||
@ -414,23 +481,20 @@ _exit: lda #$00
|
|||||||
bne @L0
|
bne @L0
|
||||||
.endif
|
.endif
|
||||||
|
|
||||||
; Copy back the old system bank stack contents
|
|
||||||
|
|
||||||
ldy #$FF
|
|
||||||
@L1: lda $300,y
|
|
||||||
sta (sysp1),y
|
|
||||||
dey
|
|
||||||
cpy spsave
|
|
||||||
bne @L1
|
|
||||||
|
|
||||||
; Setup the welcome code at the stack bottom in the system bank.
|
; Setup the welcome code at the stack bottom in the system bank.
|
||||||
|
|
||||||
ldy #$00
|
ldy #$FF
|
||||||
|
lda (sysp1),y ; Load system bank sp
|
||||||
|
tax
|
||||||
|
iny ; Y = 0
|
||||||
lda #$58 ; CLI opcode
|
lda #$58 ; CLI opcode
|
||||||
sta (sysp1),y
|
sta (sysp1),y
|
||||||
iny
|
iny
|
||||||
lda #$60 ; RTS opcode
|
lda #$60 ; RTS opcode
|
||||||
sta (sysp1),y
|
sta (sysp1),y
|
||||||
|
lda IndReg
|
||||||
|
sei
|
||||||
|
txs
|
||||||
jmp Back
|
jmp Back
|
||||||
|
|
||||||
; -------------------------------------------------------------------------
|
; -------------------------------------------------------------------------
|
||||||
@ -504,19 +568,10 @@ nmi: rti
|
|||||||
|
|
||||||
dobrk: jmp (BRKVec)
|
dobrk: jmp (BRKVec)
|
||||||
|
|
||||||
; -------------------------------------------------------------------------
|
|
||||||
; Page 3
|
|
||||||
|
|
||||||
.segment "PAGE3"
|
|
||||||
|
|
||||||
BRKVec: .addr _exit ; BRK indirect vector
|
|
||||||
|
|
||||||
|
|
||||||
; -------------------------------------------------------------------------
|
; -------------------------------------------------------------------------
|
||||||
; Data area
|
; Data area
|
||||||
|
|
||||||
.data
|
.data
|
||||||
spsave: .res 1
|
|
||||||
vidsave:.res 3
|
vidsave:.res 3
|
||||||
|
|
||||||
.bss
|
.bss
|
||||||
|
@ -72,6 +72,109 @@
|
|||||||
.endproc
|
.endproc
|
||||||
|
|
||||||
|
|
||||||
|
;------------------------------------------------------------------------------
|
||||||
|
; Page 3 data. This page contains the break vector and the bankswitch
|
||||||
|
; subroutine that is copied into high memory on startup. The space occupied by
|
||||||
|
; this routine will later be used for a copy of the bank 15 stack. It must be
|
||||||
|
; saved, since we're going to destroy it when calling bank 15.
|
||||||
|
|
||||||
|
.segment "PAGE3"
|
||||||
|
|
||||||
|
BRKVec: .addr _exit ; BRK indirect vector
|
||||||
|
|
||||||
|
.proc callbank15
|
||||||
|
|
||||||
|
excrts = $FF05
|
||||||
|
|
||||||
|
.org $FECB
|
||||||
|
|
||||||
|
entry: php
|
||||||
|
pha
|
||||||
|
lda #$0F ; Bank 15
|
||||||
|
sta IndReg
|
||||||
|
txa
|
||||||
|
pha
|
||||||
|
tya
|
||||||
|
pha
|
||||||
|
sei
|
||||||
|
ldy #$FF
|
||||||
|
lda (sysp1),y
|
||||||
|
tay
|
||||||
|
lda ExecReg
|
||||||
|
sta (sysp1),y
|
||||||
|
dey
|
||||||
|
|
||||||
|
lda #.hibyte(excrts-1)
|
||||||
|
sta (sysp1),y
|
||||||
|
dey
|
||||||
|
lda #.lobyte(excrts-1)
|
||||||
|
sta (sysp1),y
|
||||||
|
|
||||||
|
tya
|
||||||
|
sec
|
||||||
|
sbc #7
|
||||||
|
sta $1FF ; Save new sp
|
||||||
|
tay
|
||||||
|
|
||||||
|
tsx
|
||||||
|
|
||||||
|
pla
|
||||||
|
iny
|
||||||
|
sta (sysp1),y
|
||||||
|
pla
|
||||||
|
iny
|
||||||
|
sta (sysp1),y
|
||||||
|
pla
|
||||||
|
iny
|
||||||
|
sta (sysp1),y
|
||||||
|
pla
|
||||||
|
iny
|
||||||
|
sta (sysp1),y
|
||||||
|
|
||||||
|
lda $105,x
|
||||||
|
sec
|
||||||
|
sbc #3
|
||||||
|
iny
|
||||||
|
sta (sysp1),y
|
||||||
|
lda $106,x
|
||||||
|
sbc #0
|
||||||
|
iny
|
||||||
|
sta (sysp1),y
|
||||||
|
|
||||||
|
ldy $1FF ; Restore sp in bank 15
|
||||||
|
|
||||||
|
lda #.hibyte(expull-1)
|
||||||
|
sta (sysp1),y
|
||||||
|
dey
|
||||||
|
lda #.lobyte(expull-1)
|
||||||
|
sta (sysp1),y
|
||||||
|
dey
|
||||||
|
pla
|
||||||
|
pla
|
||||||
|
tsx
|
||||||
|
stx $1FF
|
||||||
|
tya
|
||||||
|
tax
|
||||||
|
txs
|
||||||
|
lda IndReg
|
||||||
|
jmp $FFF6
|
||||||
|
|
||||||
|
expull: pla
|
||||||
|
tay
|
||||||
|
pla
|
||||||
|
tax
|
||||||
|
pla
|
||||||
|
plp
|
||||||
|
rts
|
||||||
|
|
||||||
|
.if (expull <> $FF2E)
|
||||||
|
.error "Symbol expull must be aligned with kernal in bank 15"
|
||||||
|
.endif
|
||||||
|
|
||||||
|
.reloc
|
||||||
|
|
||||||
|
.endproc
|
||||||
|
|
||||||
;------------------------------------------------------------------------------
|
;------------------------------------------------------------------------------
|
||||||
; The code in the target bank when switching back will be put at the bottom
|
; The code in the target bank when switching back will be put at the bottom
|
||||||
; of the stack. We will jump here to switch segments. The range $F2..$FF is
|
; of the stack. We will jump here to switch segments. The range $F2..$FF is
|
||||||
@ -79,11 +182,7 @@
|
|||||||
|
|
||||||
.segment "STARTUP"
|
.segment "STARTUP"
|
||||||
|
|
||||||
Back: sei
|
Back: sta ExecReg
|
||||||
ldx spsave
|
|
||||||
txs
|
|
||||||
lda IndReg
|
|
||||||
sta ExecReg
|
|
||||||
|
|
||||||
; We are at $100 now. The following snippet is a copy of the code that is poked
|
; We are at $100 now. The following snippet is a copy of the code that is poked
|
||||||
; in the system bank memory by the basic header program, it's only for
|
; in the system bank memory by the basic header program, it's only for
|
||||||
@ -100,7 +199,7 @@ Back: sei
|
|||||||
|
|
||||||
jmp Origin
|
jmp Origin
|
||||||
|
|
||||||
; Hardware vectors, copied to $FFFA
|
; Hardware vectors, copied to $FFF6
|
||||||
|
|
||||||
.proc vectors
|
.proc vectors
|
||||||
sta ExecReg
|
sta ExecReg
|
||||||
@ -129,27 +228,9 @@ Back: sei
|
|||||||
.word $eb49 ; ktab4
|
.word $eb49 ; ktab4
|
||||||
.endproc
|
.endproc
|
||||||
|
|
||||||
; The following code is part of the kernal call subroutine. It is copied
|
|
||||||
; to $FFAE
|
|
||||||
|
|
||||||
.proc callsysbank_15
|
|
||||||
php
|
|
||||||
pha
|
|
||||||
lda #$0F ; Bank 15
|
|
||||||
sta IndReg
|
|
||||||
sei
|
|
||||||
.endproc
|
|
||||||
|
|
||||||
; Save the old stack pointer from the system bank and setup our hw sp
|
|
||||||
|
|
||||||
Origin: tsx
|
|
||||||
stx spsave ; Save the system stackpointer
|
|
||||||
ldx #$FE ; Leave $1FF untouched for cross bank calls
|
|
||||||
txs ; Set up our own stack
|
|
||||||
|
|
||||||
; Switch the indirect segment to the system bank
|
; Switch the indirect segment to the system bank
|
||||||
|
|
||||||
lda #$0F
|
Origin: lda #$0F
|
||||||
sta IndReg
|
sta IndReg
|
||||||
|
|
||||||
; Initialize the extended zeropage
|
; Initialize the extended zeropage
|
||||||
@ -160,6 +241,15 @@ L1: lda extzp,x
|
|||||||
dex
|
dex
|
||||||
bpl L1
|
bpl L1
|
||||||
|
|
||||||
|
; Save the old stack pointer from the system bank and setup our hw sp
|
||||||
|
|
||||||
|
tsx
|
||||||
|
txa
|
||||||
|
ldy #$FF
|
||||||
|
sta (sysp1),y ; Save system stack point into $F:$1FF
|
||||||
|
ldx #$FE ; Leave $1FF untouched for cross bank calls
|
||||||
|
txs ; Set up our own stack
|
||||||
|
|
||||||
; Copy stuff from the system zeropage to ours
|
; Copy stuff from the system zeropage to ours
|
||||||
|
|
||||||
lda #.sizeof(transfer_table)
|
lda #.sizeof(transfer_table)
|
||||||
@ -184,57 +274,34 @@ L3: lda vectors,x
|
|||||||
|
|
||||||
; Setup the C stack
|
; Setup the C stack
|
||||||
|
|
||||||
lda #.lobyte($FEB5 - .sizeof(callsysbank_15))
|
lda #.lobyte(callbank15::entry)
|
||||||
sta sp
|
sta sp
|
||||||
lda #.hibyte($FEB5 - .sizeof(callsysbank_15))
|
lda #.hibyte(callbank15::entry)
|
||||||
sta sp+1
|
sta sp+1
|
||||||
|
|
||||||
; Setup the subroutine and jump vector table that redirects kernal calls to
|
; Setup the subroutine and jump vector table that redirects kernal calls to
|
||||||
; the system bank. Copy the bank switch routines starting at $FEB5 from the
|
; the system bank.
|
||||||
; system bank into the current bank.
|
|
||||||
|
|
||||||
|
ldy #.sizeof(callbank15)
|
||||||
ldy #.sizeof(callsysbank_15)-1 ; Copy the modified part
|
@L1: lda callbank15-1,y
|
||||||
@L1: lda callsysbank_15,y
|
sta callbank15::entry-1,y
|
||||||
sta $FEB5 - .sizeof(callsysbank_15),y
|
|
||||||
dey
|
dey
|
||||||
bpl @L1
|
bne @L1
|
||||||
|
|
||||||
lda #.lobyte($FEB5) ; Copy the ROM part
|
; Setup the jump vector table. Y is zero on entry.
|
||||||
sta ptr1
|
|
||||||
lda #.hibyte($FEB5)
|
|
||||||
sta ptr1+1
|
|
||||||
ldy #$00
|
|
||||||
@L2: lda (ptr1),y
|
|
||||||
sta $FEB5,y
|
|
||||||
iny
|
|
||||||
cpy #<($FF6F-$FEB5)
|
|
||||||
bne @L2
|
|
||||||
|
|
||||||
; Setup the jump vector table
|
|
||||||
|
|
||||||
ldy #$00
|
|
||||||
ldx #45-1 ; Number of vectors
|
ldx #45-1 ; Number of vectors
|
||||||
@L3: lda #$20 ; JSR opcode
|
@L2: lda #$20 ; JSR opcode
|
||||||
sta $FF6F,y
|
sta $FF6F,y
|
||||||
iny
|
iny
|
||||||
lda #.lobyte($FEB5 - .sizeof(callsysbank_15))
|
lda #.lobyte(callbank15::entry)
|
||||||
sta $FF6F,y
|
sta $FF6F,y
|
||||||
iny
|
iny
|
||||||
lda #.hibyte($FEB5 - .sizeof(callsysbank_15))
|
lda #.hibyte(callbank15::entry)
|
||||||
sta $FF6F,y
|
sta $FF6F,y
|
||||||
iny
|
iny
|
||||||
dex
|
dex
|
||||||
bpl @L3
|
bpl @L2
|
||||||
|
|
||||||
; Copy the stack from the system bank into page 3
|
|
||||||
|
|
||||||
ldy #$FF
|
|
||||||
L4: lda (sysp1),y
|
|
||||||
sta $300,y
|
|
||||||
dey
|
|
||||||
cpy spsave
|
|
||||||
bne L4
|
|
||||||
|
|
||||||
; Set the indirect segment to bank we're executing in
|
; Set the indirect segment to bank we're executing in
|
||||||
|
|
||||||
@ -321,23 +388,20 @@ _exit: lda #$00
|
|||||||
bne @L0
|
bne @L0
|
||||||
.endif
|
.endif
|
||||||
|
|
||||||
; Copy back the old system bank stack contents
|
|
||||||
|
|
||||||
ldy #$FF
|
|
||||||
@L1: lda $300,y
|
|
||||||
sta (sysp1),y
|
|
||||||
dey
|
|
||||||
cpy spsave
|
|
||||||
bne @L1
|
|
||||||
|
|
||||||
; Setup the welcome code at the stack bottom in the system bank.
|
; Setup the welcome code at the stack bottom in the system bank.
|
||||||
|
|
||||||
ldy #$00
|
ldy #$FF
|
||||||
|
lda (sysp1),y ; Load system bank sp
|
||||||
|
tax
|
||||||
|
iny ; Y = 0
|
||||||
lda #$58 ; CLI opcode
|
lda #$58 ; CLI opcode
|
||||||
sta (sysp1),y
|
sta (sysp1),y
|
||||||
iny
|
iny
|
||||||
lda #$60 ; RTS opcode
|
lda #$60 ; RTS opcode
|
||||||
sta (sysp1),y
|
sta (sysp1),y
|
||||||
|
lda IndReg
|
||||||
|
sei
|
||||||
|
txs
|
||||||
jmp Back
|
jmp Back
|
||||||
|
|
||||||
; -------------------------------------------------------------------------
|
; -------------------------------------------------------------------------
|
||||||
@ -411,20 +475,9 @@ nmi: rti
|
|||||||
|
|
||||||
dobrk: jmp (BRKVec)
|
dobrk: jmp (BRKVec)
|
||||||
|
|
||||||
; -------------------------------------------------------------------------
|
|
||||||
; Page 3
|
|
||||||
|
|
||||||
.segment "PAGE3"
|
|
||||||
|
|
||||||
BRKVec: .addr _exit ; BRK indirect vector
|
|
||||||
|
|
||||||
|
|
||||||
; -------------------------------------------------------------------------
|
; -------------------------------------------------------------------------
|
||||||
; Data area.
|
; Data area.
|
||||||
|
|
||||||
.data
|
|
||||||
spsave: .res 1
|
|
||||||
|
|
||||||
.bss
|
.bss
|
||||||
irqcount: .byte 0
|
irqcount: .byte 0
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
.globalzp ktab1, ktab2, ktab3, ktab4
|
.globalzp ktab1, ktab2, ktab3, ktab4
|
||||||
|
|
||||||
.globalzp sysp0, time, segsave, ktmp, CURS_X, CURS_Y, RVS, config
|
.globalzp sysp0, time, segsave, ktmp, CURS_X, CURS_Y, RVS, config
|
||||||
.globalzp CharPtr, keyidx, keybuf, keyscanbuf, keysave, modkey
|
.globalzp CharPtr, keyidx, keybuf, keyscanbuf, keysave
|
||||||
.globalzp norkey, graphmode, lastidx, rptdelay, rptcount
|
.globalzp modkey, norkey, graphmode, lastidx, rptdelay, rptcount
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user