Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/taviso/lotusdrv
Lotus 1-2-3 R4D Display Driver for DOSEMU
https://github.com/taviso/lotusdrv
123 dos retrocomputing
Last synced: 3 months ago
JSON representation
Lotus 1-2-3 R4D Display Driver for DOSEMU
- Host: GitHub
- URL: https://github.com/taviso/lotusdrv
- Owner: taviso
- Created: 2021-03-01T15:55:49.000Z (almost 4 years ago)
- Default Branch: master
- Last Pushed: 2022-05-21T21:01:25.000Z (over 2 years ago)
- Last Synced: 2024-08-05T10:13:09.696Z (6 months ago)
- Topics: 123, dos, retrocomputing
- Language: C
- Homepage:
- Size: 311 KB
- Stars: 147
- Watchers: 9
- Forks: 2
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Lotus 1-2-3 R4D Display Driver for DOSEMU2
This is a work-in-progress display driver for Lotus 1-2-3 R4D to enable support
for arbitrary text resolutions in [DOSEMU2](https://github.com/dosemu2/dosemu2).That means you can run 123 in a maximized xterm, and see more columns than
you could possibly need!![screenshot](screenshot.png)
> Note: This driver is intended for DOSEMU2 in *term* mode, i.e. running in a terminal.
This driver basically works, but I haven't fully implemented all the API, so if you
do something unusual it might trap.If you are excited to help hacking on this, or writing modern add-ins for
1-2-3, I'd love to hear about it!Future ideas:
- A FILE driver that adds native support for XLS, or ODT?
- ~~libcaca support so that text mode graphs work?~~ working on it!
- More modern @functions?
- Javascript/Python/lua bindings?# Graphs
I have an incomplete ascii-art graphics implementation. That means drawing
simple graphs will work even in a terminal! Don't expect high resolution
graphics, but simple line, bar, and even pie charts really do work!Here is a screenshot of a sine wave line graph, it will improve in future.
![sinewave](lotus-sine-wave.gif)
I have some development notes available
[here](https://lock.cmpxchg8b.com/lotus123.html).# Building
> If you just want a binary to try, check out the Releases section.
Note that this code isn't really ready for non-developer use yet, but you're
welcome to try it out and tell me about any visual glitches or crashes!# 123 FAQ
**Q. Which display driver should I be using for terminal mode?**
A. Select the CGA driver during install, then install this driver :-)
**Q. If I use the /Worksheet/Status command, 123 does not see all the EMS/XMS memory I have configured in DOSEMU?**
A. Try adding `SET 123MEMSIZE=134217728` (that's 128M, use an appropriate number for your configuration) to `fdppauto.bat`.
There is also `123SWAPPATH`, `123VIRTSIZE` and `123SWAPSIZE` if you want to tweak it.
**Q. If I try to use 123 in two xterms simultaneously, I get an error like "The stand-alone license is not currently available".**
A. Add something like this to your `fdppauto.bat`
```bat
REM CLEAN UP LICENSE FOR 1-2-3
DEL C:\123R4D\LICENSE.000 > NUL
COPY NUL C:\123R4D\LICENSE.000 > NUL
```**Q. What DOSEMU settings do you use for 123?**
A. Here is my [dosemurc](https://lock.cmpxchg8b.com/files/dosemurc)
**Q. How can I send 123 worksheets to someone else?**
A. LibreOffice can open and convert WK3 files, if necessary. Most formulas and features will be preserved.
**Q. Can I fetch external data into 123, like stock prices with a macro?**
A. I use a macro like this to fetch stock prices (simplified):
```
{SYSTEM "UNIX stocks.sh GOOGL > %TEMP%\STOCKS.TXT"}
{OPEN "C:\TMP\STOCKS.TXT", "r"}
{READLN C1}
{CLOSE}
```The `UNIX` command is a `DOSEMU` feature, it runs a command on the host. The
123 online help explains how to loop over ranges, etc.I have an example sheet that demonstrates how to do this available
[here](https://lock.cmpxchg8b.com/files/findemo.wk3), you can use it as a
template.It automatically populates a table of stock prices when you press `Alt-R`. Use
`Ctrl-PgUp` and `Ctrl-PgDn` to switch sheets and browse around.You will need a script in your `$PATH` called `stocks.sh` like this, and don't
forget to add the full path to your `$_unix_exec` in `.dosemurc`.```bash
#!/bin/bashdeclare api="https://query1.finance.yahoo.com/v7/finance/quote"
declare filter=".quoteResponse.result[].regularMarketPrice"curl -s "${api}?symbols=${1:-^GSPC}" | jq -r "${filter}" | cat
```**Q. What do I need to know to get started?**
A. If you don't have a manual, there's one available online [here](https://archive.org/details/lotus-1-2-3-release-3.1-reference/Lotus%201-2-3%20Release%203.1%20-%20Tutorial).
If you've used any spreadsheet before, you should be able to get started
quickly. Functions use `@` instead of `=`, but the common functions like
`@SUM`, `@AVG`, `@INDEX`, and even `@HLOOKUP` all work as you would expect.| Key | Description |
| --- | ------------|
| / | Open the 123 menu.
| F1 | Open online help.
| F2 | Edit an existing cell contents, just type to overwrite cell.
| F3 | Show names, press F3 while editing to see a list of functions or ranges.
| F4 | Enter point mode - it's like visual mode in Vim - to select ranges.
| F5 | Goto Address.
| Ctrl PgUp/PgDn | Move between open tabs/sheets (use /Worksheet/Insert/Sheet to add a tab).
| F9 | Recalculate, if you press it while entering a formula, the text will be replaced with it's value.If you want to be able to save your documents to your home directory, you can
add something like `LREDIR D: \\linux\fs\home\foo\Documents` to your `fdppauto.bat`.**Q. Why does selecting text with the mouse not work?**
DOSEMU emulates a mouse (even in terminal mode!) so when you try to select text
DOSEMU is reporting mouse events to DOS.How to stop that happening depends on your terminal.
In `XTerm` you can Shift-RightClick and disable "Allow Mouse Ops", change the
`allowMouseOps` resource to make it permanent.In most terminals you can hold down `Shift` while selecting.
**Q. How do I undo my last action?**
The default keybinding is `Alt-F4`, but that can be hard to enter on modern systems.
If you can't press `Alt-F4` easily, there are two options.
1. DOSEMU has support for simulating modifier keys, you can
type: Ctrl-6 Shift-A F4 Ctrl-6 Shift-A.
2. That's a lot of keys though, another workaround is to add
[SCANCODE](http://bretjohnson.us/index.htm) to your `%PATH%`, and then bind
a macro to something like `{SYSTEM "SCANCODE M 2,W 1,0 \"READY\",ALT-F4"}`.You can then bind a macro to `Alt-Z` by naming a range `\z`.