screen editor is now easier to extend
This commit is contained in:
1 parent
c3383b9e8f
commit
ec98861613
17 files changed
+280
-174
No files matched your search
@@ -169,23 +169,13 @@ Allows to assign command to any function key, `RUN` key and `HELP` key (if selec
|
|||||||
|
|
||||||
Needs 25 bytes more space in KERNAL segment for the code. In addition, each configured key takes 3 bytes + length of the command.
|
Needs 25 bytes more space in KERNAL segment for the code. In addition, each configured key takes 3 bytes + length of the command.
|
||||||
|
|
||||||
## Eye candy
|
## Screen editor
|
||||||
|
|
||||||
### `CONFIG_COLORS_BRAND`
|
### `CONFIG_EDIT_STOPQUOTE`
|
||||||
|
|
||||||
Tries to adjust the color scheme to the selected brand. Some brands might not support this.
|
If enabled, STOP key terminates insert/quote mode (like on BlackBox cartridge).
|
||||||
|
|
||||||
### `CONFIG_BANNER_SIMPLE`, `CONFIG_BANNER_FANCY`, `CONFIG_BANNER_BRAND`
|
Feature needs 10 bytes in KERNAL segment. If unsure - enable.
|
||||||
|
|
||||||
Select startup banner - either a simple one, or with some colorful elements. `CONFIG_BANNER_BRAND` heavily depends on the selected brand, not all the brands support it.
|
|
||||||
|
|
||||||
Richer banners need more BASIC segment, varies between brands.
|
|
||||||
|
|
||||||
### `CONFIG_BANNER_PAL_NTSC`
|
|
||||||
|
|
||||||
If enabled, prints video system on startup banner. Eye candy only.
|
|
||||||
|
|
||||||
Feature needs some bytes in BASIC (depending on banner type) and about 25 bytes in KERNAL segment.
|
|
||||||
|
|
||||||
## Software features
|
## Software features
|
||||||
|
|
||||||
@@ -207,6 +197,24 @@ On the most widespread CPUs the D flag is not cleared upon entering interrupts.
|
|||||||
|
|
||||||
Feature needs 2 bytes in KERNAL segmment (for CPUs needing the patch), but at the same time allows optimizations allowing to gain some more bytes. If unsure - enable.
|
Feature needs 2 bytes in KERNAL segmment (for CPUs needing the patch), but at the same time allows optimizations allowing to gain some more bytes. If unsure - enable.
|
||||||
|
|
||||||
|
## Eye candy
|
||||||
|
|
||||||
|
### `CONFIG_COLORS_BRAND`
|
||||||
|
|
||||||
|
Tries to adjust the color scheme to the selected brand. Some brands might not support this.
|
||||||
|
|
||||||
|
### `CONFIG_BANNER_SIMPLE`, `CONFIG_BANNER_FANCY`, `CONFIG_BANNER_BRAND`
|
||||||
|
|
||||||
|
Select startup banner - either a simple one, or with some colorful elements. `CONFIG_BANNER_BRAND` heavily depends on the selected brand, not all the brands support it.
|
||||||
|
|
||||||
|
Richer banners need more BASIC segment, varies between brands.
|
||||||
|
|
||||||
|
### `CONFIG_BANNER_PAL_NTSC`
|
||||||
|
|
||||||
|
If enabled, prints video system on startup banner. Eye candy only.
|
||||||
|
|
||||||
|
Feature needs some bytes in BASIC (depending on banner type) and about 25 bytes in KERNAL segment.
|
||||||
|
|
||||||
## Debug options
|
## Debug options
|
||||||
|
|
||||||
Options in this section are for debug purposes only. If unsure - disable.
|
Options in this section are for debug purposes only. If unsure - disable.
|
||||||
|
|||||||
+12
-6
@@ -41,6 +41,7 @@
|
|||||||
// I/O devices
|
// I/O devices
|
||||||
|
|
||||||
#define CONFIG_IEC // please keep enabled for now
|
#define CONFIG_IEC // please keep enabled for now
|
||||||
|
// #define CONFIG_IEC_JIFFYDOS // please keep disabled for now
|
||||||
// #define CONFIG_TAPE_NORMAL // please keep disabled for now
|
// #define CONFIG_TAPE_NORMAL // please keep disabled for now
|
||||||
// #define CONFIG_TAPE_TURBO // please keep disabled for now
|
// #define CONFIG_TAPE_TURBO // please keep disabled for now
|
||||||
// #define CONFIG_RS232_UP2400 // please keep disabled for now
|
// #define CONFIG_RS232_UP2400 // please keep disabled for now
|
||||||
@@ -95,13 +96,9 @@
|
|||||||
.const CONFIG_KEYCMD_F14 = @""
|
.const CONFIG_KEYCMD_F14 = @""
|
||||||
|
|
||||||
|
|
||||||
// Eye candy
|
// Screen editor
|
||||||
|
|
||||||
#define CONFIG_COLORS_BRAND
|
#define CONFIG_EDIT_STOPQUOTE
|
||||||
// #define CONFIG_BANNER_SIMPLE
|
|
||||||
#define CONFIG_BANNER_FANCY
|
|
||||||
// #define CONFIG_BANNER_BRAND
|
|
||||||
#define CONFIG_SHOW_PAL_NTSC
|
|
||||||
|
|
||||||
|
|
||||||
// Software features
|
// Software features
|
||||||
@@ -111,6 +108,15 @@
|
|||||||
#define CONFIG_BCD_SAFE_INTERRUPTS
|
#define CONFIG_BCD_SAFE_INTERRUPTS
|
||||||
|
|
||||||
|
|
||||||
|
// Eye candy
|
||||||
|
|
||||||
|
#define CONFIG_COLORS_BRAND
|
||||||
|
// #define CONFIG_BANNER_SIMPLE
|
||||||
|
#define CONFIG_BANNER_FANCY
|
||||||
|
// #define CONFIG_BANNER_BRAND
|
||||||
|
#define CONFIG_SHOW_PAL_NTSC
|
||||||
|
|
||||||
|
|
||||||
// Debug options
|
// Debug options
|
||||||
|
|
||||||
// #define CONFIG_DBG_STUBS_BRK
|
// #define CONFIG_DBG_STUBS_BRK
|
||||||
|
|||||||
+12
-6
@@ -43,6 +43,7 @@
|
|||||||
// I/O devices
|
// I/O devices
|
||||||
|
|
||||||
#define CONFIG_IEC // please keep enabled for now
|
#define CONFIG_IEC // please keep enabled for now
|
||||||
|
// #define CONFIG_IEC_JIFFYDOS // please keep disabled for now
|
||||||
// #define CONFIG_TAPE_NORMAL // please keep disabled for now
|
// #define CONFIG_TAPE_NORMAL // please keep disabled for now
|
||||||
// #define CONFIG_TAPE_TURBO // please keep disabled for now
|
// #define CONFIG_TAPE_TURBO // please keep disabled for now
|
||||||
// #define CONFIG_RS232_UP2400 // please keep disabled for now
|
// #define CONFIG_RS232_UP2400 // please keep disabled for now
|
||||||
@@ -97,13 +98,9 @@
|
|||||||
.const CONFIG_KEYCMD_F14 = @""
|
.const CONFIG_KEYCMD_F14 = @""
|
||||||
|
|
||||||
|
|
||||||
// Eye candy
|
// Screen editor
|
||||||
|
|
||||||
#define CONFIG_COLORS_BRAND
|
#define CONFIG_EDIT_STOPQUOTE
|
||||||
// #define CONFIG_BANNER_SIMPLE
|
|
||||||
// #define CONFIG_BANNER_FANCY
|
|
||||||
#define CONFIG_BANNER_BRAND
|
|
||||||
// #define CONFIG_SHOW_PAL_NTSC
|
|
||||||
|
|
||||||
|
|
||||||
// Software features
|
// Software features
|
||||||
@@ -113,6 +110,15 @@
|
|||||||
#define CONFIG_BCD_SAFE_INTERRUPTS
|
#define CONFIG_BCD_SAFE_INTERRUPTS
|
||||||
|
|
||||||
|
|
||||||
|
// Eye candy
|
||||||
|
|
||||||
|
#define CONFIG_COLORS_BRAND
|
||||||
|
// #define CONFIG_BANNER_SIMPLE
|
||||||
|
// #define CONFIG_BANNER_FANCY
|
||||||
|
#define CONFIG_BANNER_BRAND
|
||||||
|
// #define CONFIG_SHOW_PAL_NTSC
|
||||||
|
|
||||||
|
|
||||||
// Debug options
|
// Debug options
|
||||||
|
|
||||||
// #define CONFIG_DBG_STUBS_BRK
|
// #define CONFIG_DBG_STUBS_BRK
|
||||||
|
|||||||
+12
-6
@@ -42,6 +42,7 @@
|
|||||||
// I/O devices
|
// I/O devices
|
||||||
|
|
||||||
#define CONFIG_IEC // please keep enabled for now
|
#define CONFIG_IEC // please keep enabled for now
|
||||||
|
// #define CONFIG_IEC_JIFFYDOS // please keep disabled for now
|
||||||
// #define CONFIG_TAPE_NORMAL // please keep disabled for now
|
// #define CONFIG_TAPE_NORMAL // please keep disabled for now
|
||||||
// #define CONFIG_TAPE_TURBO // please keep disabled for now
|
// #define CONFIG_TAPE_TURBO // please keep disabled for now
|
||||||
// #define CONFIG_RS232_UP2400 // please keep disabled for now
|
// #define CONFIG_RS232_UP2400 // please keep disabled for now
|
||||||
@@ -96,13 +97,9 @@
|
|||||||
.const CONFIG_KEYCMD_F14 = @""
|
.const CONFIG_KEYCMD_F14 = @""
|
||||||
|
|
||||||
|
|
||||||
// Eye candy
|
// Screen editor
|
||||||
|
|
||||||
// #define CONFIG_COLORS_BRAND
|
#define CONFIG_EDIT_STOPQUOTE
|
||||||
// #define CONFIG_BANNER_SIMPLE
|
|
||||||
#define CONFIG_BANNER_FANCY
|
|
||||||
// #define CONFIG_BANNER_BRAND
|
|
||||||
// #define CONFIG_SHOW_PAL_NTSC
|
|
||||||
|
|
||||||
|
|
||||||
// Software features
|
// Software features
|
||||||
@@ -112,6 +109,15 @@
|
|||||||
#define CONFIG_BCD_SAFE_INTERRUPTS
|
#define CONFIG_BCD_SAFE_INTERRUPTS
|
||||||
|
|
||||||
|
|
||||||
|
// Eye candy
|
||||||
|
|
||||||
|
// #define CONFIG_COLORS_BRAND
|
||||||
|
// #define CONFIG_BANNER_SIMPLE
|
||||||
|
#define CONFIG_BANNER_FANCY
|
||||||
|
// #define CONFIG_BANNER_BRAND
|
||||||
|
// #define CONFIG_SHOW_PAL_NTSC
|
||||||
|
|
||||||
|
|
||||||
// Debug options
|
// Debug options
|
||||||
|
|
||||||
// #define CONFIG_DBG_STUBS_BRK
|
// #define CONFIG_DBG_STUBS_BRK
|
||||||
|
|||||||
@@ -41,6 +41,7 @@
|
|||||||
// I/O devices
|
// I/O devices
|
||||||
|
|
||||||
#define CONFIG_IEC // please keep enabled for now
|
#define CONFIG_IEC // please keep enabled for now
|
||||||
|
// #define CONFIG_IEC_JIFFYDOS // please keep disabled for now
|
||||||
// #define CONFIG_TAPE_NORMAL // please keep disabled for now
|
// #define CONFIG_TAPE_NORMAL // please keep disabled for now
|
||||||
// #define CONFIG_TAPE_TURBO // please keep disabled for now
|
// #define CONFIG_TAPE_TURBO // please keep disabled for now
|
||||||
// #define CONFIG_RS232_UP2400 // please keep disabled for now
|
// #define CONFIG_RS232_UP2400 // please keep disabled for now
|
||||||
@@ -95,13 +96,9 @@
|
|||||||
.const CONFIG_KEYCMD_F14 = @""
|
.const CONFIG_KEYCMD_F14 = @""
|
||||||
|
|
||||||
|
|
||||||
// Eye candy
|
// Screen editor
|
||||||
|
|
||||||
#define CONFIG_COLORS_BRAND
|
#define CONFIG_EDIT_STOPQUOTE
|
||||||
// #define CONFIG_BANNER_SIMPLE
|
|
||||||
#define CONFIG_BANNER_FANCY
|
|
||||||
// #define CONFIG_BANNER_BRAND
|
|
||||||
#define CONFIG_SHOW_PAL_NTSC
|
|
||||||
|
|
||||||
|
|
||||||
// Software features
|
// Software features
|
||||||
@@ -111,6 +108,15 @@
|
|||||||
#define CONFIG_BCD_SAFE_INTERRUPTS
|
#define CONFIG_BCD_SAFE_INTERRUPTS
|
||||||
|
|
||||||
|
|
||||||
|
// Eye candy
|
||||||
|
|
||||||
|
#define CONFIG_COLORS_BRAND
|
||||||
|
// #define CONFIG_BANNER_SIMPLE
|
||||||
|
#define CONFIG_BANNER_FANCY
|
||||||
|
// #define CONFIG_BANNER_BRAND
|
||||||
|
#define CONFIG_SHOW_PAL_NTSC
|
||||||
|
|
||||||
|
|
||||||
// Debug options
|
// Debug options
|
||||||
|
|
||||||
// #define CONFIG_DBG_STUBS_BRK
|
// #define CONFIG_DBG_STUBS_BRK
|
||||||
|
|||||||
@@ -109,6 +109,10 @@
|
|||||||
|
|
||||||
// Check that I/O configuration is correct
|
// Check that I/O configuration is correct
|
||||||
{
|
{
|
||||||
|
#if CONFIG_IEC_JIFFYDOS && !CONFIG_IEC
|
||||||
|
.error "CONFIG_IEC_JIFFYDOS requires CONFIG_IEC"
|
||||||
|
#endif
|
||||||
|
|
||||||
.var selected_rs232 = 0;
|
.var selected_rs232 = 0;
|
||||||
|
|
||||||
#if CONFIG_RS232_UP2400
|
#if CONFIG_RS232_UP2400
|
||||||
|
|||||||
@@ -154,8 +154,8 @@
|
|||||||
.label LDTBL = $D9 // $D9-$F2 screen line link table, [!] our usage is different XXX give more details
|
.label LDTBL = $D9 // $D9-$F2 screen line link table, [!] our usage is different XXX give more details
|
||||||
.label USER = $F3 // $F3-$F4 pointer to current color RAM location
|
.label USER = $F3 // $F3-$F4 pointer to current color RAM location
|
||||||
.label KEYTAB = $F5 // $F5-$F6 pointer to keyboard lookup table
|
.label KEYTAB = $F5 // $F5-$F6 pointer to keyboard lookup table
|
||||||
.label RIBUF = $F7 // $F7-$F8 -- NOT IMPLEMENTED --
|
.label RIBUF = $F7 // $F7-$F8 -- NOT IMPLEMENTED -- XXX WIP
|
||||||
.label ROBUF = $F9 // $F9-$FA -- NOT IMPLEMENTED --
|
.label ROBUF = $F9 // $F9-$FA -- NOT IMPLEMENTED -- XXX WIP
|
||||||
// $FB $FB-$FE -- UNUSED -- free for user software
|
// $FB $FB-$FE -- UNUSED -- free for user software
|
||||||
.label BASZPT = $FF // -- NOT IMPLEMENTED --
|
.label BASZPT = $FF // -- NOT IMPLEMENTED --
|
||||||
|
|
||||||
@@ -202,10 +202,10 @@
|
|||||||
.label BITNUM = $298 // -- NOT IMPLEMENTED --
|
.label BITNUM = $298 // -- NOT IMPLEMENTED --
|
||||||
.label BAUDOF = $299 // $299-$29A -- NOT IMPLEMENTED --
|
.label BAUDOF = $299 // $299-$29A -- NOT IMPLEMENTED --
|
||||||
#endif
|
#endif
|
||||||
.label RIDBE = $29B // -- NOT IMPLEMENTED --
|
.label RIDBE = $29B // -- NOT IMPLEMENTED -- XXX WIP
|
||||||
.label RIDBS = $29C // -- NOT IMPLEMENTED --
|
.label RIDBS = $29C // -- NOT IMPLEMENTED -- XXX WIP
|
||||||
.label RODBS = $29D // -- NOT IMPLEMENTED --
|
.label RODBS = $29D // -- NOT IMPLEMENTED -- XXX WIP
|
||||||
.label RODBE = $29E // -- NOT IMPLEMENTED --
|
.label RODBE = $29E // -- NOT IMPLEMENTED -- XXX WIP
|
||||||
.label IRQTMP = $29F // $29F-$2A0 -- NOT IMPLEMENTED --
|
.label IRQTMP = $29F // $29F-$2A0 -- NOT IMPLEMENTED --
|
||||||
.label ENABL = $2A1 // -- NOT IMPLEMENTED --
|
.label ENABL = $2A1 // -- NOT IMPLEMENTED --
|
||||||
.label TODSNS = $2A2 // -- NOT IMPLEMENTED --
|
.label TODSNS = $2A2 // -- NOT IMPLEMENTED --
|
||||||
|
|||||||
@@ -0,0 +1,9 @@
|
|||||||
|
|
||||||
|
//
|
||||||
|
// CLR key handling within CHROUT
|
||||||
|
//
|
||||||
|
|
||||||
|
chrout_screen_CLR:
|
||||||
|
|
||||||
|
jsr clear_screen
|
||||||
|
jmp chrout_screen_done
|
||||||
@@ -15,7 +15,7 @@ chrout_screen_control:
|
|||||||
|
|
||||||
chrout_try_RETURN:
|
chrout_try_RETURN:
|
||||||
|
|
||||||
cmp #$0D
|
cmp #KEY_RETURN
|
||||||
bne !+
|
bne !+
|
||||||
|
|
||||||
// RETURN clears quote and insert modes, it also clears reverse flag
|
// RETURN clears quote and insert modes, it also clears reverse flag
|
||||||
@@ -27,156 +27,60 @@ chrout_try_RETURN:
|
|||||||
!:
|
!:
|
||||||
chrout_try_DEL:
|
chrout_try_DEL:
|
||||||
|
|
||||||
cmp #$14
|
cmp #KEY_DEL
|
||||||
bne !+
|
bne !+
|
||||||
jmp chrout_screen_del
|
jmp chrout_screen_DEL
|
||||||
!:
|
!:
|
||||||
|
#if CONFIG_EDIT_STOPQUOTE
|
||||||
|
chrout_try_STOP:
|
||||||
|
|
||||||
|
cmp #KEY_STOP
|
||||||
|
bne !+
|
||||||
|
|
||||||
|
lda #$00
|
||||||
|
sta QTSW
|
||||||
|
sta INSRT
|
||||||
|
// Let it run, we are saving 3 bytes on JMP this way
|
||||||
|
// and the performance hit is not going to be visible nevertheless
|
||||||
|
!:
|
||||||
|
#endif
|
||||||
chrout_try_quote:
|
chrout_try_quote:
|
||||||
|
|
||||||
lda QTSW
|
lda QTSW
|
||||||
ora INSRT
|
ora INSRT
|
||||||
beq !+
|
beq !+
|
||||||
|
txa
|
||||||
jmp chrout_screen_quote
|
jmp chrout_screen_quote
|
||||||
!:
|
!:
|
||||||
txa
|
txa
|
||||||
|
|
||||||
chrout_try_CRSR_UP:
|
chrout_try_jumptable:
|
||||||
|
|
||||||
cmp #$91
|
ldx #(__chrout_screen_jumptable_codes_end - chrout_screen_jumptable_codes - 1)
|
||||||
|
chrout_try_jumptable_loop:
|
||||||
|
cmp chrout_screen_jumptable_codes, x
|
||||||
bne !+
|
bne !+
|
||||||
|
// Found, perform a jump to subroutine
|
||||||
lda PNTR
|
lda chrout_screen_jumptable_hi, x
|
||||||
sec
|
pha
|
||||||
sbc #40
|
lda chrout_screen_jumptable_lo, x
|
||||||
sta PNTR
|
pha
|
||||||
jmp chrout_screen_calc_lptr_done
|
rts
|
||||||
!:
|
!:
|
||||||
chrout_try_CRSR_DOWN:
|
dex
|
||||||
|
bpl chrout_try_jumptable_loop
|
||||||
|
|
||||||
cmp #$11
|
|
||||||
bne !+
|
|
||||||
|
|
||||||
lda PNTR
|
|
||||||
clc
|
|
||||||
adc #40
|
|
||||||
sta PNTR
|
|
||||||
// We need to advance the pointer manually, as normalising
|
|
||||||
// now will break things. The pointer update is required
|
|
||||||
// so that we can tell if we really are on the bottom phys
|
|
||||||
// screen line or not
|
|
||||||
jsr screen_scroll_up_if_on_last_line
|
|
||||||
jmp chrout_screen_calc_lptr_done
|
|
||||||
!:
|
|
||||||
chrout_try_CRSR_LEFT:
|
|
||||||
|
|
||||||
cmp #$9D
|
|
||||||
bne !+
|
|
||||||
|
|
||||||
lda TBLX
|
|
||||||
ora PNTR
|
|
||||||
beq crsr_l1 // recalculating pointer is not really necessary, but this is a very rare case nevertheless
|
|
||||||
dec PNTR
|
|
||||||
crsr_l1:
|
|
||||||
jmp chrout_screen_calc_lptr_done
|
|
||||||
!:
|
|
||||||
chrout_try_CRSR_RIGHT:
|
|
||||||
|
|
||||||
cmp #$1D
|
|
||||||
bne !+
|
|
||||||
|
|
||||||
inc PNTR
|
|
||||||
jmp chrout_screen_calc_lptr_done
|
|
||||||
!:
|
|
||||||
chrout_try_RVS_ON:
|
|
||||||
|
|
||||||
cmp #$12
|
|
||||||
bne !+
|
|
||||||
|
|
||||||
lda #$80
|
|
||||||
bne rvs_l1
|
|
||||||
!:
|
|
||||||
chrout_try_RVS_OFF:
|
|
||||||
|
|
||||||
cmp #$92
|
|
||||||
bne !+
|
|
||||||
|
|
||||||
lda #$00
|
|
||||||
rvs_l1:
|
|
||||||
sta RVS
|
|
||||||
jmp chrout_screen_done
|
|
||||||
!:
|
|
||||||
chrout_try_MODE_GFX:
|
|
||||||
|
|
||||||
cmp #$8E
|
|
||||||
bne !+
|
|
||||||
|
|
||||||
lda VIC_YMCSB
|
|
||||||
and #$02 // to upper case
|
|
||||||
mode_l1:
|
|
||||||
sta VIC_YMCSB
|
|
||||||
jmp chrout_screen_done
|
|
||||||
!:
|
|
||||||
chrout_try_MODE_TXT:
|
|
||||||
|
|
||||||
cmp #$0E
|
|
||||||
bne !+
|
|
||||||
|
|
||||||
lda VIC_YMCSB
|
|
||||||
ora #$02 // to lower case
|
|
||||||
bne mode_l1 // branch always
|
|
||||||
!:
|
|
||||||
chrout_try_COLOR:
|
chrout_try_COLOR:
|
||||||
|
|
||||||
ldx #$0F
|
ldx #$0F
|
||||||
colour_check_loop:
|
chrout_try_color_loop:
|
||||||
cmp colour_codes,x
|
cmp colour_codes,x
|
||||||
bne !+
|
bne !+
|
||||||
stx COLOR
|
stx COLOR
|
||||||
jmp chrout_screen_done
|
jmp chrout_screen_done
|
||||||
!:
|
!:
|
||||||
dex
|
dex
|
||||||
bpl colour_check_loop
|
bpl chrout_try_color_loop
|
||||||
|
|
||||||
chrout_try_SHIFT_ENABLE:
|
|
||||||
|
|
||||||
cmp #$09
|
|
||||||
bne !+
|
|
||||||
|
|
||||||
lda #$00 // enable SHIFT+VENDOR combination
|
|
||||||
sta MODE
|
|
||||||
|
|
||||||
|
// Unknown code, or key not requiring any handling
|
||||||
jmp chrout_screen_done
|
jmp chrout_screen_done
|
||||||
!:
|
|
||||||
chrout_try_SHIFT_DISABLE:
|
|
||||||
|
|
||||||
cmp #$08
|
|
||||||
bne !+
|
|
||||||
|
|
||||||
lda #$80 // disable SHIFT+VENDOR combination
|
|
||||||
sta MODE
|
|
||||||
|
|
||||||
jmp chrout_screen_done
|
|
||||||
!:
|
|
||||||
chrout_try_HOME:
|
|
||||||
|
|
||||||
cmp #$13
|
|
||||||
bne !+
|
|
||||||
|
|
||||||
jsr cursor_home
|
|
||||||
jmp chrout_screen_done
|
|
||||||
!:
|
|
||||||
chrout_try_CLR:
|
|
||||||
|
|
||||||
cmp #$93
|
|
||||||
bne !+
|
|
||||||
|
|
||||||
jsr clear_screen
|
|
||||||
clr_l1:
|
|
||||||
jmp chrout_screen_done
|
|
||||||
!:
|
|
||||||
chrout_try_INS:
|
|
||||||
|
|
||||||
cmp #$94
|
|
||||||
bne clr_l1 // unknown code or key does not need handling
|
|
||||||
|
|
||||||
jmp chrout_screen_ins
|
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
|
||||||
|
//
|
||||||
|
// Cursor keys handling within CHROUT
|
||||||
|
//
|
||||||
|
|
||||||
|
|
||||||
|
chrout_screen_CRSR_UP:
|
||||||
|
|
||||||
|
lda PNTR
|
||||||
|
sec
|
||||||
|
sbc #40
|
||||||
|
sta PNTR
|
||||||
|
jmp chrout_screen_calc_lptr_done
|
||||||
|
|
||||||
|
chrout_screen_CRSR_DOWN:
|
||||||
|
|
||||||
|
lda PNTR
|
||||||
|
clc
|
||||||
|
adc #40
|
||||||
|
sta PNTR
|
||||||
|
// We need to advance the pointer manually, as normalising
|
||||||
|
// now will break things. The pointer update is required
|
||||||
|
// so that we can tell if we really are on the bottom phys
|
||||||
|
// screen line or not
|
||||||
|
jsr screen_scroll_up_if_on_last_line
|
||||||
|
jmp chrout_screen_calc_lptr_done
|
||||||
|
|
||||||
|
chrout_screen_CRSR_LEFT:
|
||||||
|
|
||||||
|
lda TBLX
|
||||||
|
ora PNTR
|
||||||
|
beq !+ // recalculating pointer is not really necessary, but this is a very rare case nevertheless
|
||||||
|
dec PNTR
|
||||||
|
!:
|
||||||
|
jmp chrout_screen_calc_lptr_done
|
||||||
|
|
||||||
|
chrout_screen_CRSR_RIGHT:
|
||||||
|
|
||||||
|
inc PNTR
|
||||||
|
jmp chrout_screen_calc_lptr_done
|
||||||
@@ -3,7 +3,7 @@
|
|||||||
// CHROUT routine - screen support, DEL key handling
|
// CHROUT routine - screen support, DEL key handling
|
||||||
//
|
//
|
||||||
|
|
||||||
chrout_screen_del:
|
chrout_screen_DEL:
|
||||||
|
|
||||||
// In insert mode it embeds control character
|
// In insert mode it embeds control character
|
||||||
ldx INSRT
|
ldx INSRT
|
||||||
|
|||||||
@@ -0,0 +1,19 @@
|
|||||||
|
|
||||||
|
//
|
||||||
|
// GFX/TXT mode switch handling within CHROUT
|
||||||
|
//
|
||||||
|
|
||||||
|
|
||||||
|
chrout_screen_GFX:
|
||||||
|
|
||||||
|
lda VIC_YMCSB
|
||||||
|
and #$02 // to upper case
|
||||||
|
!:
|
||||||
|
sta VIC_YMCSB
|
||||||
|
jmp chrout_screen_done
|
||||||
|
|
||||||
|
chrout_screen_TXT:
|
||||||
|
|
||||||
|
lda VIC_YMCSB
|
||||||
|
ora #$02 // to lower case
|
||||||
|
bne !- // branch always
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
|
||||||
|
//
|
||||||
|
// HOME key handling within CHROUT
|
||||||
|
//
|
||||||
|
|
||||||
|
|
||||||
|
chrout_screen_HOME:
|
||||||
|
|
||||||
|
jsr cursor_home
|
||||||
|
jmp chrout_screen_done
|
||||||
@@ -3,7 +3,7 @@
|
|||||||
// CHROUT routine - screen support, INS key handling
|
// CHROUT routine - screen support, INS key handling
|
||||||
//
|
//
|
||||||
|
|
||||||
chrout_screen_ins:
|
chrout_screen_INS:
|
||||||
|
|
||||||
// Insert (shift-DELETE)
|
// Insert (shift-DELETE)
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,55 @@
|
|||||||
|
|
||||||
|
//
|
||||||
|
// Jumptable for screen control coldes support. To improve performance, should be sorted
|
||||||
|
// starting from the least probable routine
|
||||||
|
//
|
||||||
|
|
||||||
|
chrout_screen_jumptable_codes:
|
||||||
|
|
||||||
|
.byte KEY_INS
|
||||||
|
.byte KEY_CLR
|
||||||
|
.byte KEY_HOME
|
||||||
|
.byte KEY_SHIFT_OFF
|
||||||
|
.byte KEY_SHIFT_ON
|
||||||
|
.byte KEY_TXT
|
||||||
|
.byte KEY_GFX
|
||||||
|
.byte KEY_RVS_OFF
|
||||||
|
.byte KEY_RVS_ON
|
||||||
|
.byte KEY_CRSR_RIGHT
|
||||||
|
.byte KEY_CRSR_LEFT
|
||||||
|
.byte KEY_CRSR_DOWN
|
||||||
|
.byte KEY_CRSR_UP
|
||||||
|
|
||||||
|
__chrout_screen_jumptable_codes_end:
|
||||||
|
|
||||||
|
chrout_screen_jumptable_lo:
|
||||||
|
|
||||||
|
.byte <(chrout_screen_INS - 1)
|
||||||
|
.byte <(chrout_screen_CLR - 1)
|
||||||
|
.byte <(chrout_screen_HOME - 1)
|
||||||
|
.byte <(chrout_screen_SHIFT_OFF - 1)
|
||||||
|
.byte <(chrout_screen_SHIFT_ON - 1)
|
||||||
|
.byte <(chrout_screen_TXT - 1)
|
||||||
|
.byte <(chrout_screen_GFX - 1)
|
||||||
|
.byte <(chrout_screen_RVS_OFF - 1)
|
||||||
|
.byte <(chrout_screen_RVS_ON - 1)
|
||||||
|
.byte <(chrout_screen_CRSR_RIGHT - 1)
|
||||||
|
.byte <(chrout_screen_CRSR_LEFT - 1)
|
||||||
|
.byte <(chrout_screen_CRSR_DOWN - 1)
|
||||||
|
.byte <(chrout_screen_CRSR_UP - 1)
|
||||||
|
|
||||||
|
chrout_screen_jumptable_hi:
|
||||||
|
|
||||||
|
.byte >(chrout_screen_INS - 1)
|
||||||
|
.byte >(chrout_screen_CLR - 1)
|
||||||
|
.byte >(chrout_screen_HOME - 1)
|
||||||
|
.byte >(chrout_screen_SHIFT_OFF - 1)
|
||||||
|
.byte >(chrout_screen_SHIFT_ON - 1)
|
||||||
|
.byte >(chrout_screen_TXT - 1)
|
||||||
|
.byte >(chrout_screen_GFX - 1)
|
||||||
|
.byte >(chrout_screen_RVS_OFF - 1)
|
||||||
|
.byte >(chrout_screen_RVS_ON - 1)
|
||||||
|
.byte >(chrout_screen_CRSR_RIGHT - 1)
|
||||||
|
.byte >(chrout_screen_CRSR_LEFT - 1)
|
||||||
|
.byte >(chrout_screen_CRSR_DOWN - 1)
|
||||||
|
.byte >(chrout_screen_CRSR_UP - 1)
|
||||||
@@ -0,0 +1,17 @@
|
|||||||
|
|
||||||
|
//
|
||||||
|
// RVS ON/OFF handling within CHROUT
|
||||||
|
//
|
||||||
|
|
||||||
|
|
||||||
|
chrout_screen_RVS_ON:
|
||||||
|
|
||||||
|
lda #$80
|
||||||
|
bne !+ // branch always
|
||||||
|
|
||||||
|
chrout_screen_RVS_OFF:
|
||||||
|
|
||||||
|
lda #$00
|
||||||
|
!:
|
||||||
|
sta RVS
|
||||||
|
jmp chrout_screen_done
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
|
||||||
|
//
|
||||||
|
// SHIFT ON/OFF handling within CHROUT
|
||||||
|
//
|
||||||
|
|
||||||
|
chrout_screen_SHIFT_ON:
|
||||||
|
|
||||||
|
lda #$00 // enable SHIFT+VENDOR combination
|
||||||
|
!:
|
||||||
|
sta MODE
|
||||||
|
jmp chrout_screen_done
|
||||||
|
|
||||||
|
chrout_screen_SHIFT_OFF:
|
||||||
|
|
||||||
|
lda #$80 // disable SHIFT+VENDOR combination
|
||||||
|
bne !- // branch always
|
||||||
Reference in new issue
Block a user