mirror of
https://github.com/cc65/cc65.git
synced 2025-08-09 13:25:06 +00:00
Disable the Atmos keyboard's CAPS LOCK for both conio and stdio.
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
;
|
;
|
||||||
; 2003-04-13, Ullrich von Bassewitz
|
; 2003-04-13, Ullrich von Bassewitz
|
||||||
; 2013-07-26, Greg King
|
; 2014-08-21, Greg King
|
||||||
;
|
;
|
||||||
; char cgetc (void);
|
; char cgetc (void);
|
||||||
;
|
;
|
||||||
@@ -22,11 +22,11 @@
|
|||||||
|
|
||||||
; No character, enable cursor and wait
|
; No character, enable cursor and wait
|
||||||
|
|
||||||
lda cursor ; Cursor currently off?
|
lda cursor ; Should cursor be off?
|
||||||
beq @L1 ; Skip if so
|
beq @L1 ; Skip if so
|
||||||
lda STATUS
|
lsr STATUS
|
||||||
ora #%00000001 ; Cursor ON
|
sec ; Cursor ON
|
||||||
sta STATUS
|
rol STATUS
|
||||||
@L1: lda KEYBUF
|
@L1: lda KEYBUF
|
||||||
bpl @L1
|
bpl @L1
|
||||||
|
|
||||||
@@ -34,13 +34,13 @@
|
|||||||
|
|
||||||
ldx cursor
|
ldx cursor
|
||||||
beq @L2
|
beq @L2
|
||||||
ldx #$00 ; Zero high byte
|
|
||||||
dec STATUS ; Clear bit zero
|
dec STATUS ; Clear bit zero
|
||||||
|
|
||||||
; We have the character, clear avail flag
|
; We have the character, clear avail flag
|
||||||
|
|
||||||
@L2: and #$7F ; Mask out avail flag
|
@L2: and #$7F ; Mask out avail flag
|
||||||
sta KEYBUF
|
sta KEYBUF
|
||||||
|
ldx #>0
|
||||||
ldy MODEKEY
|
ldy MODEKEY
|
||||||
cpy #FUNCTKEY
|
cpy #FUNCTKEY
|
||||||
bne @L3
|
bne @L3
|
||||||
@@ -53,16 +53,12 @@
|
|||||||
.endproc
|
.endproc
|
||||||
|
|
||||||
; ------------------------------------------------------------------------
|
; ------------------------------------------------------------------------
|
||||||
; Switch the cursor off, disable capslock. Code goes into the INIT segment
|
; Switch the cursor off. Code goes into the INIT segment
|
||||||
; which may be reused after it is run.
|
; which may be reused after it is run.
|
||||||
|
|
||||||
.segment "INIT"
|
.segment "INIT"
|
||||||
|
|
||||||
initcgetc:
|
initcgetc:
|
||||||
lda STATUS
|
lsr STATUS
|
||||||
and #%11111110
|
asl STATUS ; Clear bit zero
|
||||||
sta STATUS
|
|
||||||
lda #$7F
|
|
||||||
sta CAPSLOCK
|
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
@@ -2,6 +2,7 @@
|
|||||||
; Startup code for cc65 (Oric version)
|
; Startup code for cc65 (Oric version)
|
||||||
;
|
;
|
||||||
; By Debrune J<>r<EFBFBD>me <jede@oric.org> and Ullrich von Bassewitz <uz@cc65.org>
|
; By Debrune J<>r<EFBFBD>me <jede@oric.org> and Ullrich von Bassewitz <uz@cc65.org>
|
||||||
|
; 2014-08-15, Greg King
|
||||||
;
|
;
|
||||||
|
|
||||||
.export _exit
|
.export _exit
|
||||||
@@ -39,26 +40,33 @@
|
|||||||
|
|
||||||
.segment "STARTUP"
|
.segment "STARTUP"
|
||||||
|
|
||||||
; Save the zero page area we're about to use
|
; Save the zero-page area we're about to use.
|
||||||
|
|
||||||
ldx #zpspace-1
|
ldx #zpspace-1
|
||||||
L1: lda sp,x
|
L1: lda sp,x
|
||||||
sta zpsave,x ; Save the zero page locations we need
|
sta zpsave,x
|
||||||
dex
|
dex
|
||||||
bpl L1
|
bpl L1
|
||||||
|
|
||||||
; Clear the BSS data
|
; Clear the BSS data.
|
||||||
|
|
||||||
jsr zerobss
|
jsr zerobss
|
||||||
|
|
||||||
; Unprotect columns 0 and 1
|
; Turn capitals lock off.
|
||||||
|
|
||||||
|
lda CAPSLOCK
|
||||||
|
sta capsave
|
||||||
|
lda #$7F
|
||||||
|
sta CAPSLOCK
|
||||||
|
|
||||||
|
; Unprotect screen columns 0 and 1.
|
||||||
|
|
||||||
lda STATUS
|
lda STATUS
|
||||||
sta stsave
|
sta stsave
|
||||||
and #%11011111
|
and #%11011111
|
||||||
sta STATUS
|
sta STATUS
|
||||||
|
|
||||||
; Save system stuff and setup the stack
|
; Save system stuff; and, set up the stack.
|
||||||
|
|
||||||
tsx
|
tsx
|
||||||
stx spsave ; Save system stk ptr
|
stx spsave ; Save system stk ptr
|
||||||
@@ -68,26 +76,31 @@ L1: lda sp,x
|
|||||||
lda #>(__RAM_START__ + __RAM_SIZE__ + __STACKSIZE__)
|
lda #>(__RAM_START__ + __RAM_SIZE__ + __STACKSIZE__)
|
||||||
sta sp+1 ; Set argument stack ptr
|
sta sp+1 ; Set argument stack ptr
|
||||||
|
|
||||||
; Call module constructors
|
; Call module constructors.
|
||||||
|
|
||||||
jsr initlib
|
jsr initlib
|
||||||
|
|
||||||
; Push arguments and call main()
|
; Push arguments; and, call main().
|
||||||
|
|
||||||
jsr callmain
|
jsr callmain
|
||||||
|
|
||||||
; Call module destructors. This is also the _exit entry.
|
; Call module destructors. This is also the exit() entry.
|
||||||
|
|
||||||
_exit: jsr donelib ; Run module destructors
|
_exit: jsr donelib ; Run module destructors
|
||||||
|
|
||||||
; Restore system stuff
|
; Restore system stuff.
|
||||||
|
|
||||||
ldx spsave
|
ldx spsave
|
||||||
txs
|
txs
|
||||||
lda stsave
|
lda stsave
|
||||||
sta STATUS
|
sta STATUS
|
||||||
|
|
||||||
; Copy back the zero page stuff
|
; Restore capitals lock.
|
||||||
|
|
||||||
|
lda capsave
|
||||||
|
sta CAPSLOCK
|
||||||
|
|
||||||
|
; Copy back the zero-page stuff.
|
||||||
|
|
||||||
ldx #zpspace-1
|
ldx #zpspace-1
|
||||||
L2: lda zpsave,x
|
L2: lda zpsave,x
|
||||||
@@ -95,7 +108,7 @@ L2: lda zpsave,x
|
|||||||
dex
|
dex
|
||||||
bpl L2
|
bpl L2
|
||||||
|
|
||||||
; Back to BASIC
|
; Back to BASIC.
|
||||||
|
|
||||||
rts
|
rts
|
||||||
|
|
||||||
@@ -111,3 +124,5 @@ zpsave: .res zpspace
|
|||||||
|
|
||||||
spsave: .res 1
|
spsave: .res 1
|
||||||
stsave: .res 1
|
stsave: .res 1
|
||||||
|
capsave:
|
||||||
|
.res 1
|
||||||
|
Reference in New Issue
Block a user