Skip to content

Latest commit

 

History

History
394 lines (330 loc) · 6.91 KB

TODO.md

File metadata and controls

394 lines (330 loc) · 6.91 KB

AQB TODO

Guenter Bartsch guenter@zamia.org

BUGS

Documentation, Tutorials

  • DONE online help
  • DONE translate forum posts, add useful information to README
  • GadToolsSupport
  • adapt all tutorials to 0.9.0
  • OS* modules

Language Concepts

  • subprograms

    • check forward decl formal types
    • varargs
  • OOP

    • DONE interfaces
    • DONE virtual functions
  • enums

  • assignment operators (+=, ...)

  • C like strings (tbd)

Compiler, Code Generation

  • scanner: support multiple instances (IDE uses separate scanner instance)

  • code generator

    • proc calls: only save registers that carry live values
    • use movem to save/restore registers
    • only save/restore registers on proc entry/exit that are actually used inside
    • peephole optimizer
    • cache (var) pointer temps
    • escape analysis: keep local variables in registers only (m68kframe inReg)
    • optimizing assembler (32 bit condition jumps, clr., ...)
    • frame/var size >32KByte support
    • register arguments
    • SSA (static single assignment) intermediate form
    • backend abstraction layer, enable alternative backends (RISC-V, ARM, x86, LLVM, ...)
    • if / condition constant propagation (test w/ while)
    • fix spilling
    • translate.c: add #0, tmp ; mul *1 ; div / 1 ; ...
    • optionally: initialize all variables to 0?
    • T_Cast that results in NOP or simple MOVE: introduce T_TypeView node
  • create Icons for Binaries

  • support for IEEE Single and Double floating point

