--- /dev/null
+;
+; When Oric computers are in BASIC's command mode, the keyboard is in CAPS lock
+; mode (because Oric BASIC keywords must be typed in upper-case). This
+; constructor disables that mode, so that text will be typed as lower-case
+; (which is the default on other cc65 platforms).
+; This module is linked by the conio and POSIX input functions.
+;
+; 2014-08-22, Greg King
+;
+
+ .destructor restore_caps
+ .constructor disable_caps
+
+ .include "atmos.inc"
+
+
+;--------------------------------------------------------------------------
+
+; Restore the old capitals-lock state.
+
+restore_caps:
+ lda capsave
+ sta CAPSLOCK
+ rts
+
+
+;--------------------------------------------------------------------------
+; Put this constructor into a segment that can be re-used by programs.
+;
+.segment "INIT"
+
+; Turn the capitals lock off.
+
+disable_caps:
+ lda CAPSLOCK
+ sta capsave
+ lda #$7F
+ sta CAPSLOCK
+ rts
+
+
+;--------------------------------------------------------------------------
+
+.bss
+
+capsave:
+ .res 1
; Startup code for cc65 (Oric version)
;
; By Debrune Jérôme <jede@oric.org> and Ullrich von Bassewitz <uz@cc65.org>
-; 2014-08-15, Greg King
+; 2014-08-22, Greg King
;
.export _exit
.segment "STARTUP"
-; Save the zero-page area we're about to use.
+; Save the zero-page area that we're about to use.
ldx #zpspace-1
L1: lda sp,x
jsr zerobss
-; Turn capitals lock off.
-
- lda CAPSLOCK
- sta capsave
- lda #$7F
- sta CAPSLOCK
-
; Unprotect screen columns 0 and 1.
lda STATUS
and #%11011111
sta STATUS
-; Save system stuff; and, set up the stack.
+; Save some system stuff; and, set up the stack.
tsx
stx spsave ; Save system stk ptr
lda #>(__RAM_START__ + __RAM_SIZE__ + __STACKSIZE__)
sta sp+1 ; Set argument stack ptr
-; Call module constructors.
+; Call the module constructors.
jsr initlib
-; Push arguments; and, call main().
+; Push the command-line arguments; and, call main().
jsr callmain
-; Call module destructors. This is also the exit() entry.
+; Call the module destructors. This is also the exit() entry.
_exit: jsr donelib ; Run module destructors
-; Restore system stuff.
+; Restore the system stuff.
ldx spsave
txs
lda stsave
sta STATUS
-; Restore capitals lock.
-
- lda capsave
- sta CAPSLOCK
-
; Copy back the zero-page stuff.
ldx #zpspace-1
spsave: .res 1
stsave: .res 1
-capsave:
- .res 1
;
-; 2013-12-24, Greg King
+; 2014-08-22, Greg King
;
; int read (int fd, void* buf, unsigned count);
;
.import popax
.importzp ptr1, ptr2, ptr3
+ .forceimport disable_caps
.macpack generic
.include "atmos.inc"