Skip to content

Latest commit

 

History

History
113 lines (107 loc) · 4.44 KB

TODO.md

File metadata and controls

113 lines (107 loc) · 4.44 KB
  • PRINT、WRITE、READ、INPUT、DIM、NEXT 不能以 ELSE 结束? NO

  • 同名的数组只能定义一个? YES

  • 所有 parse_expr (所有extend_symbol)前面要 reset first_symbols

  • match多个token时 first_symbols 不对(match_token只能处理单个token的情况)

  • READ、键盘 INPUT 输入实数,忽略实数后面的字符串?文件 INPUT 输入实数,实数后面不行? NO

  • FOR、FN的函数名和参数只能是实数? YES

  • WRITE 输出0x00后面的引号?剔除 0x1f? NO, YES

  • OPEN 文件名以0x00结尾? NO

  • editor 一行文本最长多长?包含中文呢? 94字符;中文不考虑0x1f

  • tokenize 关键字只识别前缀?(IFA 会当成 IF A) NO

  • 如果光标在中文的第二个字节,光标在什么位置闪烁?在中文的位置闪烁还是实际的光标位置闪烁? 实际的光标位置

  • 当光标在第一列时,无论调用多少次空的 PRINT,都不会换行? yes

  • 输入的内容不会导致后面的字符变成 NUL ? 会把输入的内容末尾后的一个字节变成 NUL,然后再把后续的连续非 NUL 字节变成 NUL

  • LOCATE 5,20:PRINT 0; 会不会换行? yes

  • 看看TC808和PC1000A的键值和映射

  • 检查一下:emoji 的第二个字节小于161也合法,怎么对应字符?pc1000a是否一样支持?校对一下tc808和pc1000a的emoji的编码 tc808 不支持小于 161

  • 按键映射一个地址只能响应一个键? NO

  • 补充 draw mode 文档

  • 模拟器运行时禁用拖动打开文件

  • C-f 如果 search text 显示并且没有焦点则 focus,而不是隐藏

  • 编辑区按esc会隐藏search bar

  • QLineEdit 会把 control character 显示成空格,wqx字体的 control character glyph无法显示

  • gvb 读写文件名包含 0x0-0x1f 字符时转换成其他 unicode 字符 (PUA 字符)

  • 统计gvb各语句执行时间,为不同的字节码加上 cost,cost累加到某个阈值就 sleep

  • 支持批量法

  • 关联 .bas .lav .pac 文件

  • 在运行模拟器时不能加载其他文件

  • 检查内存泄漏

    • gvb
    • sync & set machine name
  • 改成GBK(有些汉字会和emoji重叠,优先使用emoji)

  • drag and drop (初始界面支持所有文件,gvbeditor界面支持bas/txt文件)

  • 初始界面显示功能列表

  • 如果打开gvbsim后打开其他类型文件,gvbsim窗口是否能正常关闭?

  • 搜索变量内容

  • 移除 scintilla 依赖。替代物要有以下api:

    • get cursor pos, cursor line, cursor position
    • set font, font size
    • line number
    • highlight current line
    • error/warning squiggles
    • show error message tooltip when hovering on error/warning squiggles
    • undo/redo
    • copy/cut/paste
    • can undo/can redo
  • 自动重排行号,可以设置行号间隔和起始行号

  • scintilla antialiasing

  • 移除 QThread

  • if goto 后面只能跟上行号(默认是0)

  • C-h 当前行插入行号,C-j 下一行插入行号并跳转,C-k 上一行插入行号并跳转

  • scintilla 行号宽度实时变动(监测 lines_added)

  • 扩展gvb:

    • POINT(x,y)
    • checkkey(key-code)
    • @hour, @minute, @second
    • text 支持小字模式:text 0(大字), text 1(小字)。
  • document:

    • create new: () => (document, string)
    • get path: () => option
    • load bas/txt: path -> (document, string)
    • save: option -> ()
    • diagnostics: () -> vec
    • auto completion: () -> completion list
    • compile to vm: device -> vm
    • set machine name: string -> ()
    • get machine name: () -> string
    • edit: edit list -> ()
    • get semantic token: () -> vec
    • symbol highlight: () -> vec
    • create device: () -> device
  • vm:

    • compile expr to InputFuncBody: string -> body
    • exec: input -> exec result
    • start
    • stop
  • mbf5:

    • parse string: string -> result
  • device:

    • get graphics data
    • get key
    • fire key down
    • fire key up
    • blink cursor: () -> ()
    • get screen update rect
    • reset
  • 设置:

    • gvb editor: 字体大小
    • gvb: 屏幕放大倍数
  • 状态:

    • 窗口大小、窗口位置
    • 上一次打开的文件
    • 上一次的文件光标位置
    • 上一次加载文件的目录