Runtime

  • do stackswap only on demand

  • switch _brt, _aqb to commonrt

  • switch IDE to commonrt

  • DONE startup code: workbench startup

  • startup code: command line args

  • Exec error handling / traps

    • division by zero
  • Memory management / garbage collection ? / DEALLOCATE

  • string handling

  • collections

  • DONE CTRL+C to stop the program at any time

  • DONE source level debugging

  • DONE tetris game freezes after some 3 minutes (ressource leak? )

  • MOD / protracker playback (maybe using https://aminet.net/package/mus/play/ptplayer)

  • open RTG custom screens

  • GadToolsSupport

    • DONE BUTTON

    • DONE CHECKBOX

    • DONE CYCLE

    • DONE INTEGER

    • DONE LISTVIEW

    • DONE MX

    • DONE NUMBER

    • DONE PALETTE

    • DONE SCROLLER

    • DONE SLIDER

    • DONE STRING

    • DONE TEXT

    •  Menus
      
    •  Keyboard shortcuts
      
  • gtlayout.library

  • asl.library

IDE

  • DONE block operations

    • DONE mark
    • DONE cut/copy/paste
  • linux TUI file dialog

  • find/replace dialog

    • replace
    • port TUI to amiga gadtools
  • horizontal scrolling

  • mouse cursor positioning

  • mark block in the IDE #28 #28

  • DONE workbench arguments (double click source code -> open file in IDE)

  • DONE auto-indent

  • DONE save

  • DONE compile/run

  • ____ memory management

  • ____ help system

  • DONE amiga menus

  • DONE DEL

  • DONE search

  • ____ replace

  • ____ block operations

  • DONE goto line

  • DONE show compiler error messages

  • ____ terminal: use uint16_t where possible

  • support for modules written in BASIC

  • project tree / multi-file/-module projects

Debugger

  • source level step/next

Core Commands

  • DONE ABS()
  • DONE AND
  • ____ ASC()
  • DONE ATN()
  • ____ BREAK ON
  • ____ BREAK OFF
  • ____ BREAK STOP
  • DONE CALL
  • ____ CBDL()
  • ____ CHDIR
  • DONE CHR$()
  • DONE CINT()
  • DONE CLEAR
  • DONE CLNG()
  • DONE CLOSE
  • DONE CLS
  • ____ COMMON
  • DONE COS()
  • ____ CSNG()
  • ____ CVD()
  • ____ CVI()
  • ____ CVL()
  • ____ CVS()
  • DONE DATA
  • DONE DATE$()
  • DONE DECLARE FUNCTION
  • DONE DECLARE SUB
  • ____ DEF FN
  • ____ DEFDBL
  • DONE DEFINT
  • DONE DEFLNG
  • DONE DEFSNG
  • DONE DEFSTR
  • DONE DIM
  • DONE END
  • DONE EOF()
  • DONE EQV
  • DONE ERASE
  • ____ ERL
  • DONE ERR
  • DONE ERROR
  • DONE EXP()
  • ____ FIELD
  • ____ FILES
  • DONE FIX()
  • DONE FOR...NEXT
  • DONE FRE()
  • ____ GET#
  • DONE GOSUB
  • DONE GOTO
  • ____ HEX$()
  • DONE IF
  • ____ IMP
  • DONE INPUT
  • ____ INPUT$()
  • DONE INPUT #
  • DONE INSTR()
  • DONE INT()
  • ____ KILL
  • DONE LBOUND()
  • DONE LEFT$()
  • DONE LEN()
  • DONE LET
  • ____ LIBRARY
  • ____ LIBRARY CLOSE
  • DONE LINE INPUT
  • DONE LINE INPUT#
  • ____ LLIST
  • ____ LOC()
  • ____ LOF()
  • DONE LOCATE
  • DONE LOG()
  • ____ LPOS()
  • ____ LSET
  • DONE MID$()
  • ____ MKI$()
  • ____ MKL$()
  • ____ MKS$()
  • ____ MKD$()
  • DONE MOD
  • ____ NAME
  • DONE NEXT
  • DONE NOT
  • ____ OCT$()
  • ____ ON BREAK
  • DONE ON ERROR
  • ____ ON GOSUB
  • ____ ON GOTO
  • DONE OPEN
  • ____ OPTION BASE
  • ____ OR
  • DONE PEEK()
  • DONE PEEKL()
  • DONE PEEKW()
  • DONE POKE
  • DONE POKEL
  • DONE POKEW
  • ____ PUT
  • DONE PRINT
  • DONE PRINT #
  • ____ PRINT USING
  • DONE RANDOMIZE
  • DONE READ
  • DONE REM
  • DONE RESTORE
  • ____ RESUME
  • DONE RETURN
  • DONE RIGHT$()
  • DONE RND()
  • ____ RSET
  • ____ SADD()
  • ____ SAVE
  • DONE SGN()
  • ____ SHARED
  • DONE SIN()
  • DONE SPACE$()
  • DONE SPC() // FIXME: move cursor right instead of inserting spaces
  • DONE SQR()
  • DONE STATIC
  • DONE STR$()
  • DONE STRING$()
  • ____ SUB
  • DONE SWAP
  • DONE SYSTEM
  • ____ TAB()
  • DONE TAN()
  • DONE TIME$()
  • DONE UBOUND()
  • DONE UCASE$()
  • DONE VAL()
  • DONE VARPTR()
  • DONE WEND
  • DONE WHILE
  • ____ WIDTH
  • DONE WRITE
  • DONE WRITE#

AmigaBASIC Specific Commands

  • DONE AREA
  • DONE AREAFILL
  • DONE AREA OUTLINE
  • ____ BEEP
  • DONE CIRCLE
  • ____ COLLISION ON
  • ____ COLLISION OFF
  • ____ COLLISION STOP
  • ____ COLLISION()
  • DONE COLOR
  • DONE CSRLIN()
  • DONE GET
  • DONE INKEY$
  • DONE LINE
  • ____ LPRINT
  • ____ MENU
  • ____ MENU RESET
  • ____ MENU ON
  • ____ MENU OFF
  • ____ MENU SOP
  • ____ MENU()
  • DONE MOUSE ON
  • DONE MOUSE OFF
  • ____ MOUSE STOP
  • DONE MOUSE()
  • ____ OBJECT.AX
  • ____ OBJECT.AY
  • ____ OBJECT.CLOSE
  • ____ OBJECT.HIT
  • ____ OBJECT.OFF
  • ____ OBJECT.ON
  • ____ OBJECT.PRIORITY
  • ____ OBJECT.SHAPE
  • ____ OBJECT.START
  • ____ OBJECT.STOP
  • ____ OBJECT.VX
  • ____ OBJECT.VX()
  • ____ OBJECT.VY
  • ____ OBJECT.VY()
  • ____ OBJECT.X
  • ____ OBJECT.X()
  • ____ OBJECT.Y
  • ____ OBJECT.Y()
  • ____ ON COLLISION
  • ____ ON MENU
  • DONE ON MOUSE
  • DONE ON TIMER
  • DONE PAINT
  • DONE PALETTE
  • DONE PATTERN
  • DONE POINT
  • DONE POS
  • ____ PRESET
  • DONE PSET
  • ____ PTAB
  • DONE PUT [STEP]
  • ____ SAY
  • DONE SCREEN
  • DONE SCREEN CLOSE
  • ____ SCROLL
  • DONE SLEEP
  • DONE SOUND
  • DONE SOUND WAIT
  • ____ SOUND RESUME
  • ____ STICK()
  • ____ STRIG()
  • DONE TIMER ON
  • DONE TIMER OFF
  • ____ TIMER STOP
  • ____ TRANSLATE$()
  • DONE WAVE
  • ____ WIDTH LPRINT
  • DONE WINDOW
  • DONE WINDOW CLOSE
  • DONE WINDOW OUTPUT
  • DONE WINDOW()

Examples / Demos / Libraries

  • include examples from blackborn66 https://github.com/blackborn66/aqb-tests-demos

  • EGads

  • Benchmarks: sieve, fractals

  • AMIGA hand

  • ISO game engine

  • BASICPaint

  • Linked List

  • Function Plotter

    • 2D
    • 3D
  • CCGames

  • M&T Book Examples

  • AMOS / Blitz Libraries