Compare commits

..
Author SHA1 Message Date
Aaron badcf8df5e removed unused icons
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2026-03-10 18:47:50 +00:00
Aaron 76eaf6c698 fix: replace raw mouse hook with LVGL long-press for file browser context menu
Removed driver.hid.mouse dependency that caused page fault on close.
Context menu now triggers via LV_EVENT_LONG_PRESSED on content rows.
Cleaned up onClose teardown ordering and removed debug syslog markers.
2026-03-10 18:47:09 +00:00
Aaron 2fb50a5366 feat: file dispatch system, file-type icons, multi-instance notepad
- Add extension-based dispatch to driver.storage.filedispatch with typed
  union (variant record THandlerKind = hkMagic/hkExtension)
- Extract file-type icon constants and mapping to core.gfx.fileicons
- Add core.search utility (getFileExtension, fmtFileSize, sortStringArray)
- Generate PUA bitmap icon fonts (32/64/128px) from Font Awesome via
  gen_file_icons.py + compile_icons.sh toolchain
- Integrate file dispatch into file browser (double-click triggers dispatch)
- Register notepad as handler for text file extensions
- Fix init order in app.mgr (filedispatch.init before app inits)
- Refactor notepad from singleton to multi-instance (up to 8 windows)
  using instance array, findStateByWid, and LVGL user_data on msgboxes
2026-03-10 18:47:08 +00:00
150 changed files with 4433 additions and 5479 deletions

No files matched your search

