-
Notifications
You must be signed in to change notification settings - Fork 2
/
TODO
123 lines (101 loc) · 3.67 KB
/
TODO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
TODO
====
Required for 0.6
----------------
- Add ability to direct TRACE to a file
- Add ability to call native "C" shared objects
Required for 0.7
----------------
- Support "long lines" at the MMBasic prompt
- Add PicoMite EDITor implementation
- and add support for "long lines" to it
- Add '.' command that behaves like a combination of '*' and '!', first
looking for a .bas file to run and then trying a SYSTEM command.
- Don't include line number and filename in error message string; still show
them at prompt where appropriate and make them available via MM.INFO()
- Make default output from FILES more like that of CMM2
- Fix TODOs in 'path.c'
- (?) Implement SAVE command
- (?) Don't fake/support drive specifications, e.g. A:/
- (?) Remove use of 'goto' in 'path.c'
- (?) Remove SETTITLE and CURSOR commands
- (?) Rewrite 'tools/glibc_check.sh' in MMBasic
- Find fix for this bug:
' This will sometimes run forever,
' and occasionally do nothing because the interrupt never fires.
Option Console Both
Option Base 0
Option Default None
Option Explicit Off
Timer = 0
SetTick 5, my_interrupt
Pause 10
End
Sub my_interrupt()
? "Interrupt entered"
Print Timer
Local i%
For i% = 1 To 100000 : Next
? "Interrupt exited"
End Sub
Required for 0.8
----------------
- Remove 32K array size limit.
- Reorder interrupt processing to match PicoMite, add this as a comment to the
code:
1. ON KEY individual
2. ON KEY general
-- 3. GUI Int Down (not PicoMiteVGA)
-- 4. GUI Int Up (not PicoMiteVGA)
-- 5. ADC completion
-- 6. I2C Slave Rx
-- 7. I2C Slave Tx
-- 8. I2C2 Slave Rx
-- 9. I2C2 Slave Tx
-- 10. WAV Finished
11. COM1: Serial Port
12. COM2: Serial Port
-- 13. IR Receive
-- 14. Keypad
-- 15. Interrupt command/CSub Interrupt
-- 16. I/O Pin Interrupts in order of definition
17. Tick Interrupts (1 to 4 in that order)
- Consider options for handling of control characters in MMgetline()
- Read from serial ports directly into RxBuf
- i.e. not via a temporary buffer
- Buffer serial port writes
- Long running commands (AUTOSAVE, XMODEM) should call background processing
- Perform background processing in different thread
- Implement LOAD FONT and DEFINEFONT
- Tidy up LED snake example
- Implement CONSOLE BLINK, BOLD, FAINT, ITALIC, REVERSE, STRIKE, UNDERLINE
Required for 0.9
----------------
- Write a proper lexer and ensure all Peter's "preprocessor tricks" work in both
- programs, and
- the command-line
- Completely overhaul 'mmbasic.syntax.nanorc'
- can we fix syntax highlighting for "strings" inside comments ?
Required for 1.0
----------------
- Add option to PAUSE controlling whether it nanosleeps or not
- or an OPTION to MMBasic controlling all sleep behaviour
- Have another look at the other settings recommended for raw console mode
- Work through other MMBasic manuals implementing missing commands/functions
- Review all uses of void*
- Implement safety checks on PEEK/POKE calls
- should these be optional ?
- should address alignment of PEEK/POKE be optional ?
To infinity and beyond
----------------------
- Implement FORK, WAIT and friends
- Build on macOS
- Extend preprocessor
- Implement SWAP
- Integrate 'pigpio' with Raspberry Pi build
- High resolution graphics
- Fix bug where TRACE will not log a line that you GOTO/GOSUB using a line number,
but will if you use a label
- Can PRINT @(x,y) be implemented without using a function slot for @ ?
- Implement line continuation character _
- Implement exception handling TRY | CATCH | FINALLY | END TRY