aboutsummaryrefslogtreecommitdiff
path: root/doc/ideas.txt
diff options
context:
space:
mode:
Diffstat (limited to 'doc/ideas.txt')
-rw-r--r--doc/ideas.txt81
1 files changed, 48 insertions, 33 deletions
diff --git a/doc/ideas.txt b/doc/ideas.txt
index 15d44dc..bdefce3 100644
--- a/doc/ideas.txt
+++ b/doc/ideas.txt
@@ -7,53 +7,68 @@ Features that should be implemented:
comes from phigan (thanks!)
- Support for (some of) the extra RAM in 64K machines. Can get an
- extra 4K because we don't need the international font or the
- floating point routines, and we can plop our custom font directly
- into $E400. *Maybe* look into using the 800 OS, which would give
+ extra 4K (97 lines) because we don't need the regular or
+ international font or the floating point routines. This can be done
+ in the standard executable: most of the work happens in the config
+ segment.
+
+ It has to be possible to disable, in case the user's using
+ e.g. Sparta 3.x (uses the under-OS RAM already) or the HSIO patch
+ that uses the intl font area for code... though, we don't *do*
+ disk I/O once the client starts, so maybe we can ignore the HSIO
+ patch issue.
+
+- *Maybe* look into using the 800 OS, which would give
another 3K (the rest of the $C000 area besides the intl font).
- This would be a separate executable (fnchatxl.xex).
+ The issue here is "live-booting" the OS (switching from XL to
+ OSB on a running system without a reboot or even a warmstart).
+ The_Doctor__ says this is possible. I'm not sure I want to bother
+ with this...
+
+- Use any extra RAM in the code area, between the end of the code
+ segment and the start of the stack, as extra screen memory.
+ Currently that's 1.7K, or 42 extra lines.
+
+- Use any extra RAM in the data area, between the end of the BSS and
+ the start of the display list/etc (at $3360), as extra screen
+ memory. Currently that's 1.4K, or 34 extra lines.
- Support for 130XE, 256K XL, etc extended RAM. Apparently a lot
of people have 1MB these days. *Lots* of screens, each with lots
- of scrollback, would be the main (only?) use for the extra RAM.
- Separate executable (fnchatxe.xex).
-
-- Custom cgetc() that doesn't block forever, and does its own
- keyclick (using POKEY, not the console speaker), so we can
- disable the click even on an 800. Also maybe we can set the
- key repeat rate on an 800... and since the clicks are done
- via POKEY, 800 users can *turn the volume down*. Also since
- we won't be using WSYNC, it opens up the possibility of
- using DLIs (if I can think of a useful use for them).
-
-- Adaptive scrollback (dynamic screen size). Using fewer screens
- would mean you get more scroll. Shorter screens steal lines from
- the top of the tallest screen as needed. Requires a display list
- that's all LMS, and each line needs to be 42 bytes (the extra
- 2 bytes are a pointer to the previous line, or 0 for the top line).
- Some lines would have to be blacklisted because they'd cross a 4K
- boundary. As a side effect, scrolling in new text would be *fast*,
- no need to move memory around, just allocate a new line and change
- the display list.
+ of scrollback, will be the only use for the extra RAM. Most of the
+ work is done in the config segment (detecting banks and letting the
+ user choose which ones to use) so it won't bloat the executable
+ much. Already have the dynamic screen stuff, with support for
+ multiple pools, so the groundwork is done at least.
- URL handling. Extract URLs from message text, send them to a
UDP port on a local machine that knows how to deal with them.
+ Or, show them as a QR code (FujiNet supports that).
- Some method of copy/paste, using the keyboard or maybe a joystick.
-- Cut buffer for ^U ^K ^W, like bash/emacs. LImited size (like,
+- Cut buffer for ^U ^K ^W, like bash/emacs. Limited size (like,
240 bytes, same as the input box).
- Support for the XEP80 (and its modern clones). This really should be
- done as dual-head: Keep the regular Atari display for screen 1,
- the edit box, and the status bar. The rest of the screens can
- display on the XEP80. One problem with this is, scrollback memory.
- Each of screens 2-7 will be ~2000 bytes per 80x25 chunk, so each
- needs 4K to be able to scroll back 1 screens' worth. So XEP80
- support might end up being a 128K-and-up-only thing.
- reifsnyderb has some code that deals with the XEP, written for use
- with CP/M, that may be useful here.
+ done as dual-head: Keep the regular Atari display for the edit box,
+ the status bar, and maybe some other info. The actual screens can
+ display on the XEP80. Unfortunately to do this right, I'll have
+ to use the XEP80's E: handler (so it'll work with modern XEP80
+ replacements like the 1090XL 80-column board), and that means giving
+ up 1.5KB of memory (the driver is bloated). reifsnyderb has some
+ code that deals with the XEP, written for use with CP/M, that may be
+ useful here.
- R: support. Compile-time switch, separate executable. Use with
FujiNet, Lantronix, or anything else where we can go like
ATDThostname:port.
+
+These last two, xep80 and R:, will be compile-time options. I can't
+afford the RAM it would take to keep all that code resident at once
+and choose at runtime. So, 4 executables:
+
+- fnchat.xex, 40 columns, FujiNet networking.
+- fnchatx.xex, 80 columns, FujiNet networking.
+- fnchatr.xex, 40 columns, R: networking.
+- fnchatrx.xex, 80 columns, R: networking.