-1
View File
@@ -17,7 +17,6 @@ steps:
- name: compile
image: t3hn3rd/asuro-build:latest
pull: always
depends_on:
- build-image
commands:
+1 -5
View File
@@ -19,8 +19,4 @@ lessons_learnt.md
wasuro
src/core/core.version.pas
site/*
!site/.gitkeep
/src/boot/dangling_units.inc
/lib/dangling/
.moderne
CLAUDE.md
!site/.gitkeep
+4 -4
View File
@@ -1,5 +1,4 @@
ARG RECIPES_IMAGE=t3hn3rd/moderne-asuro-recipes:0.1.1@sha256:eaf54188053511dad9c620a8fb98b0f50c41770cd49a0b3d71a0538386522011
FROM ${RECIPES_IMAGE}
FROM ubuntu:latest
VOLUME ["/code"]
@@ -8,7 +7,7 @@ RUN dpkg --add-architecture i386
RUN apt-get update && apt-get install -y \
curl dos2unix wget git make nasm binutils xorriso grub-pc-bin gcc gcc-multilib \
python3 python3-pip python3-pil && \
apt-get clean && rm -rf /var/lib/apt/lists/*
apt-get clean my room
RUN pip3 install --no-cache-dir --break-system-packages "mkdocs>=1.6,<2" mkdocs-material
@@ -21,5 +20,6 @@ RUN curl -sL https://sourceforge.net/projects/freepascal/files/Linux/$FPC_VERSIO
ADD https://raw.githubusercontent.com/fsaintjacques/semver-tool/master/src/semver /usr/bin/semver
RUN chmod +x /usr/bin/semver
WORKDIR /code
RUN find . -type f -print0 | xargs -0 dos2unix
ENTRYPOINT ["/bin/bash", "-c"]
CMD ["find toolchain -name '*.sh' -exec dos2unix {} + 2>/dev/null; find toolchain -name '*.sh' -exec chmod +x {} +; bash toolchain/compile.sh"]
CMD ["find toolchain -name '*.sh' -exec dos2unix {} + 2>/dev/null; find toolchain -name '*.sh' -exec chmod +x {} +; bash toolchain/compile.sh"]
-8
View File
@@ -1,8 +0,0 @@
**/.git
**/.gradle
**/build
**/.moderne
wasuro
site
lib
release
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
-4
View File
@@ -17,10 +17,6 @@ Central initialization manager for all baked-in terminal programs and kernel-lev
- `core.version`, `arch.x86.cpu`
- `app.diskcmd`, `driver.bus.usb.core`, `app.diskutil`, `app.notepad`, `app.partcmd`, `app.volcmd`
## Boot Registration
Registered with `boot.mgr` as `app.mgr` at the `late` barrier.
## Functions and Procedures
### init
-28
View File
@@ -1,28 +0,0 @@
# app.wasm
WebAssembly VM backend initialiser.
## Overview
This unit initialises the Wasuro WebAssembly virtual machine backend. It wires up the VM's character output to the syslog interface and calls the main `wasm_init` entry point.
## Boot Registration
Registered with `boot.mgr` as `app.wasm` at the `final` barrier.
## Dependencies
- `boot.mgr`
- `io.syslog`
- `wasm.vm.io`
- `wasm`
## Procedures
### init
```pascal
procedure init;
```
Sets the WASM VM's write-character callback to `io.syslog.logchar` and calls `wasm.wasm_init` to initialise the VM runtime.
-4
View File
@@ -13,10 +13,6 @@ This unit probes the processor using the CPUID instruction to discover the vendo
- `driver.timer.rtc`
- `io.stdio`
## Boot Registration
Registered with `boot.mgr` as `arch.x86.cpu` at the `early` barrier.
## Types
### TCapabilities_Old / PCapabilities_Old
-4
View File
@@ -10,10 +10,6 @@ This unit defines the GDT data structures and provides procedures to set individ
- `io.syslog`
## Boot Registration
Registered with `boot.mgr` as `arch.x86.gdt` at the `early` barrier.
## Types
### TGDT_Entry / PGDT_Entry
-4
View File
@@ -12,10 +12,6 @@ This unit defines the 256-entry IDT used by the x86 interrupt system. It provide
- `arch.x86.util`
- `io.syslog`
## Boot Registration
Registered with `boot.mgr` as `arch.x86.idt`, depending on `arch.x86.gdt`.
## Constants
### ISR_RING_0
-4
View File
@@ -12,10 +12,6 @@ This unit reinitialises and remaps the two 8259A Programmable Interrupt Controll
- `arch.x86.util`
- `io.syslog`
## Boot Registration
Registered with `boot.mgr` as `arch.x86.irq`, depending on `arch.x86.idt`.
## Functions and Procedures
### init
-4
View File
@@ -6,10 +6,6 @@ ISR driver initialisation stub.
This is a minimal stub unit that satisfies compile-time dependencies on an ISR initialisation entry point. The `init` procedure body is empty; actual ISR handler registration and IDT gate setup are performed by `arch.x86.isr.mgr` and the individual handler units in the `isr/` and `fault/` subdirectories.
## Boot Registration
Registered with `boot.mgr` as `asuro.x86.isr`, depending on glob `driver.storage.*.mgr` (waits for all matching entries).
## Functions and Procedures
### init
-4
View File
@@ -12,10 +12,6 @@ This unit acts as the glue layer between the x86 interrupt subsystem and the arc
- `arch.x86.util` (implementation)
- `arch.x86.isr.types` (implementation)
## Boot Registration
Registered with `boot.mgr` as `arch.x86.panic`, depending on glob `driver.video*` (waits for all matching entries).
## Functions and Procedures
### init
-4
View File
@@ -22,10 +22,6 @@ A minimal TSS is installed in GDT gate 5 so the CPU can locate the ring-0 stack
- `arch.x86.idt`
- `arch.x86.isr.types`
## Boot Registration
Registered with `boot.mgr` as `arch.x86.v86` at the `early` barrier.
## Constants
| Constant | Value | Description |
-4
View File
@@ -28,10 +28,6 @@ This unit is the single entry point for registering all x86 CPU exception handle
- `arch.x86.fault.snpe`
- `arch.x86.fault.uie`
## Boot Registration
Registered with `boot.mgr` as `arch.x86.fault`, depending on `arch.x86.isr.mgr`.
## Functions and Procedures
### init
-4
View File
@@ -18,10 +18,6 @@ Each ISR stub is declared with the Free Pascal `interrupt` directive, which caus
- `io.syslog` (implementation)
- `arch.x86.isr.ioapic` (implementation)
## Boot Registration
Registered with `boot.mgr` as `arch.x86.isr.mgr`, depending on `arch.x86.irq`.
## Constants
`MAX_HOOKS` is imported from `arch.x86.isr.types` and defines the maximum number of callbacks per vector.
@@ -16,10 +16,6 @@ During initialisation, the Multiboot memory map is walked to populate `PhysPrese
- `core.util`
- `arch.x86.util`
## Boot Registration
Registered with `boot.mgr` as `arch.x86.memory.physical`, depending on `arch.x86.idt`.
## Constants
| Constant | Value | Description |
@@ -17,10 +17,6 @@ During `init`, the current page directory loaded by the bootloader is adopted as
- `debug.tracer`
- `memory.heap` (implementation)
## Boot Registration
Registered with `boot.mgr` as `arch.x86.memory.virtual`, depending on `arch.x86.memory.physical`.
## Types
### TPageDirEntry / PPageDirEntry
+1 -37
View File
@@ -93,44 +93,8 @@ A bitpacked array of 8 Booleans.
| FileRec | Internal file descriptor record |
| TextRec | Internal text file record with buffer |
### INITFINAL Table Types
#### TInitFinalRec
```pascal
TInitFinalRec = packed record
InitProc : CodePointer;
FinalProc: CodePointer;
end;
```
A single entry in the compiler-generated INITFINAL table. `InitProc` points to the unit's `initialization` section code (or nil if the unit has no initialization section). `FinalProc` points to the `finalization` section code (or nil).
#### TInitFinalTable / PInitFinalTable
```pascal
TInitFinalTable = packed record
TableCount : longint;
Procs : array[1..1] of TInitFinalRec;
end;
```
The top-level INITFINAL table structure. `TableCount` is the number of entries. `Procs` is declared as a single-element array but the compiler generates `TableCount` entries (accessed via 1-based indexing up to `TableCount`).
#### TProcedure
`TProcedure = procedure` — Procedure type used to cast `CodePointer` values from the INITFINAL table before calling them.
## Variables
### InitFinalTable
```pascal
var InitFinalTable : TInitFinalTable; external name 'INITFINAL';
```
The compiler-generated INITFINAL table. Contains one `TInitFinalRec` for every unit in the program that has an `initialization` or `finalization` section. Referenced by `fpc_initializeunits` to walk and call each unit's initialization code before `kmain` runs.
### AK_START / AK_END
```pascal
@@ -188,7 +152,7 @@ All `compilerproc` stubs are mapped to their standard `FPC_*` aliases:
| Procedure | Alias | Description |
|-----------|-------|-------------|
| fpc_initializeunits | FPC_INITIALIZEUNITS | Walks the INITFINAL table and calls each unit's initialization procedure |
| fpc_initializeunits | FPC_INITIALIZEUNITS | No-op; boot sequence handles unit init |
| fpc_do_exit | FPC_DO_EXIT | CLI + HLT |
| fpc_handleerror | FPC_HANDLEERROR | Sets ErrorCode, CLI + HLT |
| fpc_rangeerror | FPC_RANGEERROR | HandleErrorInternal(201) |
Loaded 20 of 150 files, more files were not shown because too many files have changed in this diff. Show more