Bläddra i källkod

docs: summary of v0.1.0 and v0.2.0 work

Eric Streit 2 veckor sedan
förälder
incheckning
c4f2af122a
1 ändrade filer med 51 tillägg och 0 borttagningar
  1. 51 0
      docs/summary-v0.2.0.md

+ 51 - 0
docs/summary-v0.2.0.md

@@ -0,0 +1,51 @@
+# m2SDL summary — v0.2.0 (2026-09-23)
+
+SDL2 bindings for GNU Modula-2 (`gm2` 16.0.1, SDL 2.32.4, Linux).
+All builds verified with `make`; tests also pass headless via
+`SDL_VIDEODRIVER=dummy`.
+
+## v0.1.0 (`c4aa35b`) — starter set
+
+- `src/SDL2.def` — init/quit, `GetError`, delay, ticks, perf counter
+- `src/SDLVersion.def` — `SDLVersion` record (`CARDINAL8` fields),
+  `GetVersion`, `GetRevision`
+- `src/SDLVideo.def` — opaque `WindowHandle`, create/destroy, title,
+  size, show/hide, window flag/position constants
+- `src/SDLEvents.def` — opaque 56-byte event pump (`PumpEvents`,
+  `PollEvent`, `WaitEvent`), quit/key/mouse type ids
+- `src/SDLRect.def/.mod` — pure-M2 `SDLPoint`/`SDLRect` + helpers
+- `lib/SDLUtils.def/.mod` — `CStrToM2`, `GetErrorString`
+- `tests/` — init, version, rect, window + `run_tests.sh` (4/4 green)
+- `examples/` — `hello_window`, `version`, `event_loop`
+- `Makefile` — two-step gm2 build (`-c` helpers to `.o`, then link)
+
+## v0.2.0 — renderer + showcases
+
+- `src/SDLRender.def` — SDL2 `<SDL_render.h>` subset:
+  `CreateRenderer`, `CreateWindowAndRenderer`, draw color
+  (`CARDINAL8` = Uint8), clear/present, points/lines/rects in single
+  (`VAR`) and array (`ADR` + count) forms, logical size
+- `lib/SDLUtils.DrainEvents` — shared quit-event pump
+- `showcases/` — ports of `SDL-main/examples/renderer/` (public domain):
+  `showcase_clear` (01), `showcase_rectangles` (05),
+  `showcase_primitives` (02); SDL3 to SDL2 adaptations in each header
+- `showcases/README.md` — source map, build/run instructions
+- Vendored `SDL-main/` sources ignored via `.gitignore` (`2543b44`)
+
+## GM2 FFI rules learned (encoded in code)
+
+1. `DEFINITION MODULE FOR "C"` + `EXPORT UNQUALIFIED`, link with `-lSDL2`.
+2. No `*)` inside `(* *)` comments — C pointer spellings need a space.
+3. `CARDINAL` <-> Uint32, `INTEGER` <-> int, opaque pointers = `ADDRESS`,
+   `ARRAY OF CHAR` params = `char *`, `VAR` record params = `T *`.
+4. Int-returning C procs need `[ INTEGER ]` to be called as statements.
+5. `Uint8` params must be `SYSTEM.CARDINAL8` (16-bit `SHORTCARD` breaks ABI).
+6. Same-size casts only: `INTEGER(x)` fails across sizes, use `VAL`.
+7. Pure-M2 helpers compile with `gm2 -c` to `.o`, then link (passing
+   `.mod` directly duplicates `main`).
+8. `gm2` sources must be 7-bit ASCII in practice (unicode confused it).
+
+## Next
+
+Full `SDL_Event` variant record, renderer textures/surfaces, audio,
+joystick/gamepad, then SDL3 bindings alongside.