From 53dc60e23df52e68dee4705802697e459fbb01fd Mon Sep 17 00:00:00 2001 From: grisuno security-export bot Date: Fri, 11 Sep 2026 01:34:57 -0300 Subject: [PATCH] chore(security): export issues + knowledge base + agent docs + network links --- KNOWLEDGE_BASE.md | 306 +++++++++++++++----------------- issues/README.md | 27 +-- issues/codescan/alert_0.md | 10 -- issues/codescan/alert_17.md | 10 ++ issues/codescan/alert_18.md | 10 ++ issues/codescan/alert_19.md | 10 ++ issues/codescan/alert_20.md | 10 ++ issues/codescan/alert_21.md | 10 ++ issues/codescan/alert_22.md | 10 ++ issues/codescan/alert_23.md | 10 ++ issues/codescan/alert_24.md | 10 ++ issues/dependabot/alert_0.md | 13 -- issues/issue_20.md | 10 ++ issues/issue_21.md | 10 ++ issues/issue_22.md | 10 ++ readmenator-agent/MANIFEST.json | 4 +- 16 files changed, 269 insertions(+), 201 deletions(-) delete mode 100644 issues/codescan/alert_0.md create mode 100644 issues/codescan/alert_17.md create mode 100644 issues/codescan/alert_18.md create mode 100644 issues/codescan/alert_19.md create mode 100644 issues/codescan/alert_20.md create mode 100644 issues/codescan/alert_21.md create mode 100644 issues/codescan/alert_22.md create mode 100644 issues/codescan/alert_23.md create mode 100644 issues/codescan/alert_24.md delete mode 100644 issues/dependabot/alert_0.md create mode 100644 issues/issue_20.md create mode 100644 issues/issue_21.md create mode 100644 issues/issue_22.md diff --git a/KNOWLEDGE_BASE.md b/KNOWLEDGE_BASE.md index ec59d7e..f07e607 100644 --- a/KNOWLEDGE_BASE.md +++ b/KNOWLEDGE_BASE.md @@ -8,7 +8,7 @@ **Total Files Parsed:** 401 | **Total Symbols Extracted:** 9439 | **Total Imports:** 1501 | **Resolved Imports:** 1074 - + ## Table of Contents @@ -218,11 +218,36 @@ Most architecturally central files ranked by combined import/export degree and s Files grouped by import-based community detection. Cohesion measures how tightly connected each community is internally. -### root (Cohesion: 0.89) +### root (Cohesion: 0.55) -**74 files** in this community: +**44 files** in this community: - `ap_stub.h` (h, 0 symbols) +- `pcspk.c` (c, 20 symbols) +- `rtc.c` (c, 27 symbols) +- `sb16.c` (c, 62 symbols) +- `kfile.c` (c, 22 symbols) +- `minifs.c` (c, 66 symbols) +- `ramdisk.c` (c, 25 symbols) +- `vfs.c` (c, 37 symbols) +- `zip.c` (c, 19 symbols) +- `futex.h` (h, 17 symbols) +- `kernel.h` (h, 302 symbols) +- `console.c` (c, 31 symbols) +- `futex.c` (c, 11 symbols) +- `klog.c` (c, 9 symbols) +- `lz4_kernel.c` (c, 11 symbols) +- `mm.c` (c, 12 symbols) +- `swap.c` (c, 10 symbols) +- `percpu_rq.c` (c, 14 symbols) +- `printf.c` (c, 15 symbols) +- `rcu.c` (c, 21 symbols) +- ... and 24 more files + +### root (Cohesion: 0.48) + +**27 files** in this community: + - `ap_entry.S` (S, 9 symbols) - `bootdefs.h` (h, 139 symbols) - `stage1.S` (S, 11 symbols) @@ -231,18 +256,19 @@ Files grouped by import-based community detection. Cohesion measures how tightly - `block.h` (h, 12 symbols) - `desktop_icons.h` (h, 3 symbols) - `desktop_shortcuts.h` (h, 20 symbols) -- `driver.h` (h, 19 symbols) -- `block.c` (c, 17 symbols) -- `driver.c` (c, 8 symbols) -- `ide.c` (c, 24 symbols) - `kbd.c` (c, 29 symbols) - `kbd.h` (h, 22 symbols) -- `pcspk.c` (c, 20 symbols) -- `sb16.c` (c, 62 symbols) - `editor.h` (h, 2 symbols) -- `kfile.c` (c, 22 symbols) -- `minifs.c` (c, 66 symbols) -- ... and 54 more files +- `kernel.c` (c, 37 symbols) +- `editor.c` (c, 31 symbols) +- `exec.c` (c, 18 symbols) +- `loader.c` (c, 44 symbols) +- `paging.c` (c, 20 symbols) +- `shell.c` (c, 130 symbols) +- `syscalls.c` (c, 157 symbols) +- `vga_fb.c` (c, 148 symbols) +- `net.h` (h, 58 symbols) +- ... and 7 more files ### arch/x86 (Cohesion: 0.50) @@ -251,12 +277,25 @@ Files grouped by import-based community detection. Cohesion measures how tightly - `hal_io.h` (h, 37 symbols) - `test_hal_io.c` (c, 9 symbols) -### root (Cohesion: 0.33) +### progs/src (Cohesion: 0.59) -**2 files** in this community: +**15 files** in this community: - `audio.h` (h, 18 symbols) +- `minios_module.c` (c, 33 symbols) +- `minios_abi.h` (h, 124 symbols) +- `node_editor.c` (c, 77 symbols) +- `nuklear_minios.c` (c, 39 symbols) +- `nuklear_minios.h` (h, 20 symbols) +- `piano.c` (c, 86 symbols) - `platform_minios.c` (c, 110 symbols) +- `audio.c` (c, 18 symbols) +- `fptest.c` (c, 14 symbols) +- `mthreads.h` (h, 23 symbols) +- `opl3.c` (c, 22 symbols) +- `sbtone.c` (c, 11 symbols) +- `thdemo.c` (c, 16 symbols) +- `vedit.c` (c, 115 symbols) ### root (Cohesion: 0.67) @@ -266,41 +305,41 @@ Files grouped by import-based community detection. Cohesion measures how tightly - `batch.c` (c, 1 symbols) - `test_batch.c` (c, 6 symbols) -### root (Cohesion: 0.50) +### drivers (Cohesion: 0.36) **5 files** in this community: -- `rtc.c` (c, 27 symbols) -- `qga.c` (c, 31 symbols) -- `qga.h` (h, 29 symbols) -- `rtc.h` (h, 6 symbols) -- `test_rtc.c` (c, 3 symbols) +- `driver.h` (h, 19 symbols) +- `block.c` (c, 17 symbols) +- `driver.c` (c, 8 symbols) +- `ide.c` (c, 24 symbols) +- `ide.h` (h, 35 symbols) -### progs/doomgeneric (Cohesion: 0.52) +### progs/doomgeneric (Cohesion: 0.98) -**65 files** in this community: +**191 files** in this community: - `string.c` (c, 13 symbols) +- `am_map.c` (c, 97 symbols) +- `am_map.h` (h, 9 symbols) - `config.h` (h, 16 symbols) +- `d_englsh.h` (h, 286 symbols) +- `d_event.c` (c, 3 symbols) +- `d_event.h` (h, 4 symbols) +- `d_items.c` (c, 0 symbols) +- `d_items.h` (h, 3 symbols) - `d_iwad.c` (c, 35 symbols) - `d_iwad.h` (h, 14 symbols) +- `d_loop.c` (c, 36 symbols) +- `d_loop.h` (h, 13 symbols) +- `d_main.c` (c, 113 symbols) +- `d_main.h` (h, 8 symbols) - `d_mode.c` (c, 6 symbols) - `d_mode.h` (h, 7 symbols) +- `d_net.c` (c, 17 symbols) +- `d_player.h` (h, 5 symbols) - `d_textur.h` (h, 2 symbols) -- `deh_str.h` (h, 11 symbols) -- `doomfeatures.h` (h, 2 symbols) -- `doomgeneric.c` (c, 2 symbols) -- `doomgeneric.h` (h, 10 symbols) -- `doomgeneric_minios.c` (c, 31 symbols) -- `doomgeneric_sdl.c` (c, 20 symbols) -- `doomgeneric_soso.c` (c, 23 symbols) -- `doomgeneric_sosox.c` (c, 29 symbols) -- `doomgeneric_win.c` (c, 26 symbols) -- `doomgeneric_xlib.c` (c, 21 symbols) -- `doomkeys.h` (h, 59 symbols) -- `doomtype.h` (h, 14 symbols) -- `dummy.c` (c, 1 symbols) -- ... and 45 more files +- ... and 171 more files ### kernel (Cohesion: 0.67) @@ -310,19 +349,17 @@ Files grouped by import-based community detection. Cohesion measures how tightly - `test_tick.c` (c, 12 symbols) - `tick.h` (h, 14 symbols) -### tools (Cohesion: 0.74) +### tools (Cohesion: 0.71) -**17 files** in this community: +**15 files** in this community: - `time.c` (c, 7 symbols) -- `ktime.h` (h, 3 symbols) - `mcp_dbg_driver.py` (py, 6 symbols) - `mcp_dogfood.py` (py, 6 symbols) - `minios_addons.py` (py, 16 symbols) - `minios_mcp.py` (py, 50 symbols) - `tls_u_port.c` (c, 20 symbols) - `test_http_server.py` (py, 3 symbols) -- `test_ktime.c` (c, 3 symbols) - `test_vma_bench.c` (c, 10 symbols) - `tls_test.py` (py, 16 symbols) - `gdb_repro.py` (py, 4 symbols) @@ -332,6 +369,13 @@ Files grouped by import-based community detection. Cohesion measures how tightly - `repro_gui.py` (py, 10 symbols) - `test_gui_wm.py` (py, 17 symbols) +### root (Cohesion: 0.33) + +**2 files** in this community: + +- `ktime.h` (h, 3 symbols) +- `test_ktime.c` (c, 3 symbols) + ### root (Cohesion: 0.63) **9 files** in this community: @@ -346,50 +390,6 @@ Files grouped by import-based community detection. Cohesion measures how tightly - `tls_test.c` (c, 34 symbols) - `tls_test_roots.h` (h, 0 symbols) -### progs/doomgeneric (Cohesion: 0.77) - -**111 files** in this community: - -- `am_map.c` (c, 97 symbols) -- `am_map.h` (h, 9 symbols) -- `d_englsh.h` (h, 286 symbols) -- `d_event.c` (c, 3 symbols) -- `d_event.h` (h, 4 symbols) -- `d_items.c` (c, 0 symbols) -- `d_items.h` (h, 3 symbols) -- `d_loop.h` (h, 13 symbols) -- `d_main.c` (c, 113 symbols) -- `d_main.h` (h, 8 symbols) -- `d_net.c` (c, 17 symbols) -- `d_player.h` (h, 5 symbols) -- `d_think.h` (h, 5 symbols) -- `deh_main.h` (h, 13 symbols) -- `deh_misc.h` (h, 49 symbols) -- `doomdata.h` (h, 11 symbols) -- `doomdef.c` (c, 0 symbols) -- `doomdef.h` (h, 9 symbols) -- `doomstat.c` (c, 0 symbols) -- `doomstat.h` (h, 68 symbols) -- ... and 91 more files - -### progs/doomgeneric (Cohesion: 0.42) - -**13 files** in this community: - -- `d_loop.c` (c, 36 symbols) -- `d_ticcmd.h` (h, 2 symbols) -- `net_client.h` (h, 23 symbols) -- `net_defs.h` (h, 30 symbols) -- `net_gui.h` (h, 2 symbols) -- `net_io.h` (h, 10 symbols) -- `net_loop.h` (h, 3 symbols) -- `net_packet.h` (h, 15 symbols) -- `net_query.h` (h, 13 symbols) -- `net_sdl.h` (h, 2 symbols) -- `net_server.h` (h, 6 symbols) -- `sha1.c` (c, 23 symbols) -- `sha1.h` (h, 9 symbols) - ### progs/src (Cohesion: 0.75) **4 files** in this community: @@ -399,40 +399,12 @@ Files grouped by import-based community detection. Cohesion measures how tightly - `shell.py` (py, 3 symbols) - `test.py` (py, 20 symbols) -### progs/src (Cohesion: 0.29) - -**6 files** in this community: - -- `minios_module.c` (c, 33 symbols) -- `minios_abi.h` (h, 124 symbols) -- `piano.c` (c, 86 symbols) -- `audio.c` (c, 18 symbols) -- `opl3.c` (c, 22 symbols) -- `sbtone.c` (c, 11 symbols) - ### progs/nuklear (Cohesion: 0.33) -**3 files** in this community: +**2 files** in this community: - `cvm_emit.c` (c, 59 symbols) - `cvm_emit.h` (h, 6 symbols) -- `node_editor.c` (c, 77 symbols) - -### progs/nuklear (Cohesion: 0.29) - -**3 files** in this community: - -- `nuklear_minios.c` (c, 39 symbols) -- `nuklear_minios.h` (h, 20 symbols) -- `vedit.c` (c, 115 symbols) - -### progs/src (Cohesion: 0.40) - -**3 files** in this community: - -- `fptest.c` (c, 14 symbols) -- `mthreads.h` (h, 23 symbols) -- `thdemo.c` (c, 16 symbols) ### root (Cohesion: 0.50) @@ -441,11 +413,17 @@ Files grouped by import-based community detection. Cohesion measures how tightly - `randmix.h` (h, 2 symbols) - `test_randmix.c` (c, 4 symbols) -### tests (Cohesion: 0.43) +### root (Cohesion: 0.33) -**4 files** in this community: +**2 files** in this community: + +- `sanitize.h` (h, 5 symbols) +- `test_sanitize.c` (c, 17 symbols) + +### root (Cohesion: 0.33) + +**3 files** in this community: -- `test_fault.c` (c, 15 symbols) - `test_vma.c` (c, 13 symbols) - `vma.c` (c, 14 symbols) - `vma.h` (h, 21 symbols) @@ -458,7 +436,7 @@ Files in different communities connected through 3+ indirect hops. - `ap_entry.S` <-> `i_cdmus.h` (8 hops, across 3 communities) - `ap_entry.S` <-> `info.h` (8 hops, across 3 communities) -- `ap_entry.S` <-> `net_packet.h` (8 hops, across 4 communities) +- `ap_entry.S` <-> `net_packet.h` (8 hops, across 3 communities) - `ap_entry.S` <-> `w_merge.h` (8 hops, across 3 communities) - `stage1.S` <-> `i_cdmus.h` (8 hops, across 3 communities) @@ -471,7 +449,7 @@ Auto-generated exploration prompts based on graph structure: - What does kernel.h depend on, and what depends on it? (42 connections) - What does doomtype.h depend on, and what depends on it? (50 connections) - What does string.c depend on, and what depends on it? (46 connections) -- How are the 74 files in 'root' related to each other? +- How are the 44 files in 'root' related to each other? - Why are ap_entry.S and i_cdmus.h connected through 8 hops across 3 communities? --- @@ -486,40 +464,40 @@ Taint analysis traces how dangerous imports propagate through the codebase via t Path: mcp_dbg_driver.py - `mcp_dbg_driver.py` imports `subprocess` (1 hop to `time.c`) [high] Path: mcp_dbg_driver.py -> time.c -- `mcp_dbg_driver.py` imports `subprocess` (2 hops to `ktime.h`) [high] - Path: mcp_dbg_driver.py -> time.c -> ktime.h - `mcp_dbg_driver.py` imports `subprocess` (2 hops to `kernel.h`) [high] Path: mcp_dbg_driver.py -> time.c -> kernel.h -- `mcp_dbg_driver.py` imports `subprocess` (3 hops to `vma.h`) [high] - Path: mcp_dbg_driver.py -> time.c -> kernel.h -> vma.h -- `mcp_dbg_driver.py` imports `subprocess` (3 hops to `minios_abi.h`) [high] - Path: mcp_dbg_driver.py -> time.c -> kernel.h -> minios_abi.h +- `mcp_dbg_driver.py` imports `subprocess` (2 hops to `ktime.h`) [high] + Path: mcp_dbg_driver.py -> time.c -> ktime.h - `mcp_dbg_driver.py` imports `subprocess` (3 hops to `spinlock.h`) [high] Path: mcp_dbg_driver.py -> time.c -> kernel.h -> spinlock.h +- `mcp_dbg_driver.py` imports `subprocess` (3 hops to `minios_abi.h`) [high] + Path: mcp_dbg_driver.py -> time.c -> kernel.h -> minios_abi.h +- `mcp_dbg_driver.py` imports `subprocess` (3 hops to `vma.h`) [high] + Path: mcp_dbg_driver.py -> time.c -> kernel.h -> vma.h - `mcp_dogfood.py` imports `subprocess` (0 hop to `mcp_dogfood.py`) [high] Path: mcp_dogfood.py - `mcp_dogfood.py` imports `subprocess` (1 hop to `time.c`) [high] Path: mcp_dogfood.py -> time.c -- `mcp_dogfood.py` imports `subprocess` (2 hops to `ktime.h`) [high] - Path: mcp_dogfood.py -> time.c -> ktime.h - `mcp_dogfood.py` imports `subprocess` (2 hops to `kernel.h`) [high] Path: mcp_dogfood.py -> time.c -> kernel.h -- `mcp_dogfood.py` imports `subprocess` (3 hops to `vma.h`) [high] - Path: mcp_dogfood.py -> time.c -> kernel.h -> vma.h -- `mcp_dogfood.py` imports `subprocess` (3 hops to `minios_abi.h`) [high] - Path: mcp_dogfood.py -> time.c -> kernel.h -> minios_abi.h +- `mcp_dogfood.py` imports `subprocess` (2 hops to `ktime.h`) [high] + Path: mcp_dogfood.py -> time.c -> ktime.h - `mcp_dogfood.py` imports `subprocess` (3 hops to `spinlock.h`) [high] Path: mcp_dogfood.py -> time.c -> kernel.h -> spinlock.h +- `mcp_dogfood.py` imports `subprocess` (3 hops to `minios_abi.h`) [high] + Path: mcp_dogfood.py -> time.c -> kernel.h -> minios_abi.h +- `mcp_dogfood.py` imports `subprocess` (3 hops to `vma.h`) [high] + Path: mcp_dogfood.py -> time.c -> kernel.h -> vma.h - `minios_addons.py` imports `subprocess` (0 hop to `minios_addons.py`) [high] Path: minios_addons.py - `minios_addons.py` imports `subprocess` (1 hop to `time.c`) [high] Path: minios_addons.py -> time.c -- `minios_addons.py` imports `subprocess` (2 hops to `ktime.h`) [high] - Path: minios_addons.py -> time.c -> ktime.h - `minios_addons.py` imports `subprocess` (2 hops to `kernel.h`) [high] Path: minios_addons.py -> time.c -> kernel.h -- `minios_addons.py` imports `subprocess` (3 hops to `vma.h`) [high] - Path: minios_addons.py -> time.c -> kernel.h -> vma.h +- `minios_addons.py` imports `subprocess` (2 hops to `ktime.h`) [high] + Path: minios_addons.py -> time.c -> ktime.h +- `minios_addons.py` imports `subprocess` (3 hops to `spinlock.h`) [high] + Path: minios_addons.py -> time.c -> kernel.h -> spinlock.h - `minios_addons.py` imports `subprocess` (3 hops to `minios_abi.h`) [high] Path: minios_addons.py -> time.c -> kernel.h -> minios_abi.h @@ -565,21 +543,21 @@ Files sorted by how many other files would be affected if they changed. High-imp | File | Direct Dependents | Transitive Dependents | Total Impact | |------|------------------|----------------------|--------------| -| `string.c` | 45 | 39 | 84 | +| `string.c` | 45 | 42 | 87 | | `vma.h` | 6 | 50 | 63 | +| `minios_abi.h` | 17 | 41 | 58 | | `m_fixed.h` | 9 | 48 | 57 | -| `minios_abi.h` | 17 | 39 | 56 | -| `d_think.h` | 3 | 50 | 55 | | `tables.h` | 6 | 49 | 55 | | `kernel.h` | 39 | 15 | 54 | +| `d_think.h` | 3 | 50 | 54 | | `v_patch.h` | 2 | 50 | 54 | -| `d_ticcmd.h` | 6 | 47 | 53 | | `i_video.h` | 18 | 35 | 53 | -| `sha1.h` | 5 | 48 | 53 | +| `info.h` | 4 | 49 | 53 | +| `i_timer.h` | 9 | 43 | 52 | | `net_defs.h` | 9 | 43 | 52 | -| `d_event.h` | 13 | 38 | 51 | | `d_items.h` | 2 | 49 | 51 | | `d_mode.h` | 6 | 45 | 51 | +| `d_event.h` | 13 | 37 | 50 | --- @@ -668,7 +646,7 @@ graph TD classDef cls fill:#2d2d2d,stroke:#4ec9b0,stroke-width:2px,color:#fff; classDef fn fill:#333,stroke:#dcdcaa,stroke-width:1px,color:#dcdcaa; classDef ext fill:#111,stroke:#666,stroke-dasharray:5 5,color:#aaa; - subgraph community_9 ["progs/doomgeneric"] + subgraph community_6 ["progs/doomgeneric"] progs_doomgeneric_d_main_c["d_main.c (c)"] class progs_doomgeneric_d_main_c mod; progs_doomgeneric_d_main_c_D_ProcessEvents["D_ProcessEvents"] @@ -693,17 +671,13 @@ graph TD progs_doomgeneric_st_stuff_c["st_stuff.c (c)"] class progs_doomgeneric_st_stuff_c mod; end - subgraph community_0 ["root"] + subgraph community_1 ["root"] kernel_syscalls_c["syscalls.c (c)"] class kernel_syscalls_c mod; - end - subgraph community_5 ["progs/doomgeneric"] progs_doomgeneric_i_input_c["i_input.c (c)"] class progs_doomgeneric_i_input_c mod; progs_doomgeneric_i_system_c["i_system.c (c)"] class progs_doomgeneric_i_system_c mod; - end - subgraph community_10 ["progs/doomgeneric"] progs_doomgeneric_d_loop_c["d_loop.c (c)"] class progs_doomgeneric_d_loop_c mod; progs_doomgeneric_am_map_c["am_map.c (c)"] @@ -726,6 +700,8 @@ graph TD class progs_doomgeneric_f_finale_c mod; progs_doomgeneric_v_video_c["v_video.c (c)"] class progs_doomgeneric_v_video_c mod; + end + subgraph community_0 ["root"] kernel_sched_c["sched.c (c)"] class kernel_sched_c mod; progs_doomgeneric_p_map_c["p_map.c (c)"] @@ -773,13 +749,13 @@ graph TD progs_doomgeneric_r_local_h["r_local.h (h)"] class progs_doomgeneric_r_local_h mod; end - subgraph community_13 ["progs/nuklear"] + subgraph community_3 ["progs/src"] progs_nuklear_node_editor_c["node_editor.c (c)"] class progs_nuklear_node_editor_c mod; progs_doomgeneric_r_draw_c["r_draw.c (c)"] class progs_doomgeneric_r_draw_c mod; end - subgraph community_7 ["tools"] + subgraph community_8 ["tools"] progs_tls_u_tls_u_port_c["tls_u_port.c (c)"] class progs_tls_u_tls_u_port_c mod; progs_doomgeneric_r_plane_c["r_plane.c (c)"] @@ -789,7 +765,7 @@ graph TD mcp_test_minios_mcp_py["test_minios_mcp.py (py)"] class mcp_test_minios_mcp_py mod; end - subgraph community_8 ["root"] + subgraph community_10 ["root"] tls_test_c["tls_test.c (c)"] class tls_test_c mod; progs_doomgeneric_doomgeneric_sosox_c["doomgeneric_sosox.c (c)"] @@ -818,12 +794,8 @@ graph TD class mcp_minios_mcp_py mod; progs_doomgeneric_m_argv_c["m_argv.c (c)"] class progs_doomgeneric_m_argv_c mod; - end - subgraph community_2 ["root"] progs_pokemon_platform_minios_c["platform_minios.c (c)"] class progs_pokemon_platform_minios_c mod; - end - subgraph community_12 ["progs/src"] progs_piano_piano_c["piano.c (c)"] class progs_piano_piano_c mod; tls_port_h["tls_port.h (h)"] @@ -884,8 +856,6 @@ graph TD class tools_minios_gui_py mod; progs_doomgeneric_w_file_c["w_file.c (c)"] class progs_doomgeneric_w_file_c mod; - end - subgraph community_14 ["progs/nuklear"] progs_vedit_vedit_c["vedit.c (c)"] class progs_vedit_vedit_c mod; net_net_c["net.c (c)"] @@ -898,6 +868,8 @@ graph TD class progs_doomgeneric_net_client_h mod; kernel_mm_paging_c["paging.c (c)"] class kernel_mm_paging_c mod; + end + subgraph community_5 ["drivers"] drivers_block_c["block.c (c)"] class drivers_block_c mod; mcp_minios_addons_py["minios_addons.py (py)"] @@ -942,6 +914,8 @@ graph TD class kernel_h mod; drivers_sb16_c["sb16.c (c)"] class drivers_sb16_c mod; + end + subgraph community_12 ["progs/nuklear"] progs_nuklear_cvm_emit_c["cvm_emit.c (c)"] class progs_nuklear_cvm_emit_c mod; net_tls_c["tls.c (c)"] @@ -950,8 +924,6 @@ graph TD class net_rtl8139_c mod; kernel_editor_c["editor.c (c)"] class kernel_editor_c mod; - end - subgraph community_4 ["root"] qga_c["qga.c (c)"] class qga_c mod; progs_doomgeneric_doomgeneric_win_c["doomgeneric_win.c (c)"] @@ -994,14 +966,12 @@ graph TD class progs_lua_minios_c mod; rcu_h["rcu.h (h)"] class rcu_h mod; + end + subgraph community_14 ["root"] tests_test_sanitize_c["test_sanitize.c (c)"] class tests_test_sanitize_c mod; - end - subgraph community_15 ["progs/src"] progs_src_thdemo_c["thdemo.c (c)"] class progs_src_thdemo_c mod; - end - subgraph community_17 ["tests"] tests_test_fault_c["test_fault.c (c)"] class tests_test_fault_c mod; percpu_rq_h["percpu_rq.h (h)"] @@ -1046,6 +1016,8 @@ graph TD class progs_doomgeneric_s_sound_h mod; progs_doomgeneric_i_system_h["i_system.h (h)"] class progs_doomgeneric_i_system_h mod; + end + subgraph community_15 ["root"] tests_test_vma_c["test_vma.c (c)"] class tests_test_vma_c mod; kernel_mm_c["mm.c (c)"] @@ -1103,7 +1075,7 @@ graph TD tests_test_rcu_c["test_rcu.c (c)"] class tests_test_rcu_c mod; end - subgraph community_6 ["kernel"] + subgraph community_7 ["kernel"] tests_test_tick_c["test_tick.c (c)"] class tests_test_tick_c mod; progs_doomgeneric_deh_str_h["deh_str.h (h)"] @@ -1117,17 +1089,17 @@ graph TD progs_doomgeneric_w_file_h["w_file.h (h)"] class progs_doomgeneric_w_file_h mod; end - subgraph community_1 ["arch/x86"] + subgraph community_2 ["arch/x86"] tests_test_hal_io_c["test_hal_io.c (c)"] class tests_test_hal_io_c mod; end - subgraph community_3 ["root"] + subgraph community_4 ["root"] tests_test_batch_c["test_batch.c (c)"] class tests_test_batch_c mod; progs_doomgeneric_i_main_c["i_main.c (c)"] class progs_doomgeneric_i_main_c mod; end - subgraph community_16 ["root"] + subgraph community_13 ["root"] tests_test_randmix_c["test_randmix.c (c)"] class tests_test_randmix_c mod; tools_check_abi_numbers_py["check_abi_numbers.py (py)"] @@ -1136,6 +1108,8 @@ graph TD class progs_doomgeneric_d_event_c mod; progs_doomgeneric_m_bbox_h["m_bbox.h (h)"] class progs_doomgeneric_m_bbox_h mod; + end + subgraph community_9 ["root"] tests_test_ktime_c["test_ktime.c (c)"] class tests_test_ktime_c mod; tests_test_rtc_c["test_rtc.c (c)"] @@ -2119,7 +2093,7 @@ classDiagram Machine-readable Code Property Graph (CPG) in JSON-LD format. This block allows AI agents to parse the full structural graph without additional file reads. Compatible with GraphRAG pipelines. ```json -{"@context": "https://schema.org", "analysis": {"communities": [{"cohesion": 0.89, "id": 0, "label": "root", "size": 74}, {"cohesion": 0.5, "id": 1, "label": "arch/x86", "size": 2}, {"cohesion": 0.333, "id": 2, "label": "root", "size": 2}, {"cohesion": 0.667, "id": 3, "label": "root", "size": 3}, {"cohesion": 0.5, "id": 4, "label": "root", "size": 5}, {"cohesion": 0.517, "id": 5, "label": "progs/doomgeneric", "size": 65}, {"cohesion": 0.667, "id": 6, "label": "kernel", "size": 3}, {"cohesion": 0.739, "id": 7, "label": "tools", "size": 17}, {"cohesion": 0.632, "id": 8, "label": "root", "size": 9}, {"cohesion": 0.765, "id": 9, "label": "progs/doomgeneric", "size": 111}, {"cohesion": 0.422, "id": 10, "label": "progs/doomgeneric", "size": 13}, {"cohesion": 0.75, "id": 11, "label": "progs/src", "size": 4}, {"cohesion": 0.286, "id": 12, "label": "progs/src", "size": 6}, {"cohesion": 0.333, "id": 13, "label": "progs/nuklear", "size": 3}, {"cohesion": 0.286, "id": 14, "label": "progs/nuklear", "size": 3}, {"cohesion": 0.4, "id": 15, "label": "progs/src", "size": 3}, {"cohesion": 0.5, "id": 16, "label": "root", "size": 2}, {"cohesion": 0.429, "id": 17, "label": "tests", "size": 4}], "god_nodes": [{"node_id": "kernel.h", "score": 114.2}, {"node_id": "progs/doomgeneric/doomtype.h", "score": 101.4}, {"node_id": "kernel/string.c", "score": 93.3}, {"node_id": "progs/doomgeneric/doomdef.h", "score": 90.9}, {"node_id": "progs/doomgeneric/d_main.c", "score": 89.3}, {"node_id": "progs/doomgeneric/doomstat.h", "score": 84.8}, {"node_id": "progs/doomgeneric/i_system.h", "score": 81.5}, {"node_id": "progs/doomgeneric/z_zone.h", "score": 81.3}, {"node_id": "progs/doomgeneric/g_game.c", "score": 77.7}, {"node_id": "progs/doomgeneric/p_local.h", "score": 62.1}], "surprising_connections": [{"hops": 8, "source": "arch/x86/ap_entry.S", "target": "progs/doomgeneric/i_cdmus.h"}, {"hops": 8, "source": "arch/x86/ap_entry.S", "target": "progs/doomgeneric/info.h"}, {"hops": 8, "source": "arch/x86/ap_entry.S", "target": "progs/doomgeneric/net_packet.h"}, {"hops": 8, "source": "arch/x86/ap_entry.S", "target": "progs/doomgeneric/w_merge.h"}, {"hops": 8, "source": "arch/x86/boot/stage1.S", "target": "progs/doomgeneric/i_cdmus.h"}]}, "edges": [{"confidence": "EXTRACTED", "relation": "imports", "source": "arch/x86/ap_entry.S", "target": "bootdefs.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "arch/x86/boot/stage1.S", "target": "bootdefs.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "arch/x86/boot/stage2.S", "target": "bootdefs.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "batch.h", "target": "stdint.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "desktop_icons.h", "target": "stdint.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "desktop_shortcuts.h", "target": "stdint.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "drivers/block.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "drivers/block.c", "target": "ide.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "drivers/block.c", "target": "block.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "drivers/block.c", "target": "driver.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "drivers/driver.c", "target": "driver.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "drivers/ide.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "drivers/ide.c", "target": "ide.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "drivers/ide.c", "target": "driver.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "drivers/kbd.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "drivers/kbd.c", "target": "sched.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "drivers/kbd.c", "target": "vga_fb.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "drivers/kbd.c", "target": "kbd.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "drivers/pcspk.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "drivers/pcspk.c", "target": "pcspk.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "drivers/pcspk.c", "target": "driver.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "drivers/rtc.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "drivers/rtc.c", "target": "rtc.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "drivers/sb16.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "drivers/sb16.c", "target": "sb16.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "drivers/sb16.c", "target": "sync.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "editor.h", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "fs/kfile.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "fs/kfile.c", "target": "minifs.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "fs/minifs.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "fs/minifs.c", "target": "minifs.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "fs/minifs.c", "target": "block.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "fs/minifs.c", "target": "ide.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "fs/minifs.c", "target": "lz4_kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "fs/ramdisk.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "fs/vfs.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "fs/vfs.c", "target": "minifs.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "fs/zip.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "fs/zip.c", "target": "miniz.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "futex.h", "target": "stdint.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "futex.h", "target": "spinlock.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "futex.h", "target": "sched.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "futex.h", "target": "sync.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "gen_minifs.py", "target": "os"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/batch.c", "target": "batch.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/console.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/console.c", "target": "sched.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/console.c", "target": "vga_fb.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/console.c", "target": "xxhash.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/console.c", "target": "stb/stb_api.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/cvm_host.c", "target": "cvm.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/cvm_host.c", "target": "cvm_jit.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/editor.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/editor.c", "target": "shell.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/editor.c", "target": "editor.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/exec.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/exec.c", "target": "bootdefs.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/exec.c", "target": "arch/x86/msr.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/exec.c", "target": "vga_fb.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/exec.c", "target": "sched.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/exec.c", "target": "drivers/kbd.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/futex.c", "target": "futex.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/futex.c", "target": "sync.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/klog.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/loader.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/loader.c", "target": "vga_fb.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/lz4_kernel.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/lz4_kernel.c", "target": "lz4_kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/mm/paging.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/mm/paging.c", "target": "bootdefs.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/mm/paging.c", "target": "vga_fb.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/mm/paging.c", "target": "arch/x86/msr.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/mm/swap.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/mm/swap.c", "target": "ide.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/mm/swap.c", "target": "lz4_kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/mm.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/mm.c", "target": "sched.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/percpu_rq.c", "target": "percpu_rq.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/printf.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/rcu.c", "target": "rcu.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/redirect.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/sched.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/sched.c", "target": "sched.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/sched.c", "target": "smp.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/sched.c", "target": "sync.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/sched.c", "target": "futex.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/sched.c", "target": "percpu_rq.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/sched.c", "target": "rcu.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/sched.c", "target": "bootdefs.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/sched.c", "target": "vga_fb.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/sched.c", "target": "sb16.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/sched.c", "target": "tick.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/sched.c", "target": "arch/x86/hal_io.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/sched.c", "target": "arch/x86/msr.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/scrollback.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/serial.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/serial.c", "target": "sched.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/shell.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/shell.c", "target": "net.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/shell.c", "target": "minifs.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/shell.c", "target": "sched.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/shell.c", "target": "smp.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/shell.c", "target": "percpu_rq.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/shell.c", "target": "vga_fb.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/shell.c", "target": "pcspk.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/shell.c", "target": "sb16.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/shell.c", "target": "rtc.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/shell.c", "target": "drivers/kbd.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/shell.c", "target": "xxhash.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/shell.c", "target": "zip.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/shell.c", "target": "shell.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/shell.c", "target": "editor.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/string.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/symtab.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/sync.c", "target": "sync.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/syscalls.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/syscalls.c", "target": "net.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/syscalls.c", "target": "bootdefs.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/syscalls.c", "target": "minifs.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/syscalls.c", "target": "ide.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/syscalls.c", "target": "block.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/syscalls.c", "target": "sched.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/syscalls.c", "target": "vga_fb.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/syscalls.c", "target": "pcspk.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/syscalls.c", "target": "sb16.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/syscalls.c", "target": "rtc.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/syscalls.c", "target": "lz4_kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/syscalls.c", "target": "drivers/kbd.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/syscalls.c", "target": "arch/x86/msr.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/syscalls.c", "target": "zip.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/syscalls.c", "target": "futex.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/syscalls.c", "target": "batch.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/syscalls.c", "target": "rcu.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/syscalls.c", "target": "percpu_rq.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/syscalls.c", "target": "sanitize.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/syscalls.c", "target": "shell.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/syscalls.c", "target": "ktime.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/syscalls.c", "target": "randmix.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/tick.c", "target": "tick.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/tick.c", "target": "stddef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/time.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/time.c", "target": "ktime.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/vga_fb.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/vga_fb.c", "target": "vga_fb.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/vga_fb.c", "target": "bootdefs.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/vga_fb.c", "target": "drivers/kbd.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/vga_fb.c", "target": "desktop_shortcuts.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/vga_fb.c", "target": "desktop_icons.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel/vga_fb.c", "target": "stb_api.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel.c", "target": "net.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel.c", "target": "bootdefs.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel.c", "target": "minifs.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel.c", "target": "ide.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel.c", "target": "block.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel.c", "target": "sched.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel.c", "target": "vga_fb.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel.c", "target": "sb16.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel.c", "target": "smp.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel.c", "target": "arch/x86/msr.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel.h", "target": "minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel.h", "target": "vma.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "kernel.h", "target": "spinlock.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/mcp_dbg_driver.py", "target": "json"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/mcp_dbg_driver.py", "target": "os"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/mcp_dbg_driver.py", "target": "select"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/mcp_dbg_driver.py", "target": "subprocess"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/mcp_dbg_driver.py", "target": "sys"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/mcp_dbg_driver.py", "target": "time"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/mcp_dogfood.py", "target": "json"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/mcp_dogfood.py", "target": "os"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/mcp_dogfood.py", "target": "select"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/mcp_dogfood.py", "target": "subprocess"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/mcp_dogfood.py", "target": "sys"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/mcp_dogfood.py", "target": "time"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/minios_addons.py", "target": "json"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/minios_addons.py", "target": "os"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/minios_addons.py", "target": "re"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/minios_addons.py", "target": "shutil"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/minios_addons.py", "target": "subprocess"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/minios_addons.py", "target": "tempfile"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/minios_addons.py", "target": "time"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/minios_mcp.py", "target": "atexit"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/minios_mcp.py", "target": "json"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/minios_mcp.py", "target": "os"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/minios_mcp.py", "target": "signal"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/minios_mcp.py", "target": "sys"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/minios_mcp.py", "target": "tempfile"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/minios_mcp.py", "target": "threading"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/minios_mcp.py", "target": "time"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/minios_mcp.py", "target": "tty"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/minios_mcp.py", "target": "minios_addons"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/minios_mcp.py", "target": "subprocess"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/test_minios_mcp.py", "target": "importlib.util"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/test_minios_mcp.py", "target": "json"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/test_minios_mcp.py", "target": "os"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/test_minios_mcp.py", "target": "select"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/test_minios_mcp.py", "target": "subprocess"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/test_minios_mcp.py", "target": "sys"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/test_minios_mcp.py", "target": "tempfile"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/test_minios_mcp.py", "target": "unittest"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/test_minios_mcp.py", "target": "shutil"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/test_minios_mcp.py", "target": "importlib.util"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/test_minios_mcp.py", "target": "importlib.util"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/test_minios_mcp.py", "target": "importlib.util"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/test_minios_mcp.py", "target": "shutil"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/test_minios_mcp.py", "target": "shutil"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mcp/test_minios_mcp.py", "target": "shutil"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "minifs_dump.py", "target": "struct"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "minifs_dump.py", "target": "sys"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "minifs_fsck.py", "target": "struct"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "minifs_fsck.py", "target": "sys"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mkfs.minifs.py", "target": "struct"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mkfs.minifs.py", "target": "os"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mkfs.minifs.py", "target": "sys"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mkramdisk.py", "target": "os"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mkramdisk.py", "target": "struct"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "mkramdisk.py", "target": "sys"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "net/net.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "net/net.c", "target": "net.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "net/net.c", "target": "tls.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "net/net.c", "target": "rtl8139.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "net/rtl8139.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "net/rtl8139.c", "target": "net.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "net/rtl8139.c", "target": "rtl8139.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "net/rtl8139.h", "target": "net.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "net/tls.c", "target": "tls_port.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "net/tls.c", "target": "tls.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "net/tls.c", "target": "tls_roots.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "net/tls_crypto.c", "target": "tls_port.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "net/tls_crypto.c", "target": "tls.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "net/tls_x509.c", "target": "tls_port.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "net/tls_x509.c", "target": "tls.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "percpu_rq.h", "target": "stdint.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "percpu_rq.h", "target": "spinlock.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "percpu_rq.h", "target": "sched.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/am_map.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/am_map.c", "target": "deh_main.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/am_map.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/am_map.c", "target": "doomkeys.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/am_map.c", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/am_map.c", "target": "st_stuff.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/am_map.c", "target": "p_local.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/am_map.c", "target": "w_wad.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/am_map.c", "target": "m_cheat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/am_map.c", "target": "m_controls.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/am_map.c", "target": "m_misc.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/am_map.c", "target": "i_system.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/am_map.c", "target": "v_video.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/am_map.c", "target": "doomstat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/am_map.c", "target": "r_state.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/am_map.c", "target": "dstrings.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/am_map.c", "target": "am_map.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/am_map.h", "target": "d_event.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/am_map.h", "target": "m_cheat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_event.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_event.c", "target": "d_event.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_event.h", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_items.c", "target": "info.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_items.c", "target": "d_items.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_items.h", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_iwad.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_iwad.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_iwad.c", "target": "ctype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_iwad.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_iwad.c", "target": "config.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_iwad.c", "target": "deh_str.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_iwad.c", "target": "doomkeys.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_iwad.c", "target": "d_iwad.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_iwad.c", "target": "i_system.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_iwad.c", "target": "m_argv.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_iwad.c", "target": "m_config.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_iwad.c", "target": "m_misc.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_iwad.c", "target": "w_wad.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_iwad.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_iwad.c", "target": "windows.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_iwad.h", "target": "d_mode.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_loop.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_loop.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_loop.c", "target": "doomfeatures.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_loop.c", "target": "d_event.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_loop.c", "target": "d_loop.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_loop.c", "target": "d_ticcmd.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_loop.c", "target": "i_system.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_loop.c", "target": "i_timer.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_loop.c", "target": "i_video.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_loop.c", "target": "m_argv.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_loop.c", "target": "m_fixed.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_loop.c", "target": "net_client.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_loop.c", "target": "net_gui.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_loop.c", "target": "net_io.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_loop.c", "target": "net_query.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_loop.c", "target": "net_server.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_loop.c", "target": "net_sdl.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_loop.c", "target": "net_loop.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_loop.h", "target": "net_defs.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "ctype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "config.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "deh_main.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "doomstat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "dstrings.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "doomfeatures.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "sounds.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "d_iwad.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "w_main.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "w_wad.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "s_sound.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "v_video.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "f_finale.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "f_wipe.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "m_argv.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "m_config.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "m_controls.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "m_misc.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "m_menu.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "p_saveg.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "i_endoom.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "i_joystick.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "i_system.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "i_timer.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "i_video.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "g_game.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "hu_stuff.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "wi_stuff.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "st_stuff.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "am_map.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "net_client.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "net_dedicated.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "net_query.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "p_setup.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "r_local.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "statdump.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.c", "target": "d_main.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_main.h", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_mode.c", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_mode.c", "target": "d_mode.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_mode.h", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_net.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_net.c", "target": "doomfeatures.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_net.c", "target": "d_main.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_net.c", "target": "m_argv.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_net.c", "target": "m_menu.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_net.c", "target": "m_misc.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_net.c", "target": "i_system.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_net.c", "target": "i_timer.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_net.c", "target": "i_video.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_net.c", "target": "g_game.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_net.c", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_net.c", "target": "doomstat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_net.c", "target": "w_checksum.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_net.c", "target": "w_wad.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_net.c", "target": "deh_main.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_net.c", "target": "d_loop.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_player.h", "target": "d_items.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_player.h", "target": "p_pspr.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_player.h", "target": "p_mobj.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_player.h", "target": "d_ticcmd.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_player.h", "target": "net_defs.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_textur.h", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/d_ticcmd.h", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/deh_main.h", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/deh_main.h", "target": "doomfeatures.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/deh_main.h", "target": "deh_str.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/deh_main.h", "target": "sha1.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/deh_misc.h", "target": "doomfeatures.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/deh_str.h", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/deh_str.h", "target": "doomfeatures.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomdata.h", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomdata.h", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomdef.c", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomdef.h", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomdef.h", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomdef.h", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomdef.h", "target": "i_timer.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomdef.h", "target": "d_mode.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric.c", "target": "doomgeneric.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric.h", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric.h", "target": "stdint.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_minios.c", "target": "doomgeneric.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_minios.c", "target": "doomkeys.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_minios.c", "target": "stdint.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_minios.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_minios.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_minios.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_minios.c", "target": "minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_sdl.c", "target": "doomkeys.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_sdl.c", "target": "m_argv.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_sdl.c", "target": "doomgeneric.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_sdl.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_sdl.c", "target": "unistd.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_sdl.c", "target": "stdbool.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_sdl.c", "target": "SDL.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_soso.c", "target": "doomkeys.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_soso.c", "target": "m_argv.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_soso.c", "target": "doomgeneric.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_soso.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_soso.c", "target": "fcntl.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_soso.c", "target": "unistd.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_soso.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_soso.c", "target": "sys/ioctl.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_soso.c", "target": "sys/mman.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_soso.c", "target": "termios.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_soso.c", "target": "soso.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_sosox.c", "target": "doomkeys.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_sosox.c", "target": "m_argv.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_sosox.c", "target": "doomgeneric.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_sosox.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_sosox.c", "target": "fcntl.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_sosox.c", "target": "unistd.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_sosox.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_sosox.c", "target": "sys/ioctl.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_sosox.c", "target": "termios.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_sosox.c", "target": "soso.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_sosox.c", "target": "nano-X.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_win.c", "target": "doomkeys.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_win.c", "target": "doomgeneric.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_win.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_win.c", "target": "Windows.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_xlib.c", "target": "doomkeys.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_xlib.c", "target": "doomgeneric.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_xlib.c", "target": "ctype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_xlib.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_xlib.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_xlib.c", "target": "unistd.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_xlib.c", "target": "sys/time.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_xlib.c", "target": "X11/Xlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_xlib.c", "target": "X11/Xutil.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomgeneric_xlib.c", "target": "X11/Xatom.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomstat.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomstat.c", "target": "doomstat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomstat.h", "target": "doomdata.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomstat.h", "target": "d_loop.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomstat.h", "target": "d_player.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomstat.h", "target": "d_mode.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomstat.h", "target": "net_defs.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomtype.h", "target": "strings.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomtype.h", "target": "inttypes.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/doomtype.h", "target": "limits.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/dstrings.c", "target": "dstrings.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/dstrings.h", "target": "d_englsh.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/dummy.c", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/f_finale.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/f_finale.c", "target": "ctype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/f_finale.c", "target": "deh_main.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/f_finale.c", "target": "i_system.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/f_finale.c", "target": "i_swap.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/f_finale.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/f_finale.c", "target": "v_video.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/f_finale.c", "target": "w_wad.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/f_finale.c", "target": "s_sound.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/f_finale.c", "target": "d_main.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/f_finale.c", "target": "dstrings.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/f_finale.c", "target": "sounds.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/f_finale.c", "target": "doomstat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/f_finale.c", "target": "r_state.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/f_finale.c", "target": "hu_stuff.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/f_finale.h", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/f_finale.h", "target": "d_event.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/f_wipe.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/f_wipe.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/f_wipe.c", "target": "i_video.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/f_wipe.c", "target": "v_video.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/f_wipe.c", "target": "m_random.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/f_wipe.c", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/f_wipe.c", "target": "f_wipe.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/g_game.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/g_game.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/g_game.c", "target": "math.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/g_game.c", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/g_game.c", "target": "doomkeys.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/g_game.c", "target": "doomstat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/g_game.c", "target": "deh_main.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/g_game.c", "target": "deh_misc.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/g_game.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/g_game.c", "target": "f_finale.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/g_game.c", "target": "m_argv.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/g_game.c", "target": "m_controls.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/g_game.c", "target": "m_misc.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/g_game.c", "target": "m_menu.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/g_game.c", "target": "m_random.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/g_game.c", "target": "i_system.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/g_game.c", "target": "i_timer.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/g_game.c", "target": "i_video.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/g_game.c", "target": "p_setup.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/g_game.c", "target": "p_saveg.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/g_game.c", "target": "p_tick.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/g_game.c", "target": "d_main.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/g_game.c", "target": "wi_stuff.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/g_game.c", "target": "hu_stuff.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/g_game.c", "target": "st_stuff.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/g_game.c", "target": "am_map.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/g_game.c", "target": "statdump.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/g_game.c", "target": "v_video.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/g_game.c", "target": "w_wad.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/g_game.c", "target": "p_local.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/g_game.c", "target": "s_sound.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/g_game.c", "target": "dstrings.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/g_game.c", "target": "sounds.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/g_game.c", "target": "r_data.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/g_game.c", "target": "r_sky.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/g_game.c", "target": "g_game.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/g_game.h", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/g_game.h", "target": "d_event.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/g_game.h", "target": "d_ticcmd.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/gusconf.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/gusconf.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/gusconf.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/gusconf.c", "target": "ctype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/gusconf.c", "target": "w_wad.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/gusconf.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/gusconf.h", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/hu_lib.c", "target": "ctype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/hu_lib.c", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/hu_lib.c", "target": "doomkeys.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/hu_lib.c", "target": "v_video.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/hu_lib.c", "target": "i_swap.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/hu_lib.c", "target": "hu_lib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/hu_lib.c", "target": "r_local.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/hu_lib.c", "target": "r_draw.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/hu_lib.h", "target": "r_defs.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/hu_stuff.c", "target": "ctype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/hu_stuff.c", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/hu_stuff.c", "target": "doomkeys.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/hu_stuff.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/hu_stuff.c", "target": "deh_main.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/hu_stuff.c", "target": "i_swap.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/hu_stuff.c", "target": "i_video.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/hu_stuff.c", "target": "hu_stuff.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/hu_stuff.c", "target": "hu_lib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/hu_stuff.c", "target": "m_controls.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/hu_stuff.c", "target": "m_misc.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/hu_stuff.c", "target": "w_wad.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/hu_stuff.c", "target": "s_sound.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/hu_stuff.c", "target": "doomstat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/hu_stuff.c", "target": "dstrings.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/hu_stuff.c", "target": "sounds.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/hu_stuff.h", "target": "d_event.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_cdmus.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_cdmus.c", "target": "SDL.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_cdmus.c", "target": "SDL_cdrom.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_cdmus.c", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_cdmus.c", "target": "i_cdmus.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_endoom.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_endoom.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_endoom.c", "target": "config.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_endoom.c", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_endoom.c", "target": "i_video.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_endoom.c", "target": "txt_main.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_input.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_input.c", "target": "ctype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_input.c", "target": "math.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_input.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_input.c", "target": "fcntl.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_input.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_input.c", "target": "config.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_input.c", "target": "deh_str.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_input.c", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_input.c", "target": "doomkeys.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_input.c", "target": "i_joystick.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_input.c", "target": "i_system.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_input.c", "target": "i_swap.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_input.c", "target": "i_timer.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_input.c", "target": "i_video.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_input.c", "target": "i_scale.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_input.c", "target": "m_argv.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_input.c", "target": "m_config.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_input.c", "target": "m_misc.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_input.c", "target": "tables.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_input.c", "target": "v_video.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_input.c", "target": "w_wad.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_input.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_input.c", "target": "doomgeneric.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_joystick.c", "target": "SDL.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_joystick.c", "target": "SDL_joystick.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_joystick.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_joystick.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_joystick.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_joystick.c", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_joystick.c", "target": "d_event.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_joystick.c", "target": "i_joystick.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_joystick.c", "target": "i_system.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_joystick.c", "target": "m_config.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_joystick.c", "target": "m_misc.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_main.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_main.c", "target": "m_argv.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_minios_sound.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_minios_sound.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_minios_sound.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_minios_sound.c", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_minios_sound.c", "target": "doomfeatures.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_minios_sound.c", "target": "i_sound.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_minios_sound.c", "target": "w_wad.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_minios_sound.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_minios_sound.c", "target": "doomgeneric.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_minios_sound.c", "target": "minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_scale.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_scale.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_scale.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_scale.c", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_scale.c", "target": "i_video.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_scale.c", "target": "m_argv.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_scale.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_scale.h", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_sound.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_sound.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_sound.c", "target": "SDL_mixer.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_sound.c", "target": "config.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_sound.c", "target": "doomfeatures.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_sound.c", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_sound.c", "target": "gusconf.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_sound.c", "target": "i_sound.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_sound.c", "target": "i_video.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_sound.c", "target": "m_argv.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_sound.c", "target": "m_config.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_sound.h", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_swap.h", "target": "SDL_endian.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_system.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_system.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_system.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_system.c", "target": "stdarg.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_system.c", "target": "windows.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_system.c", "target": "unistd.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_system.c", "target": "SDL.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_system.c", "target": "config.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_system.c", "target": "deh_str.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_system.c", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_system.c", "target": "m_argv.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_system.c", "target": "m_config.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_system.c", "target": "m_misc.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_system.c", "target": "i_joystick.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_system.c", "target": "i_sound.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_system.c", "target": "i_timer.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_system.c", "target": "i_video.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_system.c", "target": "i_system.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_system.c", "target": "w_wad.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_system.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_system.c", "target": "CoreFoundation/CFUserNotification.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_system.h", "target": "d_ticcmd.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_system.h", "target": "d_event.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_timer.c", "target": "i_timer.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_timer.c", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_timer.c", "target": "doomgeneric.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_timer.c", "target": "stdarg.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_video.c", "target": "config.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_video.c", "target": "v_video.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_video.c", "target": "m_argv.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_video.c", "target": "d_event.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_video.c", "target": "d_main.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_video.c", "target": "i_video.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_video.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_video.c", "target": "tables.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_video.c", "target": "doomkeys.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_video.c", "target": "doomgeneric.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_video.c", "target": "stdbool.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_video.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_video.c", "target": "fcntl.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_video.c", "target": "stdarg.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_video.c", "target": "sys/types.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/i_video.h", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/info.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/info.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/info.c", "target": "sounds.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/info.c", "target": "m_fixed.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/info.c", "target": "info.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/info.c", "target": "p_mobj.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/info.h", "target": "d_think.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_argv.c", "target": "ctype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_argv.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_argv.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_argv.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_argv.c", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_argv.c", "target": "i_system.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_argv.c", "target": "m_misc.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_argv.c", "target": "m_argv.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_argv.h", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_bbox.c", "target": "m_bbox.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_bbox.h", "target": "limits.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_bbox.h", "target": "m_fixed.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_cheat.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_cheat.c", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_cheat.c", "target": "m_cheat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_config.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_config.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_config.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_config.c", "target": "ctype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_config.c", "target": "errno.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_config.c", "target": "config.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_config.c", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_config.c", "target": "doomkeys.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_config.c", "target": "doomfeatures.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_config.c", "target": "i_system.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_config.c", "target": "m_argv.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_config.c", "target": "m_misc.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_config.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_config.h", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_controls.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_controls.c", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_controls.c", "target": "doomkeys.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_controls.c", "target": "m_config.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_controls.c", "target": "m_misc.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_fixed.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_fixed.c", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_fixed.c", "target": "i_system.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_fixed.c", "target": "m_fixed.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_menu.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_menu.c", "target": "ctype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_menu.c", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_menu.c", "target": "doomkeys.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_menu.c", "target": "dstrings.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_menu.c", "target": "d_main.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_menu.c", "target": "deh_main.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_menu.c", "target": "i_swap.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_menu.c", "target": "i_system.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_menu.c", "target": "i_timer.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_menu.c", "target": "i_video.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_menu.c", "target": "m_misc.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_menu.c", "target": "v_video.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_menu.c", "target": "w_wad.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_menu.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_menu.c", "target": "r_local.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_menu.c", "target": "hu_stuff.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_menu.c", "target": "g_game.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_menu.c", "target": "m_argv.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_menu.c", "target": "m_controls.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_menu.c", "target": "p_saveg.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_menu.c", "target": "s_sound.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_menu.c", "target": "doomstat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_menu.c", "target": "sounds.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_menu.c", "target": "m_menu.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_menu.h", "target": "d_event.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_misc.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_misc.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_misc.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_misc.c", "target": "ctype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_misc.c", "target": "errno.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_misc.c", "target": "windows.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_misc.c", "target": "io.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_misc.c", "target": "direct.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_misc.c", "target": "sys/stat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_misc.c", "target": "sys/types.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_misc.c", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_misc.c", "target": "deh_str.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_misc.c", "target": "i_swap.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_misc.c", "target": "i_system.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_misc.c", "target": "i_video.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_misc.c", "target": "m_misc.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_misc.c", "target": "v_video.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_misc.c", "target": "w_wad.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_misc.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_misc.h", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_misc.h", "target": "stdarg.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_misc.h", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/m_random.h", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/memio.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/memio.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/memio.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/memio.c", "target": "memio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/memio.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/net_client.h", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/net_client.h", "target": "d_ticcmd.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/net_client.h", "target": "sha1.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/net_client.h", "target": "net_defs.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/net_defs.h", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/net_defs.h", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/net_defs.h", "target": "d_ticcmd.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/net_defs.h", "target": "sha1.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/net_gui.h", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/net_io.h", "target": "net_defs.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/net_loop.h", "target": "net_defs.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/net_packet.h", "target": "net_defs.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/net_query.h", "target": "net_defs.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/net_sdl.h", "target": "net_defs.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_ceilng.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_ceilng.c", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_ceilng.c", "target": "p_local.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_ceilng.c", "target": "s_sound.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_ceilng.c", "target": "doomstat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_ceilng.c", "target": "r_state.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_ceilng.c", "target": "sounds.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_doors.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_doors.c", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_doors.c", "target": "deh_main.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_doors.c", "target": "p_local.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_doors.c", "target": "s_sound.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_doors.c", "target": "doomstat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_doors.c", "target": "r_state.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_doors.c", "target": "dstrings.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_doors.c", "target": "sounds.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_enemy.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_enemy.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_enemy.c", "target": "m_random.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_enemy.c", "target": "i_system.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_enemy.c", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_enemy.c", "target": "p_local.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_enemy.c", "target": "s_sound.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_enemy.c", "target": "g_game.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_enemy.c", "target": "doomstat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_enemy.c", "target": "r_state.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_enemy.c", "target": "sounds.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_floor.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_floor.c", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_floor.c", "target": "p_local.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_floor.c", "target": "s_sound.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_floor.c", "target": "doomstat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_floor.c", "target": "r_state.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_floor.c", "target": "sounds.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_inter.c", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_inter.c", "target": "dstrings.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_inter.c", "target": "sounds.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_inter.c", "target": "deh_main.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_inter.c", "target": "deh_misc.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_inter.c", "target": "doomstat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_inter.c", "target": "m_random.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_inter.c", "target": "i_system.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_inter.c", "target": "am_map.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_inter.c", "target": "p_local.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_inter.c", "target": "s_sound.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_inter.c", "target": "p_inter.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_lights.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_lights.c", "target": "m_random.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_lights.c", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_lights.c", "target": "p_local.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_lights.c", "target": "r_state.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_local.h", "target": "r_local.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_local.h", "target": "p_spec.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_map.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_map.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_map.c", "target": "deh_misc.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_map.c", "target": "m_bbox.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_map.c", "target": "m_random.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_map.c", "target": "i_system.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_map.c", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_map.c", "target": "m_argv.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_map.c", "target": "m_misc.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_map.c", "target": "p_local.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_map.c", "target": "s_sound.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_map.c", "target": "doomstat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_map.c", "target": "r_state.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_map.c", "target": "sounds.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_maputl.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_maputl.c", "target": "m_bbox.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_maputl.c", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_maputl.c", "target": "doomstat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_maputl.c", "target": "p_local.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_maputl.c", "target": "r_state.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_mobj.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_mobj.c", "target": "i_system.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_mobj.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_mobj.c", "target": "m_random.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_mobj.c", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_mobj.c", "target": "p_local.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_mobj.c", "target": "sounds.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_mobj.c", "target": "st_stuff.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_mobj.c", "target": "hu_stuff.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_mobj.c", "target": "s_sound.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_mobj.c", "target": "doomstat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_mobj.h", "target": "tables.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_mobj.h", "target": "m_fixed.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_mobj.h", "target": "d_think.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_mobj.h", "target": "doomdata.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_mobj.h", "target": "info.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_plats.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_plats.c", "target": "i_system.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_plats.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_plats.c", "target": "m_random.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_plats.c", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_plats.c", "target": "p_local.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_plats.c", "target": "s_sound.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_plats.c", "target": "doomstat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_plats.c", "target": "r_state.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_plats.c", "target": "sounds.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_pspr.c", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_pspr.c", "target": "d_event.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_pspr.c", "target": "deh_misc.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_pspr.c", "target": "m_random.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_pspr.c", "target": "p_local.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_pspr.c", "target": "s_sound.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_pspr.c", "target": "doomstat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_pspr.c", "target": "sounds.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_pspr.c", "target": "p_pspr.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_pspr.h", "target": "m_fixed.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_pspr.h", "target": "tables.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_pspr.h", "target": "info.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_saveg.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_saveg.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_saveg.c", "target": "dstrings.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_saveg.c", "target": "deh_main.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_saveg.c", "target": "i_system.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_saveg.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_saveg.c", "target": "p_local.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_saveg.c", "target": "p_saveg.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_saveg.c", "target": "doomstat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_saveg.c", "target": "g_game.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_saveg.c", "target": "m_misc.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_saveg.c", "target": "r_state.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_saveg.h", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_setup.c", "target": "math.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_setup.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_setup.c", "target": "deh_main.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_setup.c", "target": "i_swap.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_setup.c", "target": "m_argv.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_setup.c", "target": "m_bbox.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_setup.c", "target": "g_game.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_setup.c", "target": "i_system.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_setup.c", "target": "w_wad.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_setup.c", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_setup.c", "target": "p_local.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_setup.c", "target": "s_sound.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_setup.c", "target": "doomstat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_sight.c", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_sight.c", "target": "i_system.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_sight.c", "target": "p_local.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_sight.c", "target": "r_state.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_spec.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_spec.c", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_spec.c", "target": "doomstat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_spec.c", "target": "deh_main.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_spec.c", "target": "i_system.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_spec.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_spec.c", "target": "m_argv.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_spec.c", "target": "m_misc.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_spec.c", "target": "m_random.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_spec.c", "target": "w_wad.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_spec.c", "target": "r_local.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_spec.c", "target": "p_local.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_spec.c", "target": "g_game.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_spec.c", "target": "s_sound.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_spec.c", "target": "r_state.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_spec.c", "target": "sounds.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_switch.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_switch.c", "target": "i_system.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_switch.c", "target": "deh_main.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_switch.c", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_switch.c", "target": "p_local.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_switch.c", "target": "g_game.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_switch.c", "target": "s_sound.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_switch.c", "target": "sounds.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_switch.c", "target": "doomstat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_switch.c", "target": "r_state.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_telept.c", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_telept.c", "target": "doomstat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_telept.c", "target": "s_sound.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_telept.c", "target": "p_local.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_telept.c", "target": "sounds.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_telept.c", "target": "r_state.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_tick.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_tick.c", "target": "p_local.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_tick.c", "target": "doomstat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_user.c", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_user.c", "target": "d_event.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_user.c", "target": "p_local.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/p_user.c", "target": "doomstat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_bsp.c", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_bsp.c", "target": "m_bbox.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_bsp.c", "target": "i_system.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_bsp.c", "target": "r_main.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_bsp.c", "target": "r_plane.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_bsp.c", "target": "r_things.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_bsp.c", "target": "doomstat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_bsp.c", "target": "r_state.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_data.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_data.c", "target": "deh_main.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_data.c", "target": "i_swap.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_data.c", "target": "i_system.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_data.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_data.c", "target": "w_wad.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_data.c", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_data.c", "target": "m_misc.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_data.c", "target": "r_local.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_data.c", "target": "p_local.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_data.c", "target": "doomstat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_data.c", "target": "r_sky.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_data.c", "target": "r_data.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_data.h", "target": "r_defs.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_data.h", "target": "r_state.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_defs.h", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_defs.h", "target": "m_fixed.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_defs.h", "target": "d_think.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_defs.h", "target": "p_mobj.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_defs.h", "target": "i_video.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_defs.h", "target": "v_patch.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_draw.c", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_draw.c", "target": "deh_main.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_draw.c", "target": "i_system.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_draw.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_draw.c", "target": "w_wad.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_draw.c", "target": "r_local.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_draw.c", "target": "v_video.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_draw.c", "target": "doomstat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_local.h", "target": "tables.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_local.h", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_local.h", "target": "r_data.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_local.h", "target": "r_main.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_local.h", "target": "r_bsp.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_local.h", "target": "r_segs.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_local.h", "target": "r_plane.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_local.h", "target": "r_things.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_local.h", "target": "r_draw.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_main.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_main.c", "target": "math.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_main.c", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_main.c", "target": "d_loop.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_main.c", "target": "m_bbox.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_main.c", "target": "m_menu.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_main.c", "target": "r_local.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_main.c", "target": "r_sky.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_main.h", "target": "d_player.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_main.h", "target": "r_data.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_plane.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_plane.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_plane.c", "target": "i_system.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_plane.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_plane.c", "target": "w_wad.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_plane.c", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_plane.c", "target": "doomstat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_plane.c", "target": "r_local.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_plane.c", "target": "r_sky.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_plane.h", "target": "r_data.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_segs.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_segs.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_segs.c", "target": "i_system.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_segs.c", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_segs.c", "target": "doomstat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_segs.c", "target": "r_local.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_segs.c", "target": "r_sky.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_sky.c", "target": "m_fixed.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_sky.c", "target": "r_data.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_sky.c", "target": "r_sky.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_state.h", "target": "d_player.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_state.h", "target": "r_data.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_things.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_things.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_things.c", "target": "deh_main.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_things.c", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_things.c", "target": "i_swap.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_things.c", "target": "i_system.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_things.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_things.c", "target": "w_wad.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_things.c", "target": "r_local.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/r_things.c", "target": "doomstat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/s_sound.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/s_sound.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/s_sound.c", "target": "i_sound.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/s_sound.c", "target": "i_system.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/s_sound.c", "target": "doomfeatures.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/s_sound.c", "target": "deh_str.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/s_sound.c", "target": "doomstat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/s_sound.c", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/s_sound.c", "target": "sounds.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/s_sound.c", "target": "s_sound.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/s_sound.c", "target": "m_misc.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/s_sound.c", "target": "m_random.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/s_sound.c", "target": "m_argv.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/s_sound.c", "target": "p_local.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/s_sound.c", "target": "w_wad.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/s_sound.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/s_sound.h", "target": "p_mobj.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/s_sound.h", "target": "sounds.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/sha1.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/sha1.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/sha1.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/sha1.c", "target": "assert.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/sha1.c", "target": "i_swap.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/sha1.c", "target": "sha1.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/sha1.h", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/sounds.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/sounds.c", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/sounds.c", "target": "sounds.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/sounds.h", "target": "i_sound.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_lib.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_lib.c", "target": "ctype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_lib.c", "target": "deh_main.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_lib.c", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_lib.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_lib.c", "target": "v_video.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_lib.c", "target": "i_swap.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_lib.c", "target": "i_system.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_lib.c", "target": "w_wad.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_lib.c", "target": "st_stuff.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_lib.c", "target": "st_lib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_lib.c", "target": "r_local.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_lib.h", "target": "r_defs.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_stuff.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_stuff.c", "target": "i_system.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_stuff.c", "target": "i_video.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_stuff.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_stuff.c", "target": "m_misc.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_stuff.c", "target": "m_random.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_stuff.c", "target": "w_wad.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_stuff.c", "target": "deh_main.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_stuff.c", "target": "deh_misc.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_stuff.c", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_stuff.c", "target": "doomkeys.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_stuff.c", "target": "g_game.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_stuff.c", "target": "st_stuff.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_stuff.c", "target": "st_lib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_stuff.c", "target": "r_local.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_stuff.c", "target": "p_local.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_stuff.c", "target": "p_inter.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_stuff.c", "target": "am_map.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_stuff.c", "target": "m_cheat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_stuff.c", "target": "s_sound.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_stuff.c", "target": "v_video.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_stuff.c", "target": "doomstat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_stuff.c", "target": "dstrings.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_stuff.c", "target": "sounds.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_stuff.h", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_stuff.h", "target": "d_event.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/st_stuff.h", "target": "m_cheat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/statdump.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/statdump.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/statdump.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/statdump.c", "target": "d_player.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/statdump.c", "target": "d_mode.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/statdump.c", "target": "m_argv.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/statdump.c", "target": "statdump.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/tables.c", "target": "tables.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/tables.h", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/tables.h", "target": "m_fixed.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/v_video.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/v_video.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/v_video.c", "target": "math.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/v_video.c", "target": "i_system.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/v_video.c", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/v_video.c", "target": "deh_str.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/v_video.c", "target": "i_swap.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/v_video.c", "target": "i_video.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/v_video.c", "target": "m_bbox.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/v_video.c", "target": "m_misc.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/v_video.c", "target": "v_video.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/v_video.c", "target": "w_wad.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/v_video.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/v_video.c", "target": "config.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/v_video.c", "target": "png.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/v_video.h", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/v_video.h", "target": "v_patch.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_checksum.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_checksum.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_checksum.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_checksum.c", "target": "m_misc.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_checksum.c", "target": "sha1.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_checksum.c", "target": "w_checksum.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_checksum.c", "target": "w_wad.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_checksum.h", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_file.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_file.c", "target": "config.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_file.c", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_file.c", "target": "m_argv.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_file.c", "target": "w_file.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_file.h", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_file.h", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_file_stdc.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_file_stdc.c", "target": "m_misc.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_file_stdc.c", "target": "w_file.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_file_stdc.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_main.c", "target": "doomfeatures.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_main.c", "target": "d_iwad.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_main.c", "target": "m_argv.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_main.c", "target": "w_main.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_main.c", "target": "w_merge.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_main.c", "target": "w_wad.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_main.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_wad.c", "target": "ctype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_wad.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_wad.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_wad.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_wad.c", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_wad.c", "target": "config.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_wad.c", "target": "d_iwad.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_wad.c", "target": "i_swap.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_wad.c", "target": "i_system.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_wad.c", "target": "i_video.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_wad.c", "target": "m_misc.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_wad.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_wad.c", "target": "w_wad.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_wad.h", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_wad.h", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_wad.h", "target": "d_mode.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/w_wad.h", "target": "w_file.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/wi_stuff.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/wi_stuff.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/wi_stuff.c", "target": "m_misc.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/wi_stuff.c", "target": "m_random.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/wi_stuff.c", "target": "deh_main.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/wi_stuff.c", "target": "i_swap.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/wi_stuff.c", "target": "i_system.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/wi_stuff.c", "target": "w_wad.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/wi_stuff.c", "target": "g_game.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/wi_stuff.c", "target": "r_local.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/wi_stuff.c", "target": "s_sound.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/wi_stuff.c", "target": "doomstat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/wi_stuff.c", "target": "sounds.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/wi_stuff.c", "target": "v_video.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/wi_stuff.c", "target": "wi_stuff.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/wi_stuff.h", "target": "doomdef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/z_zone.c", "target": "z_zone.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/z_zone.c", "target": "i_system.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/z_zone.c", "target": "doomtype.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/doomgeneric/z_zone.h", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/lua/lua_main.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/lua/lua_main.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/lua/lua_main.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/lua/lua_main.c", "target": "lua.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/lua/lua_main.c", "target": "lauxlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/lua/lua_main.c", "target": "lualib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/lua/minios.c", "target": "lua.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/lua/minios.c", "target": "lauxlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/lua/minios.c", "target": "stdint.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/lua/minios.c", "target": "minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/micropython/variants/minios/lib/hello.py", "target": "minios"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/micropython/variants/minios/minios_module.c", "target": "py/runtime.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/micropython/variants/minios/minios_module.c", "target": "stdint.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/micropython/variants/minios/minios_module.c", "target": "minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/nuklear/cvm_emit.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/nuklear/cvm_emit.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/nuklear/cvm_emit.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/nuklear/cvm_emit.c", "target": "cvm_emit.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/nuklear/cvm_emit.h", "target": "stddef.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/nuklear/node_editor.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/nuklear/node_editor.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/nuklear/node_editor.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/nuklear/node_editor.c", "target": "math.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/nuklear/node_editor.c", "target": "minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/nuklear/node_editor.c", "target": "sys/types.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/nuklear/node_editor.c", "target": "sys/stat.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/nuklear/node_editor.c", "target": "fcntl.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/nuklear/node_editor.c", "target": "unistd.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/nuklear/node_editor.c", "target": "nuklear.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/nuklear/node_editor.c", "target": "nuklear_minios.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/nuklear/node_editor.c", "target": "cvm_emit.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/nuklear/nuklear_minios.c", "target": "nuklear.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/nuklear/nuklear_minios.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/nuklear/nuklear_minios.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/nuklear/nuklear_minios.c", "target": "math.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/nuklear/nuklear_minios.c", "target": "nuklear_minios.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/nuklear/nuklear_minios.h", "target": "stdint.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/nuklear/nuklear_minios.h", "target": "minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/piano/piano.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/piano/piano.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/piano/piano.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/piano/piano.c", "target": "math.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/piano/piano.c", "target": "nuklear.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/piano/piano.c", "target": "nuklear_minios.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/piano/piano.c", "target": "opl3.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/piano/piano.c", "target": "minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/pokemon/minios_stubs/SDL.h", "target": "stdint.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/pokemon/platform_minios.c", "target": "gbrt.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/pokemon/platform_minios.c", "target": "ppu.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/pokemon/platform_minios.c", "target": "platform_sdl.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/pokemon/platform_minios.c", "target": "audio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/pokemon/platform_minios.c", "target": "stdint.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/pokemon/platform_minios.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/pokemon/platform_minios.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/pokemon/platform_minios.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/pokemon/platform_minios.c", "target": "minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/quake2generic/q2generic_minios.c", "target": "quake2.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/quake2generic/q2generic_minios.c", "target": "quakegeneric.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/quake2generic/q2generic_minios.c", "target": "client/keys.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/quake2generic/q2generic_minios.c", "target": "ref_soft/r_local.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/quake2generic/q2generic_minios.c", "target": "stdint.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/quake2generic/q2generic_minios.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/quake2generic/q2generic_minios.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/quake2generic/q2generic_minios.c", "target": "minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/src/audio.c", "target": "minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/src/fptest.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/src/fptest.c", "target": "mthreads.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/src/fptest.c", "target": "minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/src/freedom.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/src/freedom.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/src/freedom.c", "target": "unistd.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/src/freedom.c", "target": "sys/socket.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/src/mthreads.h", "target": "minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/src/opl3.c", "target": "stdint.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/src/opl3.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/src/opl3.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/src/opl3.c", "target": "opl3.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/src/opl3.c", "target": "minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/src/sbtone.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/src/sbtone.c", "target": "math.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/src/sbtone.c", "target": "minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/src/shell.py", "target": "minios"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/src/shell.py", "target": "os"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/src/shell.py", "target": "sys"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/src/test.py", "target": "minios"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/src/test.py", "target": "sys"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/src/thdemo.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/src/thdemo.c", "target": "mthreads.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/src/thdemo.c", "target": "minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/tls_u/tls_u_main.c", "target": "sys/types.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/tls_u/tls_u_main.c", "target": "sys/socket.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/tls_u/tls_u_main.c", "target": "netinet/in.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/tls_u/tls_u_main.c", "target": "arpa/inet.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/tls_u/tls_u_main.c", "target": "netdb.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/tls_u/tls_u_main.c", "target": "unistd.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/tls_u/tls_u_main.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/tls_u/tls_u_main.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/tls_u/tls_u_main.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/tls_u/tls_u_main.c", "target": "stdarg.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/tls_u/tls_u_main.c", "target": "tls_port.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/tls_u/tls_u_main.c", "target": "tls.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/tls_u/tls_u_port.c", "target": "sys/types.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/tls_u/tls_u_port.c", "target": "sys/socket.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/tls_u/tls_u_port.c", "target": "netinet/in.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/tls_u/tls_u_port.c", "target": "arpa/inet.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/tls_u/tls_u_port.c", "target": "netdb.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/tls_u/tls_u_port.c", "target": "sys/time.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/tls_u/tls_u_port.c", "target": "poll.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/tls_u/tls_u_port.c", "target": "unistd.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/tls_u/tls_u_port.c", "target": "fcntl.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/tls_u/tls_u_port.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/tls_u/tls_u_port.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/tls_u/tls_u_port.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/tls_u/tls_u_port.c", "target": "time.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/topogpt3/topogpt3.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/topogpt3/topogpt3.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/topogpt3/topogpt3.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/vedit/vedit.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/vedit/vedit.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/vedit/vedit.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/vedit/vedit.c", "target": "stdint.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/vedit/vedit.c", "target": "nuklear.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "progs/vedit/vedit.c", "target": "nuklear_minios.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "qga.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "qga.c", "target": "qga.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "qga.c", "target": "rtc.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "rcu.h", "target": "stdint.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "rcu.h", "target": "spinlock.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "rcu.h", "target": "sched.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "sched.h", "target": "stdint.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "sched.h", "target": "spinlock.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "sched.h", "target": "vma.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "shell.h", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "smp.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "smp.c", "target": "bootdefs.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "smp.c", "target": "smp.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "smp.c", "target": "sched.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "smp.c", "target": "ap_stub.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "smp.c", "target": "arch/x86/msr.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "smp.h", "target": "spinlock.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "sync.h", "target": "stdint.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "sync.h", "target": "spinlock.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "sync.h", "target": "sched.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "test_http_server.py", "target": "sys"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "test_http_server.py", "target": "time"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "test_http_server.py", "target": "http.server"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "test_http_server.py", "target": "fcntl"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "test_http_server.py", "target": "struct"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_batch.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_batch.c", "target": "batch.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_driver.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_driver.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_driver.c", "target": "assert.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_driver.c", "target": "driver.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_fault.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_fault.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_fault.c", "target": "vma.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_futex.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_futex.c", "target": "futex.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_hal_io.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_hal_io.c", "target": "arch/x86/hal_io.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_ktime.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_ktime.c", "target": "ktime.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_percpu_rq.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_percpu_rq.c", "target": "percpu_rq.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_randmix.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_randmix.c", "target": "randmix.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_rcu.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_rcu.c", "target": "rcu.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_rtc.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_rtc.c", "target": "rtc.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_sanitize.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_sanitize.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_sanitize.c", "target": "sanitize.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_sync.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_sync.c", "target": "sync.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_tick.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_tick.c", "target": "tick.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_vma.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_vma.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_vma.c", "target": "vma.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_vma_bench.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_vma_bench.c", "target": "sys/time.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tests/test_vma_bench.c", "target": "vma.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tls_port.h", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tls_port.h", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tls_port.h", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tls_port.h", "target": "time.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tls_port.h", "target": "unistd.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tls_port.h", "target": "fcntl.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tls_port.h", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tls_port.h", "target": "net.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tls_test.c", "target": "stdio.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tls_test.c", "target": "stdlib.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tls_test.c", "target": "string.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tls_test.c", "target": "unistd.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tls_test.c", "target": "sys/socket.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tls_test.c", "target": "sys/select.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tls_test.c", "target": "netinet/in.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tls_test.c", "target": "arpa/inet.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tls_test.c", "target": "tls_port.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tls_test.c", "target": "tls.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tls_test.c", "target": "tls_test_roots.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tls_test.py", "target": "os"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tls_test.py", "target": "re"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tls_test.py", "target": "shlex"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tls_test.py", "target": "socket"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tls_test.py", "target": "ssl"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tls_test.py", "target": "subprocess"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tls_test.py", "target": "sys"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tls_test.py", "target": "threading"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tls_test.py", "target": "time"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tls_test.py", "target": "datetime"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/check_abi_numbers.py", "target": "re"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/check_abi_numbers.py", "target": "sys"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/check_abi_numbers.py", "target": "os"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/check_cohesion.py", "target": "json"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/check_cohesion.py", "target": "sys"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/check_cohesion.py", "target": "os"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/check_cohesion.py", "target": "argparse"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/check_complexity.py", "target": "re"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/check_complexity.py", "target": "sys"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/check_complexity.py", "target": "os"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/check_complexity.py", "target": "argparse"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/check_kb_sync.py", "target": "os"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/check_kb_sync.py", "target": "sys"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/check_kb_sync.py", "target": "subprocess"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/check_kb_sync.py", "target": "argparse"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/check_surprising.py", "target": "json"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/check_surprising.py", "target": "sys"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/check_surprising.py", "target": "os"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/check_surprising.py", "target": "collections"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/check_surprising.py", "target": "argparse"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/gdb_repro.py", "target": "os"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/gdb_repro.py", "target": "pty"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/gdb_repro.py", "target": "select"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/gdb_repro.py", "target": "socket"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/gdb_repro.py", "target": "subprocess"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/gdb_repro.py", "target": "time"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/gdb_repro.py", "target": "importlib.util"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/gen_desktop_pngs.py", "target": "argparse"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/gen_desktop_pngs.py", "target": "os"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/gen_desktop_pngs.py", "target": "sys"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/gen_desktop_pngs.py", "target": "PIL"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/gen_icons.py", "target": "os"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/gen_icons.py", "target": "struct"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/gen_icons.py", "target": "sys"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/gen_icons.py", "target": "zlib"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/gen_zip_fixtures.py", "target": "os"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/gen_zip_fixtures.py", "target": "sys"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/gen_zip_fixtures.py", "target": "zipfile"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/minifs_saves.py", "target": "os"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/minifs_saves.py", "target": "struct"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/minifs_saves.py", "target": "sys"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/minios_cli.py", "target": "json"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/minios_cli.py", "target": "os"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/minios_cli.py", "target": "select"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/minios_cli.py", "target": "subprocess"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/minios_cli.py", "target": "sys"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/minios_cli.py", "target": "time"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/minios_gui.py", "target": "json"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/minios_gui.py", "target": "os"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/minios_gui.py", "target": "pty"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/minios_gui.py", "target": "select"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/minios_gui.py", "target": "socket"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/minios_gui.py", "target": "subprocess"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/minios_gui.py", "target": "sys"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/minios_gui.py", "target": "time"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/mkpak1.py", "target": "os"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/mkpak1.py", "target": "struct"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/mkpak1.py", "target": "sys"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/qga_client.py", "target": "json"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/qga_client.py", "target": "os"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/qga_client.py", "target": "socket"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/qga_client.py", "target": "sys"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/qga_client.py", "target": "time"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/repro_gui.py", "target": "json"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/repro_gui.py", "target": "os"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/repro_gui.py", "target": "pty"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/repro_gui.py", "target": "select"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/repro_gui.py", "target": "socket"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/repro_gui.py", "target": "subprocess"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/repro_gui.py", "target": "sys"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/repro_gui.py", "target": "time"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/test_gui_wm.py", "target": "json"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/test_gui_wm.py", "target": "os"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/test_gui_wm.py", "target": "socket"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/test_gui_wm.py", "target": "subprocess"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/test_gui_wm.py", "target": "sys"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/test_gui_wm.py", "target": "threading"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/test_gui_wm.py", "target": "time"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/test_gui_wm.py", "target": "PIL"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/test_gui_wm.py", "target": "PIL"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "tools/test_gui_wm.py", "target": "PIL"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "vga_fb.h", "target": "stdint.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "vga_fb.h", "target": "minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "imports", "source": "vma.c", "target": "vma.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "arch/x86/ap_entry.S", "target": "arch/x86/boot/bootdefs.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "arch/x86/boot/stage1.S", "target": "arch/x86/boot/bootdefs.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "arch/x86/boot/stage2.S", "target": "arch/x86/boot/bootdefs.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "drivers/block.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "drivers/block.c", "target": "ide.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "drivers/block.c", "target": "block.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "drivers/block.c", "target": "driver.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "drivers/driver.c", "target": "driver.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "drivers/ide.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "drivers/ide.c", "target": "ide.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "drivers/ide.c", "target": "driver.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "drivers/kbd.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "drivers/kbd.c", "target": "sched.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "drivers/kbd.c", "target": "vga_fb.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "drivers/kbd.c", "target": "drivers/kbd.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "drivers/pcspk.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "drivers/pcspk.c", "target": "pcspk.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "drivers/pcspk.c", "target": "driver.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "drivers/rtc.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "drivers/rtc.c", "target": "rtc.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "drivers/sb16.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "drivers/sb16.c", "target": "sb16.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "drivers/sb16.c", "target": "sync.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "editor.h", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "fs/kfile.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "fs/kfile.c", "target": "minifs.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "fs/minifs.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "fs/minifs.c", "target": "minifs.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "fs/minifs.c", "target": "block.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "fs/minifs.c", "target": "ide.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "fs/minifs.c", "target": "lz4_kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "fs/ramdisk.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "fs/vfs.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "fs/vfs.c", "target": "minifs.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "fs/zip.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "futex.h", "target": "spinlock.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "futex.h", "target": "sched.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "futex.h", "target": "sync.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/batch.c", "target": "batch.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/console.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/console.c", "target": "sched.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/console.c", "target": "vga_fb.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/editor.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/editor.c", "target": "shell.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/editor.c", "target": "editor.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/exec.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/exec.c", "target": "arch/x86/boot/bootdefs.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/exec.c", "target": "arch/x86/msr.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/exec.c", "target": "vga_fb.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/exec.c", "target": "sched.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/exec.c", "target": "drivers/kbd.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/futex.c", "target": "futex.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/futex.c", "target": "sync.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/klog.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/loader.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/loader.c", "target": "vga_fb.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/lz4_kernel.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/lz4_kernel.c", "target": "lz4_kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/mm/paging.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/mm/paging.c", "target": "arch/x86/boot/bootdefs.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/mm/paging.c", "target": "vga_fb.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/mm/paging.c", "target": "arch/x86/msr.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/mm/swap.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/mm/swap.c", "target": "ide.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/mm/swap.c", "target": "lz4_kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/mm.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/mm.c", "target": "sched.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/percpu_rq.c", "target": "percpu_rq.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/printf.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/rcu.c", "target": "rcu.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/redirect.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/sched.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/sched.c", "target": "sched.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/sched.c", "target": "smp.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/sched.c", "target": "sync.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/sched.c", "target": "futex.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/sched.c", "target": "percpu_rq.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/sched.c", "target": "rcu.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/sched.c", "target": "arch/x86/boot/bootdefs.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/sched.c", "target": "vga_fb.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/sched.c", "target": "sb16.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/sched.c", "target": "tick.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/sched.c", "target": "arch/x86/hal_io.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/sched.c", "target": "arch/x86/msr.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/scrollback.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/serial.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/serial.c", "target": "sched.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/shell.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/shell.c", "target": "net.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/shell.c", "target": "minifs.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/shell.c", "target": "sched.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/shell.c", "target": "smp.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/shell.c", "target": "percpu_rq.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/shell.c", "target": "vga_fb.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/shell.c", "target": "pcspk.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/shell.c", "target": "sb16.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/shell.c", "target": "rtc.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/shell.c", "target": "drivers/kbd.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/shell.c", "target": "zip.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/shell.c", "target": "shell.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/shell.c", "target": "editor.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/string.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/symtab.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/sync.c", "target": "sync.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/syscalls.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/syscalls.c", "target": "net.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/syscalls.c", "target": "arch/x86/boot/bootdefs.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/syscalls.c", "target": "minifs.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/syscalls.c", "target": "ide.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/syscalls.c", "target": "block.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/syscalls.c", "target": "sched.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/syscalls.c", "target": "vga_fb.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/syscalls.c", "target": "pcspk.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/syscalls.c", "target": "sb16.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/syscalls.c", "target": "rtc.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/syscalls.c", "target": "lz4_kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/syscalls.c", "target": "drivers/kbd.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/syscalls.c", "target": "arch/x86/msr.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/syscalls.c", "target": "zip.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/syscalls.c", "target": "futex.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/syscalls.c", "target": "batch.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/syscalls.c", "target": "rcu.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/syscalls.c", "target": "percpu_rq.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/syscalls.c", "target": "sanitize.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/syscalls.c", "target": "shell.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/syscalls.c", "target": "ktime.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/syscalls.c", "target": "randmix.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/tick.c", "target": "tick.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/time.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/time.c", "target": "ktime.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/vga_fb.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/vga_fb.c", "target": "vga_fb.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/vga_fb.c", "target": "arch/x86/boot/bootdefs.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/vga_fb.c", "target": "drivers/kbd.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/vga_fb.c", "target": "desktop_shortcuts.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel/vga_fb.c", "target": "desktop_icons.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel.c", "target": "net.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel.c", "target": "arch/x86/boot/bootdefs.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel.c", "target": "minifs.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel.c", "target": "ide.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel.c", "target": "block.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel.c", "target": "sched.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel.c", "target": "vga_fb.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel.c", "target": "sb16.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel.c", "target": "smp.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel.c", "target": "arch/x86/msr.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel.h", "target": "progs/minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel.h", "target": "vma.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "kernel.h", "target": "spinlock.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "mcp/mcp_dbg_driver.py", "target": "kernel/time.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "mcp/mcp_dogfood.py", "target": "kernel/time.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "mcp/minios_addons.py", "target": "kernel/time.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "mcp/minios_mcp.py", "target": "kernel/time.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "mcp/minios_mcp.py", "target": "mcp/minios_addons.py"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "net/net.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "net/net.c", "target": "net.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "net/net.c", "target": "tls.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "net/net.c", "target": "net/rtl8139.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "net/rtl8139.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "net/rtl8139.c", "target": "net.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "net/rtl8139.c", "target": "net/rtl8139.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "net/rtl8139.h", "target": "net.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "net/tls.c", "target": "tls_port.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "net/tls.c", "target": "tls.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "net/tls.c", "target": "tls_roots.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "net/tls_crypto.c", "target": "tls_port.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "net/tls_crypto.c", "target": "tls.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "net/tls_x509.c", "target": "tls_port.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "net/tls_x509.c", "target": "tls.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "percpu_rq.h", "target": "spinlock.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "percpu_rq.h", "target": "sched.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/am_map.c", "target": "progs/doomgeneric/deh_main.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/am_map.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/am_map.c", "target": "progs/doomgeneric/doomkeys.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/am_map.c", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/am_map.c", "target": "progs/doomgeneric/st_stuff.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/am_map.c", "target": "progs/doomgeneric/p_local.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/am_map.c", "target": "progs/doomgeneric/w_wad.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/am_map.c", "target": "progs/doomgeneric/m_cheat.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/am_map.c", "target": "progs/doomgeneric/m_controls.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/am_map.c", "target": "progs/doomgeneric/m_misc.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/am_map.c", "target": "progs/doomgeneric/i_system.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/am_map.c", "target": "progs/doomgeneric/v_video.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/am_map.c", "target": "progs/doomgeneric/doomstat.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/am_map.c", "target": "progs/doomgeneric/r_state.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/am_map.c", "target": "progs/doomgeneric/dstrings.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/am_map.c", "target": "progs/doomgeneric/am_map.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/am_map.h", "target": "progs/doomgeneric/d_event.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/am_map.h", "target": "progs/doomgeneric/m_cheat.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_event.c", "target": "progs/doomgeneric/d_event.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_event.h", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_items.c", "target": "progs/doomgeneric/info.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_items.c", "target": "progs/doomgeneric/d_items.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_items.h", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_iwad.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_iwad.c", "target": "progs/doomgeneric/config.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_iwad.c", "target": "progs/doomgeneric/deh_str.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_iwad.c", "target": "progs/doomgeneric/doomkeys.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_iwad.c", "target": "progs/doomgeneric/d_iwad.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_iwad.c", "target": "progs/doomgeneric/i_system.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_iwad.c", "target": "progs/doomgeneric/m_argv.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_iwad.c", "target": "progs/doomgeneric/m_config.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_iwad.c", "target": "progs/doomgeneric/m_misc.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_iwad.c", "target": "progs/doomgeneric/w_wad.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_iwad.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_iwad.h", "target": "progs/doomgeneric/d_mode.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_loop.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_loop.c", "target": "progs/doomgeneric/doomfeatures.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_loop.c", "target": "progs/doomgeneric/d_event.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_loop.c", "target": "progs/doomgeneric/d_loop.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_loop.c", "target": "progs/doomgeneric/d_ticcmd.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_loop.c", "target": "progs/doomgeneric/i_system.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_loop.c", "target": "progs/doomgeneric/i_timer.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_loop.c", "target": "progs/doomgeneric/i_video.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_loop.c", "target": "progs/doomgeneric/m_argv.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_loop.c", "target": "progs/doomgeneric/m_fixed.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_loop.c", "target": "progs/doomgeneric/net_client.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_loop.c", "target": "progs/doomgeneric/net_gui.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_loop.c", "target": "progs/doomgeneric/net_io.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_loop.c", "target": "progs/doomgeneric/net_query.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_loop.c", "target": "progs/doomgeneric/net_server.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_loop.c", "target": "progs/doomgeneric/net_sdl.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_loop.c", "target": "progs/doomgeneric/net_loop.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_loop.h", "target": "progs/doomgeneric/net_defs.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.c", "target": "progs/doomgeneric/config.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.c", "target": "progs/doomgeneric/deh_main.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.c", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.c", "target": "progs/doomgeneric/doomstat.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.c", "target": "progs/doomgeneric/dstrings.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.c", "target": "progs/doomgeneric/doomfeatures.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.c", "target": "progs/doomgeneric/sounds.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.c", "target": "progs/doomgeneric/d_iwad.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.c", "target": "progs/doomgeneric/w_main.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.c", "target": "progs/doomgeneric/w_wad.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.c", "target": "progs/doomgeneric/s_sound.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.c", "target": "progs/doomgeneric/v_video.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.c", "target": "progs/doomgeneric/f_finale.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.c", "target": "progs/doomgeneric/f_wipe.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.c", "target": "progs/doomgeneric/m_argv.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.c", "target": "progs/doomgeneric/m_config.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.c", "target": "progs/doomgeneric/m_controls.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.c", "target": "progs/doomgeneric/m_misc.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.c", "target": "progs/doomgeneric/m_menu.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.c", "target": "progs/doomgeneric/p_saveg.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.c", "target": "progs/doomgeneric/i_endoom.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.c", "target": "progs/doomgeneric/i_joystick.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.c", "target": "progs/doomgeneric/i_system.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.c", "target": "progs/doomgeneric/i_timer.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.c", "target": "progs/doomgeneric/i_video.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.c", "target": "progs/doomgeneric/g_game.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.c", "target": "progs/doomgeneric/hu_stuff.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.c", "target": "progs/doomgeneric/wi_stuff.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.c", "target": "progs/doomgeneric/st_stuff.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.c", "target": "progs/doomgeneric/am_map.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.c", "target": "progs/doomgeneric/net_client.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.c", "target": "progs/doomgeneric/net_dedicated.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.c", "target": "progs/doomgeneric/net_query.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.c", "target": "progs/doomgeneric/p_setup.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.c", "target": "progs/doomgeneric/r_local.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.c", "target": "progs/doomgeneric/statdump.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.c", "target": "progs/doomgeneric/d_main.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_main.h", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_mode.c", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_mode.c", "target": "progs/doomgeneric/d_mode.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_mode.h", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_net.c", "target": "progs/doomgeneric/doomfeatures.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_net.c", "target": "progs/doomgeneric/d_main.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_net.c", "target": "progs/doomgeneric/m_argv.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_net.c", "target": "progs/doomgeneric/m_menu.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_net.c", "target": "progs/doomgeneric/m_misc.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_net.c", "target": "progs/doomgeneric/i_system.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_net.c", "target": "progs/doomgeneric/i_timer.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_net.c", "target": "progs/doomgeneric/i_video.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_net.c", "target": "progs/doomgeneric/g_game.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_net.c", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_net.c", "target": "progs/doomgeneric/doomstat.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_net.c", "target": "progs/doomgeneric/w_checksum.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_net.c", "target": "progs/doomgeneric/w_wad.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_net.c", "target": "progs/doomgeneric/deh_main.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_net.c", "target": "progs/doomgeneric/d_loop.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_player.h", "target": "progs/doomgeneric/d_items.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_player.h", "target": "progs/doomgeneric/p_pspr.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_player.h", "target": "progs/doomgeneric/p_mobj.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_player.h", "target": "progs/doomgeneric/d_ticcmd.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_player.h", "target": "progs/doomgeneric/net_defs.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_textur.h", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/d_ticcmd.h", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/deh_main.h", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/deh_main.h", "target": "progs/doomgeneric/doomfeatures.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/deh_main.h", "target": "progs/doomgeneric/deh_str.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/deh_main.h", "target": "progs/doomgeneric/sha1.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/deh_misc.h", "target": "progs/doomgeneric/doomfeatures.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/deh_str.h", "target": "progs/doomgeneric/doomfeatures.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/doomdata.h", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/doomdata.h", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/doomdef.c", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/doomdef.h", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/doomdef.h", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/doomdef.h", "target": "progs/doomgeneric/i_timer.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/doomdef.h", "target": "progs/doomgeneric/d_mode.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/doomgeneric.c", "target": "progs/doomgeneric/doomgeneric.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/doomgeneric_minios.c", "target": "progs/doomgeneric/doomgeneric.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/doomgeneric_minios.c", "target": "progs/doomgeneric/doomkeys.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/doomgeneric_minios.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/doomgeneric_minios.c", "target": "progs/minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/doomgeneric_sdl.c", "target": "progs/doomgeneric/doomkeys.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/doomgeneric_sdl.c", "target": "progs/doomgeneric/m_argv.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/doomgeneric_sdl.c", "target": "progs/doomgeneric/doomgeneric.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/doomgeneric_sdl.c", "target": "progs/pokemon/minios_stubs/SDL.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/doomgeneric_soso.c", "target": "progs/doomgeneric/doomkeys.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/doomgeneric_soso.c", "target": "progs/doomgeneric/m_argv.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/doomgeneric_soso.c", "target": "progs/doomgeneric/doomgeneric.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/doomgeneric_soso.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/doomgeneric_sosox.c", "target": "progs/doomgeneric/doomkeys.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/doomgeneric_sosox.c", "target": "progs/doomgeneric/m_argv.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/doomgeneric_sosox.c", "target": "progs/doomgeneric/doomgeneric.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/doomgeneric_sosox.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/doomgeneric_win.c", "target": "progs/doomgeneric/doomkeys.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/doomgeneric_win.c", "target": "progs/doomgeneric/doomgeneric.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/doomgeneric_xlib.c", "target": "progs/doomgeneric/doomkeys.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/doomgeneric_xlib.c", "target": "progs/doomgeneric/doomgeneric.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/doomgeneric_xlib.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/doomgeneric_xlib.c", "target": "kernel/time.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/doomstat.c", "target": "progs/doomgeneric/doomstat.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/doomstat.h", "target": "progs/doomgeneric/doomdata.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/doomstat.h", "target": "progs/doomgeneric/d_loop.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/doomstat.h", "target": "progs/doomgeneric/d_player.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/doomstat.h", "target": "progs/doomgeneric/d_mode.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/doomstat.h", "target": "progs/doomgeneric/net_defs.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/dstrings.c", "target": "progs/doomgeneric/dstrings.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/dstrings.h", "target": "progs/doomgeneric/d_englsh.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/dummy.c", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/f_finale.c", "target": "progs/doomgeneric/deh_main.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/f_finale.c", "target": "progs/doomgeneric/i_system.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/f_finale.c", "target": "progs/doomgeneric/i_swap.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/f_finale.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/f_finale.c", "target": "progs/doomgeneric/v_video.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/f_finale.c", "target": "progs/doomgeneric/w_wad.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/f_finale.c", "target": "progs/doomgeneric/s_sound.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/f_finale.c", "target": "progs/doomgeneric/d_main.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/f_finale.c", "target": "progs/doomgeneric/dstrings.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/f_finale.c", "target": "progs/doomgeneric/sounds.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/f_finale.c", "target": "progs/doomgeneric/doomstat.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/f_finale.c", "target": "progs/doomgeneric/r_state.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/f_finale.c", "target": "progs/doomgeneric/hu_stuff.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/f_finale.h", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/f_finale.h", "target": "progs/doomgeneric/d_event.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/f_wipe.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/f_wipe.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/f_wipe.c", "target": "progs/doomgeneric/i_video.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/f_wipe.c", "target": "progs/doomgeneric/v_video.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/f_wipe.c", "target": "progs/doomgeneric/m_random.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/f_wipe.c", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/f_wipe.c", "target": "progs/doomgeneric/f_wipe.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/g_game.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/g_game.c", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/g_game.c", "target": "progs/doomgeneric/doomkeys.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/g_game.c", "target": "progs/doomgeneric/doomstat.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/g_game.c", "target": "progs/doomgeneric/deh_main.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/g_game.c", "target": "progs/doomgeneric/deh_misc.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/g_game.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/g_game.c", "target": "progs/doomgeneric/f_finale.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/g_game.c", "target": "progs/doomgeneric/m_argv.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/g_game.c", "target": "progs/doomgeneric/m_controls.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/g_game.c", "target": "progs/doomgeneric/m_misc.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/g_game.c", "target": "progs/doomgeneric/m_menu.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/g_game.c", "target": "progs/doomgeneric/m_random.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/g_game.c", "target": "progs/doomgeneric/i_system.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/g_game.c", "target": "progs/doomgeneric/i_timer.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/g_game.c", "target": "progs/doomgeneric/i_video.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/g_game.c", "target": "progs/doomgeneric/p_setup.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/g_game.c", "target": "progs/doomgeneric/p_saveg.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/g_game.c", "target": "progs/doomgeneric/p_tick.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/g_game.c", "target": "progs/doomgeneric/d_main.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/g_game.c", "target": "progs/doomgeneric/wi_stuff.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/g_game.c", "target": "progs/doomgeneric/hu_stuff.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/g_game.c", "target": "progs/doomgeneric/st_stuff.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/g_game.c", "target": "progs/doomgeneric/am_map.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/g_game.c", "target": "progs/doomgeneric/statdump.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/g_game.c", "target": "progs/doomgeneric/v_video.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/g_game.c", "target": "progs/doomgeneric/w_wad.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/g_game.c", "target": "progs/doomgeneric/p_local.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/g_game.c", "target": "progs/doomgeneric/s_sound.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/g_game.c", "target": "progs/doomgeneric/dstrings.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/g_game.c", "target": "progs/doomgeneric/sounds.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/g_game.c", "target": "progs/doomgeneric/r_data.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/g_game.c", "target": "progs/doomgeneric/r_sky.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/g_game.c", "target": "progs/doomgeneric/g_game.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/g_game.h", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/g_game.h", "target": "progs/doomgeneric/d_event.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/g_game.h", "target": "progs/doomgeneric/d_ticcmd.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/gusconf.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/gusconf.c", "target": "progs/doomgeneric/w_wad.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/gusconf.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/gusconf.h", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/hu_lib.c", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/hu_lib.c", "target": "progs/doomgeneric/doomkeys.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/hu_lib.c", "target": "progs/doomgeneric/v_video.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/hu_lib.c", "target": "progs/doomgeneric/i_swap.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/hu_lib.c", "target": "progs/doomgeneric/hu_lib.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/hu_lib.c", "target": "progs/doomgeneric/r_local.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/hu_lib.c", "target": "progs/doomgeneric/r_draw.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/hu_lib.h", "target": "progs/doomgeneric/r_defs.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/hu_stuff.c", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/hu_stuff.c", "target": "progs/doomgeneric/doomkeys.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/hu_stuff.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/hu_stuff.c", "target": "progs/doomgeneric/deh_main.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/hu_stuff.c", "target": "progs/doomgeneric/i_swap.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/hu_stuff.c", "target": "progs/doomgeneric/i_video.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/hu_stuff.c", "target": "progs/doomgeneric/hu_stuff.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/hu_stuff.c", "target": "progs/doomgeneric/hu_lib.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/hu_stuff.c", "target": "progs/doomgeneric/m_controls.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/hu_stuff.c", "target": "progs/doomgeneric/m_misc.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/hu_stuff.c", "target": "progs/doomgeneric/w_wad.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/hu_stuff.c", "target": "progs/doomgeneric/s_sound.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/hu_stuff.c", "target": "progs/doomgeneric/doomstat.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/hu_stuff.c", "target": "progs/doomgeneric/dstrings.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/hu_stuff.c", "target": "progs/doomgeneric/sounds.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/hu_stuff.h", "target": "progs/doomgeneric/d_event.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_cdmus.c", "target": "progs/pokemon/minios_stubs/SDL.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_cdmus.c", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_cdmus.c", "target": "progs/doomgeneric/i_cdmus.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_endoom.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_endoom.c", "target": "progs/doomgeneric/config.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_endoom.c", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_endoom.c", "target": "progs/doomgeneric/i_video.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_input.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_input.c", "target": "progs/doomgeneric/config.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_input.c", "target": "progs/doomgeneric/deh_str.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_input.c", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_input.c", "target": "progs/doomgeneric/doomkeys.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_input.c", "target": "progs/doomgeneric/i_joystick.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_input.c", "target": "progs/doomgeneric/i_system.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_input.c", "target": "progs/doomgeneric/i_swap.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_input.c", "target": "progs/doomgeneric/i_timer.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_input.c", "target": "progs/doomgeneric/i_video.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_input.c", "target": "progs/doomgeneric/i_scale.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_input.c", "target": "progs/doomgeneric/m_argv.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_input.c", "target": "progs/doomgeneric/m_config.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_input.c", "target": "progs/doomgeneric/m_misc.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_input.c", "target": "progs/doomgeneric/tables.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_input.c", "target": "progs/doomgeneric/v_video.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_input.c", "target": "progs/doomgeneric/w_wad.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_input.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_input.c", "target": "progs/doomgeneric/doomgeneric.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_joystick.c", "target": "progs/pokemon/minios_stubs/SDL.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_joystick.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_joystick.c", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_joystick.c", "target": "progs/doomgeneric/d_event.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_joystick.c", "target": "progs/doomgeneric/i_joystick.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_joystick.c", "target": "progs/doomgeneric/i_system.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_joystick.c", "target": "progs/doomgeneric/m_config.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_joystick.c", "target": "progs/doomgeneric/m_misc.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_main.c", "target": "progs/doomgeneric/m_argv.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_minios_sound.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_minios_sound.c", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_minios_sound.c", "target": "progs/doomgeneric/doomfeatures.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_minios_sound.c", "target": "progs/doomgeneric/i_sound.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_minios_sound.c", "target": "progs/doomgeneric/w_wad.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_minios_sound.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_minios_sound.c", "target": "progs/doomgeneric/doomgeneric.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_minios_sound.c", "target": "progs/minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_scale.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_scale.c", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_scale.c", "target": "progs/doomgeneric/i_video.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_scale.c", "target": "progs/doomgeneric/m_argv.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_scale.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_scale.h", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_sound.c", "target": "progs/doomgeneric/config.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_sound.c", "target": "progs/doomgeneric/doomfeatures.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_sound.c", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_sound.c", "target": "progs/doomgeneric/gusconf.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_sound.c", "target": "progs/doomgeneric/i_sound.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_sound.c", "target": "progs/doomgeneric/i_video.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_sound.c", "target": "progs/doomgeneric/m_argv.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_sound.c", "target": "progs/doomgeneric/m_config.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_sound.h", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_system.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_system.c", "target": "progs/pokemon/minios_stubs/SDL.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_system.c", "target": "progs/doomgeneric/config.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_system.c", "target": "progs/doomgeneric/deh_str.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_system.c", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_system.c", "target": "progs/doomgeneric/m_argv.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_system.c", "target": "progs/doomgeneric/m_config.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_system.c", "target": "progs/doomgeneric/m_misc.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_system.c", "target": "progs/doomgeneric/i_joystick.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_system.c", "target": "progs/doomgeneric/i_sound.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_system.c", "target": "progs/doomgeneric/i_timer.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_system.c", "target": "progs/doomgeneric/i_video.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_system.c", "target": "progs/doomgeneric/i_system.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_system.c", "target": "progs/doomgeneric/w_wad.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_system.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_system.h", "target": "progs/doomgeneric/d_ticcmd.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_system.h", "target": "progs/doomgeneric/d_event.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_timer.c", "target": "progs/doomgeneric/i_timer.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_timer.c", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_timer.c", "target": "progs/doomgeneric/doomgeneric.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_video.c", "target": "progs/doomgeneric/config.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_video.c", "target": "progs/doomgeneric/v_video.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_video.c", "target": "progs/doomgeneric/m_argv.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_video.c", "target": "progs/doomgeneric/d_event.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_video.c", "target": "progs/doomgeneric/d_main.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_video.c", "target": "progs/doomgeneric/i_video.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_video.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_video.c", "target": "progs/doomgeneric/tables.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_video.c", "target": "progs/doomgeneric/doomkeys.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_video.c", "target": "progs/doomgeneric/doomgeneric.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/i_video.h", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/info.c", "target": "progs/doomgeneric/sounds.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/info.c", "target": "progs/doomgeneric/m_fixed.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/info.c", "target": "progs/doomgeneric/info.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/info.c", "target": "progs/doomgeneric/p_mobj.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/info.h", "target": "progs/doomgeneric/d_think.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_argv.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_argv.c", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_argv.c", "target": "progs/doomgeneric/i_system.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_argv.c", "target": "progs/doomgeneric/m_misc.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_argv.c", "target": "progs/doomgeneric/m_argv.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_argv.h", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_bbox.c", "target": "progs/doomgeneric/m_bbox.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_bbox.h", "target": "progs/doomgeneric/m_fixed.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_cheat.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_cheat.c", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_cheat.c", "target": "progs/doomgeneric/m_cheat.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_config.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_config.c", "target": "progs/doomgeneric/config.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_config.c", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_config.c", "target": "progs/doomgeneric/doomkeys.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_config.c", "target": "progs/doomgeneric/doomfeatures.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_config.c", "target": "progs/doomgeneric/i_system.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_config.c", "target": "progs/doomgeneric/m_argv.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_config.c", "target": "progs/doomgeneric/m_misc.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_config.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_config.h", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_controls.c", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_controls.c", "target": "progs/doomgeneric/doomkeys.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_controls.c", "target": "progs/doomgeneric/m_config.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_controls.c", "target": "progs/doomgeneric/m_misc.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_fixed.c", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_fixed.c", "target": "progs/doomgeneric/i_system.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_fixed.c", "target": "progs/doomgeneric/m_fixed.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_menu.c", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_menu.c", "target": "progs/doomgeneric/doomkeys.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_menu.c", "target": "progs/doomgeneric/dstrings.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_menu.c", "target": "progs/doomgeneric/d_main.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_menu.c", "target": "progs/doomgeneric/deh_main.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_menu.c", "target": "progs/doomgeneric/i_swap.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_menu.c", "target": "progs/doomgeneric/i_system.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_menu.c", "target": "progs/doomgeneric/i_timer.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_menu.c", "target": "progs/doomgeneric/i_video.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_menu.c", "target": "progs/doomgeneric/m_misc.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_menu.c", "target": "progs/doomgeneric/v_video.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_menu.c", "target": "progs/doomgeneric/w_wad.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_menu.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_menu.c", "target": "progs/doomgeneric/r_local.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_menu.c", "target": "progs/doomgeneric/hu_stuff.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_menu.c", "target": "progs/doomgeneric/g_game.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_menu.c", "target": "progs/doomgeneric/m_argv.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_menu.c", "target": "progs/doomgeneric/m_controls.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_menu.c", "target": "progs/doomgeneric/p_saveg.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_menu.c", "target": "progs/doomgeneric/s_sound.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_menu.c", "target": "progs/doomgeneric/doomstat.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_menu.c", "target": "progs/doomgeneric/sounds.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_menu.c", "target": "progs/doomgeneric/m_menu.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_menu.h", "target": "progs/doomgeneric/d_event.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_misc.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_misc.c", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_misc.c", "target": "progs/doomgeneric/deh_str.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_misc.c", "target": "progs/doomgeneric/i_swap.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_misc.c", "target": "progs/doomgeneric/i_system.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_misc.c", "target": "progs/doomgeneric/i_video.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_misc.c", "target": "progs/doomgeneric/m_misc.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_misc.c", "target": "progs/doomgeneric/v_video.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_misc.c", "target": "progs/doomgeneric/w_wad.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_misc.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_misc.h", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/m_random.h", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/memio.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/memio.c", "target": "progs/doomgeneric/memio.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/memio.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/net_client.h", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/net_client.h", "target": "progs/doomgeneric/d_ticcmd.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/net_client.h", "target": "progs/doomgeneric/sha1.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/net_client.h", "target": "progs/doomgeneric/net_defs.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/net_defs.h", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/net_defs.h", "target": "progs/doomgeneric/d_ticcmd.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/net_defs.h", "target": "progs/doomgeneric/sha1.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/net_gui.h", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/net_io.h", "target": "progs/doomgeneric/net_defs.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/net_loop.h", "target": "progs/doomgeneric/net_defs.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/net_packet.h", "target": "progs/doomgeneric/net_defs.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/net_query.h", "target": "progs/doomgeneric/net_defs.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/net_sdl.h", "target": "progs/doomgeneric/net_defs.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_ceilng.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_ceilng.c", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_ceilng.c", "target": "progs/doomgeneric/p_local.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_ceilng.c", "target": "progs/doomgeneric/s_sound.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_ceilng.c", "target": "progs/doomgeneric/doomstat.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_ceilng.c", "target": "progs/doomgeneric/r_state.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_ceilng.c", "target": "progs/doomgeneric/sounds.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_doors.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_doors.c", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_doors.c", "target": "progs/doomgeneric/deh_main.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_doors.c", "target": "progs/doomgeneric/p_local.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_doors.c", "target": "progs/doomgeneric/s_sound.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_doors.c", "target": "progs/doomgeneric/doomstat.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_doors.c", "target": "progs/doomgeneric/r_state.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_doors.c", "target": "progs/doomgeneric/dstrings.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_doors.c", "target": "progs/doomgeneric/sounds.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_enemy.c", "target": "progs/doomgeneric/m_random.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_enemy.c", "target": "progs/doomgeneric/i_system.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_enemy.c", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_enemy.c", "target": "progs/doomgeneric/p_local.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_enemy.c", "target": "progs/doomgeneric/s_sound.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_enemy.c", "target": "progs/doomgeneric/g_game.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_enemy.c", "target": "progs/doomgeneric/doomstat.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_enemy.c", "target": "progs/doomgeneric/r_state.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_enemy.c", "target": "progs/doomgeneric/sounds.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_floor.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_floor.c", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_floor.c", "target": "progs/doomgeneric/p_local.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_floor.c", "target": "progs/doomgeneric/s_sound.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_floor.c", "target": "progs/doomgeneric/doomstat.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_floor.c", "target": "progs/doomgeneric/r_state.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_floor.c", "target": "progs/doomgeneric/sounds.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_inter.c", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_inter.c", "target": "progs/doomgeneric/dstrings.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_inter.c", "target": "progs/doomgeneric/sounds.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_inter.c", "target": "progs/doomgeneric/deh_main.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_inter.c", "target": "progs/doomgeneric/deh_misc.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_inter.c", "target": "progs/doomgeneric/doomstat.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_inter.c", "target": "progs/doomgeneric/m_random.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_inter.c", "target": "progs/doomgeneric/i_system.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_inter.c", "target": "progs/doomgeneric/am_map.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_inter.c", "target": "progs/doomgeneric/p_local.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_inter.c", "target": "progs/doomgeneric/s_sound.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_inter.c", "target": "progs/doomgeneric/p_inter.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_lights.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_lights.c", "target": "progs/doomgeneric/m_random.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_lights.c", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_lights.c", "target": "progs/doomgeneric/p_local.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_lights.c", "target": "progs/doomgeneric/r_state.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_local.h", "target": "progs/doomgeneric/r_local.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_local.h", "target": "progs/doomgeneric/p_spec.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_map.c", "target": "progs/doomgeneric/deh_misc.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_map.c", "target": "progs/doomgeneric/m_bbox.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_map.c", "target": "progs/doomgeneric/m_random.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_map.c", "target": "progs/doomgeneric/i_system.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_map.c", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_map.c", "target": "progs/doomgeneric/m_argv.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_map.c", "target": "progs/doomgeneric/m_misc.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_map.c", "target": "progs/doomgeneric/p_local.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_map.c", "target": "progs/doomgeneric/s_sound.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_map.c", "target": "progs/doomgeneric/doomstat.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_map.c", "target": "progs/doomgeneric/r_state.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_map.c", "target": "progs/doomgeneric/sounds.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_maputl.c", "target": "progs/doomgeneric/m_bbox.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_maputl.c", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_maputl.c", "target": "progs/doomgeneric/doomstat.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_maputl.c", "target": "progs/doomgeneric/p_local.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_maputl.c", "target": "progs/doomgeneric/r_state.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_mobj.c", "target": "progs/doomgeneric/i_system.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_mobj.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_mobj.c", "target": "progs/doomgeneric/m_random.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_mobj.c", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_mobj.c", "target": "progs/doomgeneric/p_local.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_mobj.c", "target": "progs/doomgeneric/sounds.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_mobj.c", "target": "progs/doomgeneric/st_stuff.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_mobj.c", "target": "progs/doomgeneric/hu_stuff.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_mobj.c", "target": "progs/doomgeneric/s_sound.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_mobj.c", "target": "progs/doomgeneric/doomstat.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_mobj.h", "target": "progs/doomgeneric/tables.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_mobj.h", "target": "progs/doomgeneric/m_fixed.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_mobj.h", "target": "progs/doomgeneric/d_think.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_mobj.h", "target": "progs/doomgeneric/doomdata.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_mobj.h", "target": "progs/doomgeneric/info.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_plats.c", "target": "progs/doomgeneric/i_system.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_plats.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_plats.c", "target": "progs/doomgeneric/m_random.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_plats.c", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_plats.c", "target": "progs/doomgeneric/p_local.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_plats.c", "target": "progs/doomgeneric/s_sound.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_plats.c", "target": "progs/doomgeneric/doomstat.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_plats.c", "target": "progs/doomgeneric/r_state.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_plats.c", "target": "progs/doomgeneric/sounds.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_pspr.c", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_pspr.c", "target": "progs/doomgeneric/d_event.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_pspr.c", "target": "progs/doomgeneric/deh_misc.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_pspr.c", "target": "progs/doomgeneric/m_random.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_pspr.c", "target": "progs/doomgeneric/p_local.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_pspr.c", "target": "progs/doomgeneric/s_sound.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_pspr.c", "target": "progs/doomgeneric/doomstat.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_pspr.c", "target": "progs/doomgeneric/sounds.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_pspr.c", "target": "progs/doomgeneric/p_pspr.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_pspr.h", "target": "progs/doomgeneric/m_fixed.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_pspr.h", "target": "progs/doomgeneric/tables.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_pspr.h", "target": "progs/doomgeneric/info.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_saveg.c", "target": "progs/doomgeneric/dstrings.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_saveg.c", "target": "progs/doomgeneric/deh_main.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_saveg.c", "target": "progs/doomgeneric/i_system.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_saveg.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_saveg.c", "target": "progs/doomgeneric/p_local.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_saveg.c", "target": "progs/doomgeneric/p_saveg.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_saveg.c", "target": "progs/doomgeneric/doomstat.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_saveg.c", "target": "progs/doomgeneric/g_game.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_saveg.c", "target": "progs/doomgeneric/m_misc.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_saveg.c", "target": "progs/doomgeneric/r_state.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_setup.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_setup.c", "target": "progs/doomgeneric/deh_main.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_setup.c", "target": "progs/doomgeneric/i_swap.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_setup.c", "target": "progs/doomgeneric/m_argv.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_setup.c", "target": "progs/doomgeneric/m_bbox.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_setup.c", "target": "progs/doomgeneric/g_game.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_setup.c", "target": "progs/doomgeneric/i_system.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_setup.c", "target": "progs/doomgeneric/w_wad.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_setup.c", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_setup.c", "target": "progs/doomgeneric/p_local.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_setup.c", "target": "progs/doomgeneric/s_sound.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_setup.c", "target": "progs/doomgeneric/doomstat.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_sight.c", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_sight.c", "target": "progs/doomgeneric/i_system.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_sight.c", "target": "progs/doomgeneric/p_local.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_sight.c", "target": "progs/doomgeneric/r_state.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_spec.c", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_spec.c", "target": "progs/doomgeneric/doomstat.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_spec.c", "target": "progs/doomgeneric/deh_main.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_spec.c", "target": "progs/doomgeneric/i_system.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_spec.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_spec.c", "target": "progs/doomgeneric/m_argv.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_spec.c", "target": "progs/doomgeneric/m_misc.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_spec.c", "target": "progs/doomgeneric/m_random.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_spec.c", "target": "progs/doomgeneric/w_wad.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_spec.c", "target": "progs/doomgeneric/r_local.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_spec.c", "target": "progs/doomgeneric/p_local.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_spec.c", "target": "progs/doomgeneric/g_game.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_spec.c", "target": "progs/doomgeneric/s_sound.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_spec.c", "target": "progs/doomgeneric/r_state.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_spec.c", "target": "progs/doomgeneric/sounds.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_switch.c", "target": "progs/doomgeneric/i_system.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_switch.c", "target": "progs/doomgeneric/deh_main.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_switch.c", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_switch.c", "target": "progs/doomgeneric/p_local.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_switch.c", "target": "progs/doomgeneric/g_game.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_switch.c", "target": "progs/doomgeneric/s_sound.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_switch.c", "target": "progs/doomgeneric/sounds.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_switch.c", "target": "progs/doomgeneric/doomstat.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_switch.c", "target": "progs/doomgeneric/r_state.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_telept.c", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_telept.c", "target": "progs/doomgeneric/doomstat.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_telept.c", "target": "progs/doomgeneric/s_sound.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_telept.c", "target": "progs/doomgeneric/p_local.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_telept.c", "target": "progs/doomgeneric/sounds.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_telept.c", "target": "progs/doomgeneric/r_state.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_tick.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_tick.c", "target": "progs/doomgeneric/p_local.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_tick.c", "target": "progs/doomgeneric/doomstat.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_user.c", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_user.c", "target": "progs/doomgeneric/d_event.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_user.c", "target": "progs/doomgeneric/p_local.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/p_user.c", "target": "progs/doomgeneric/doomstat.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_bsp.c", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_bsp.c", "target": "progs/doomgeneric/m_bbox.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_bsp.c", "target": "progs/doomgeneric/i_system.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_bsp.c", "target": "progs/doomgeneric/r_main.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_bsp.c", "target": "progs/doomgeneric/r_plane.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_bsp.c", "target": "progs/doomgeneric/r_things.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_bsp.c", "target": "progs/doomgeneric/doomstat.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_bsp.c", "target": "progs/doomgeneric/r_state.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_data.c", "target": "progs/doomgeneric/deh_main.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_data.c", "target": "progs/doomgeneric/i_swap.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_data.c", "target": "progs/doomgeneric/i_system.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_data.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_data.c", "target": "progs/doomgeneric/w_wad.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_data.c", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_data.c", "target": "progs/doomgeneric/m_misc.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_data.c", "target": "progs/doomgeneric/r_local.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_data.c", "target": "progs/doomgeneric/p_local.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_data.c", "target": "progs/doomgeneric/doomstat.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_data.c", "target": "progs/doomgeneric/r_sky.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_data.c", "target": "progs/doomgeneric/r_data.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_data.h", "target": "progs/doomgeneric/r_defs.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_data.h", "target": "progs/doomgeneric/r_state.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_defs.h", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_defs.h", "target": "progs/doomgeneric/m_fixed.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_defs.h", "target": "progs/doomgeneric/d_think.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_defs.h", "target": "progs/doomgeneric/p_mobj.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_defs.h", "target": "progs/doomgeneric/i_video.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_defs.h", "target": "progs/doomgeneric/v_patch.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_draw.c", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_draw.c", "target": "progs/doomgeneric/deh_main.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_draw.c", "target": "progs/doomgeneric/i_system.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_draw.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_draw.c", "target": "progs/doomgeneric/w_wad.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_draw.c", "target": "progs/doomgeneric/r_local.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_draw.c", "target": "progs/doomgeneric/v_video.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_draw.c", "target": "progs/doomgeneric/doomstat.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_local.h", "target": "progs/doomgeneric/tables.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_local.h", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_local.h", "target": "progs/doomgeneric/r_data.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_local.h", "target": "progs/doomgeneric/r_main.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_local.h", "target": "progs/doomgeneric/r_bsp.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_local.h", "target": "progs/doomgeneric/r_segs.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_local.h", "target": "progs/doomgeneric/r_plane.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_local.h", "target": "progs/doomgeneric/r_things.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_local.h", "target": "progs/doomgeneric/r_draw.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_main.c", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_main.c", "target": "progs/doomgeneric/d_loop.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_main.c", "target": "progs/doomgeneric/m_bbox.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_main.c", "target": "progs/doomgeneric/m_menu.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_main.c", "target": "progs/doomgeneric/r_local.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_main.c", "target": "progs/doomgeneric/r_sky.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_main.h", "target": "progs/doomgeneric/d_player.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_main.h", "target": "progs/doomgeneric/r_data.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_plane.c", "target": "progs/doomgeneric/i_system.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_plane.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_plane.c", "target": "progs/doomgeneric/w_wad.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_plane.c", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_plane.c", "target": "progs/doomgeneric/doomstat.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_plane.c", "target": "progs/doomgeneric/r_local.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_plane.c", "target": "progs/doomgeneric/r_sky.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_plane.h", "target": "progs/doomgeneric/r_data.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_segs.c", "target": "progs/doomgeneric/i_system.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_segs.c", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_segs.c", "target": "progs/doomgeneric/doomstat.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_segs.c", "target": "progs/doomgeneric/r_local.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_segs.c", "target": "progs/doomgeneric/r_sky.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_sky.c", "target": "progs/doomgeneric/m_fixed.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_sky.c", "target": "progs/doomgeneric/r_data.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_sky.c", "target": "progs/doomgeneric/r_sky.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_state.h", "target": "progs/doomgeneric/d_player.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_state.h", "target": "progs/doomgeneric/r_data.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_things.c", "target": "progs/doomgeneric/deh_main.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_things.c", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_things.c", "target": "progs/doomgeneric/i_swap.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_things.c", "target": "progs/doomgeneric/i_system.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_things.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_things.c", "target": "progs/doomgeneric/w_wad.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_things.c", "target": "progs/doomgeneric/r_local.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/r_things.c", "target": "progs/doomgeneric/doomstat.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/s_sound.c", "target": "progs/doomgeneric/i_sound.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/s_sound.c", "target": "progs/doomgeneric/i_system.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/s_sound.c", "target": "progs/doomgeneric/doomfeatures.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/s_sound.c", "target": "progs/doomgeneric/deh_str.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/s_sound.c", "target": "progs/doomgeneric/doomstat.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/s_sound.c", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/s_sound.c", "target": "progs/doomgeneric/sounds.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/s_sound.c", "target": "progs/doomgeneric/s_sound.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/s_sound.c", "target": "progs/doomgeneric/m_misc.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/s_sound.c", "target": "progs/doomgeneric/m_random.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/s_sound.c", "target": "progs/doomgeneric/m_argv.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/s_sound.c", "target": "progs/doomgeneric/p_local.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/s_sound.c", "target": "progs/doomgeneric/w_wad.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/s_sound.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/s_sound.h", "target": "progs/doomgeneric/p_mobj.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/s_sound.h", "target": "progs/doomgeneric/sounds.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/sha1.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/sha1.c", "target": "progs/doomgeneric/i_swap.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/sha1.c", "target": "progs/doomgeneric/sha1.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/sha1.h", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/sounds.c", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/sounds.c", "target": "progs/doomgeneric/sounds.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/sounds.h", "target": "progs/doomgeneric/i_sound.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/st_lib.c", "target": "progs/doomgeneric/deh_main.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/st_lib.c", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/st_lib.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/st_lib.c", "target": "progs/doomgeneric/v_video.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/st_lib.c", "target": "progs/doomgeneric/i_swap.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/st_lib.c", "target": "progs/doomgeneric/i_system.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/st_lib.c", "target": "progs/doomgeneric/w_wad.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/st_lib.c", "target": "progs/doomgeneric/st_stuff.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/st_lib.c", "target": "progs/doomgeneric/st_lib.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/st_lib.c", "target": "progs/doomgeneric/r_local.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/st_lib.h", "target": "progs/doomgeneric/r_defs.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/st_stuff.c", "target": "progs/doomgeneric/i_system.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/st_stuff.c", "target": "progs/doomgeneric/i_video.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/st_stuff.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/st_stuff.c", "target": "progs/doomgeneric/m_misc.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/st_stuff.c", "target": "progs/doomgeneric/m_random.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/st_stuff.c", "target": "progs/doomgeneric/w_wad.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/st_stuff.c", "target": "progs/doomgeneric/deh_main.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/st_stuff.c", "target": "progs/doomgeneric/deh_misc.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/st_stuff.c", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/st_stuff.c", "target": "progs/doomgeneric/doomkeys.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/st_stuff.c", "target": "progs/doomgeneric/g_game.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/st_stuff.c", "target": "progs/doomgeneric/st_stuff.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/st_stuff.c", "target": "progs/doomgeneric/st_lib.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/st_stuff.c", "target": "progs/doomgeneric/r_local.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/st_stuff.c", "target": "progs/doomgeneric/p_local.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/st_stuff.c", "target": "progs/doomgeneric/p_inter.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/st_stuff.c", "target": "progs/doomgeneric/am_map.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/st_stuff.c", "target": "progs/doomgeneric/m_cheat.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/st_stuff.c", "target": "progs/doomgeneric/s_sound.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/st_stuff.c", "target": "progs/doomgeneric/v_video.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/st_stuff.c", "target": "progs/doomgeneric/doomstat.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/st_stuff.c", "target": "progs/doomgeneric/dstrings.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/st_stuff.c", "target": "progs/doomgeneric/sounds.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/st_stuff.h", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/st_stuff.h", "target": "progs/doomgeneric/d_event.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/st_stuff.h", "target": "progs/doomgeneric/m_cheat.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/statdump.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/statdump.c", "target": "progs/doomgeneric/d_player.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/statdump.c", "target": "progs/doomgeneric/d_mode.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/statdump.c", "target": "progs/doomgeneric/m_argv.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/statdump.c", "target": "progs/doomgeneric/statdump.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/tables.c", "target": "progs/doomgeneric/tables.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/tables.h", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/tables.h", "target": "progs/doomgeneric/m_fixed.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/v_video.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/v_video.c", "target": "progs/doomgeneric/i_system.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/v_video.c", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/v_video.c", "target": "progs/doomgeneric/deh_str.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/v_video.c", "target": "progs/doomgeneric/i_swap.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/v_video.c", "target": "progs/doomgeneric/i_video.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/v_video.c", "target": "progs/doomgeneric/m_bbox.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/v_video.c", "target": "progs/doomgeneric/m_misc.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/v_video.c", "target": "progs/doomgeneric/v_video.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/v_video.c", "target": "progs/doomgeneric/w_wad.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/v_video.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/v_video.c", "target": "progs/doomgeneric/config.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/v_video.h", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/v_video.h", "target": "progs/doomgeneric/v_patch.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/w_checksum.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/w_checksum.c", "target": "progs/doomgeneric/m_misc.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/w_checksum.c", "target": "progs/doomgeneric/sha1.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/w_checksum.c", "target": "progs/doomgeneric/w_checksum.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/w_checksum.c", "target": "progs/doomgeneric/w_wad.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/w_checksum.h", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/w_file.c", "target": "progs/doomgeneric/config.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/w_file.c", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/w_file.c", "target": "progs/doomgeneric/m_argv.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/w_file.c", "target": "progs/doomgeneric/w_file.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/w_file.h", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/w_file_stdc.c", "target": "progs/doomgeneric/m_misc.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/w_file_stdc.c", "target": "progs/doomgeneric/w_file.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/w_file_stdc.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/w_main.c", "target": "progs/doomgeneric/doomfeatures.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/w_main.c", "target": "progs/doomgeneric/d_iwad.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/w_main.c", "target": "progs/doomgeneric/m_argv.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/w_main.c", "target": "progs/doomgeneric/w_main.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/w_main.c", "target": "progs/doomgeneric/w_merge.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/w_main.c", "target": "progs/doomgeneric/w_wad.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/w_main.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/w_wad.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/w_wad.c", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/w_wad.c", "target": "progs/doomgeneric/config.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/w_wad.c", "target": "progs/doomgeneric/d_iwad.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/w_wad.c", "target": "progs/doomgeneric/i_swap.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/w_wad.c", "target": "progs/doomgeneric/i_system.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/w_wad.c", "target": "progs/doomgeneric/i_video.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/w_wad.c", "target": "progs/doomgeneric/m_misc.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/w_wad.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/w_wad.c", "target": "progs/doomgeneric/w_wad.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/w_wad.h", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/w_wad.h", "target": "progs/doomgeneric/d_mode.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/w_wad.h", "target": "progs/doomgeneric/w_file.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/wi_stuff.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/wi_stuff.c", "target": "progs/doomgeneric/m_misc.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/wi_stuff.c", "target": "progs/doomgeneric/m_random.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/wi_stuff.c", "target": "progs/doomgeneric/deh_main.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/wi_stuff.c", "target": "progs/doomgeneric/i_swap.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/wi_stuff.c", "target": "progs/doomgeneric/i_system.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/wi_stuff.c", "target": "progs/doomgeneric/w_wad.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/wi_stuff.c", "target": "progs/doomgeneric/g_game.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/wi_stuff.c", "target": "progs/doomgeneric/r_local.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/wi_stuff.c", "target": "progs/doomgeneric/s_sound.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/wi_stuff.c", "target": "progs/doomgeneric/doomstat.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/wi_stuff.c", "target": "progs/doomgeneric/sounds.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/wi_stuff.c", "target": "progs/doomgeneric/v_video.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/wi_stuff.c", "target": "progs/doomgeneric/wi_stuff.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/wi_stuff.h", "target": "progs/doomgeneric/doomdef.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/z_zone.c", "target": "progs/doomgeneric/z_zone.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/z_zone.c", "target": "progs/doomgeneric/i_system.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/doomgeneric/z_zone.c", "target": "progs/doomgeneric/doomtype.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/lua/lua_main.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/lua/minios.c", "target": "progs/minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/micropython/variants/minios/lib/hello.py", "target": "progs/lua/minios.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/micropython/variants/minios/minios_module.c", "target": "progs/minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/nuklear/cvm_emit.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/nuklear/cvm_emit.c", "target": "progs/nuklear/cvm_emit.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/nuklear/node_editor.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/nuklear/node_editor.c", "target": "progs/minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/nuklear/node_editor.c", "target": "progs/nuklear/nuklear_minios.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/nuklear/node_editor.c", "target": "progs/nuklear/cvm_emit.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/nuklear/nuklear_minios.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/nuklear/nuklear_minios.c", "target": "progs/nuklear/nuklear_minios.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/nuklear/nuklear_minios.h", "target": "progs/minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/piano/piano.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/piano/piano.c", "target": "progs/nuklear/nuklear_minios.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/piano/piano.c", "target": "progs/src/opl3.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/piano/piano.c", "target": "progs/minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/pokemon/platform_minios.c", "target": "audio.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/pokemon/platform_minios.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/pokemon/platform_minios.c", "target": "progs/minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/quake2generic/q2generic_minios.c", "target": "progs/doomgeneric/r_local.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/quake2generic/q2generic_minios.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/quake2generic/q2generic_minios.c", "target": "progs/minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/src/audio.c", "target": "progs/minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/src/fptest.c", "target": "progs/src/mthreads.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/src/fptest.c", "target": "progs/minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/src/freedom.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/src/mthreads.h", "target": "progs/minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/src/opl3.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/src/opl3.c", "target": "progs/minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/src/sbtone.c", "target": "progs/minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/src/shell.py", "target": "progs/lua/minios.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/src/test.py", "target": "progs/lua/minios.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/src/thdemo.c", "target": "progs/src/mthreads.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/src/thdemo.c", "target": "progs/minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/tls_u/tls_u_main.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/tls_u/tls_u_main.c", "target": "tls_port.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/tls_u/tls_u_main.c", "target": "tls.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/tls_u/tls_u_port.c", "target": "kernel/time.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/tls_u/tls_u_port.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/tls_u/tls_u_port.c", "target": "kernel/time.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/topogpt3/topogpt3.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/vedit/vedit.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "progs/vedit/vedit.c", "target": "progs/nuklear/nuklear_minios.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "qga.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "qga.c", "target": "qga.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "qga.c", "target": "rtc.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "rcu.h", "target": "spinlock.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "rcu.h", "target": "sched.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "sched.h", "target": "spinlock.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "sched.h", "target": "vma.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "shell.h", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "smp.c", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "smp.c", "target": "arch/x86/boot/bootdefs.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "smp.c", "target": "smp.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "smp.c", "target": "sched.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "smp.c", "target": "ap_stub.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "smp.c", "target": "arch/x86/msr.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "smp.h", "target": "spinlock.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "sync.h", "target": "spinlock.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "sync.h", "target": "sched.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "test_http_server.py", "target": "kernel/time.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tests/test_batch.c", "target": "batch.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tests/test_driver.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tests/test_driver.c", "target": "driver.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tests/test_fault.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tests/test_fault.c", "target": "vma.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tests/test_futex.c", "target": "futex.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tests/test_hal_io.c", "target": "arch/x86/hal_io.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tests/test_ktime.c", "target": "ktime.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tests/test_percpu_rq.c", "target": "percpu_rq.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tests/test_randmix.c", "target": "randmix.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tests/test_rcu.c", "target": "rcu.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tests/test_rtc.c", "target": "rtc.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tests/test_sanitize.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tests/test_sanitize.c", "target": "sanitize.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tests/test_sync.c", "target": "sync.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tests/test_tick.c", "target": "tick.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tests/test_vma.c", "target": "vma.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tests/test_vma_bench.c", "target": "kernel/time.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tests/test_vma_bench.c", "target": "vma.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tls_port.h", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tls_port.h", "target": "kernel/time.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tls_port.h", "target": "kernel.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tls_port.h", "target": "net.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tls_test.c", "target": "kernel/string.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tls_test.c", "target": "tls_port.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tls_test.c", "target": "tls.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tls_test.c", "target": "tls_test_roots.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tls_test.py", "target": "kernel/time.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tools/gdb_repro.py", "target": "kernel/time.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tools/minios_cli.py", "target": "kernel/time.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tools/minios_gui.py", "target": "kernel/time.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tools/qga_client.py", "target": "kernel/time.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tools/repro_gui.py", "target": "kernel/time.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "tools/test_gui_wm.py", "target": "kernel/time.c"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "vga_fb.h", "target": "progs/minios_abi.h"}, {"confidence": "EXTRACTED", "relation": "resolved_imports", "source": "vma.c", "target": "vma.h"}], "generator": "readmenator", "metadata": {"edge_count": 5422, "file_count": 401, "language_count": 7, "symbol_count": 9439}, "nodes": [{"doc": "generated from ap_stub.bin - do not edit", "id": "ap_stub.h", "kind": "module", "label": "ap_stub.h", "language": "h", "sha256": "c14ec42262bd89b7", "symbol_count": 0, "symbols": []}, {"doc": "_*_ coding: utf8 _*_", "id": "app.py", "kind": "module", "label": "app.py", "language": "py", "sha256": "57b21bdb023585b8", "symbol_count": 0, "symbols": []}, {"doc": "ap_entry.S - SMP application-processor bootstrap stub.", "id": "arch/x86/ap_entry.S", "kind": "module", "label": "ap_entry.S", "language": "S", "sha256": "f901a6e3e7262b5e", "symbol_count": 9, "symbols": [{"kind": "function", "line": 21, "name": "ap_stub_start"}, {"kind": "function", "line": 39, "name": "ap_pm"}, {"kind": "function", "line": 62, "name": "ap_lm"}, {"kind": "function", "line": 80, "name": "ap_patch_slot"}, {"kind": "function", "line": 84, "name": "ap_gdt32"}, {"doc": "movw %ax, %ss /* Load smp_ap_entry()'s address from the BSP-patched slot and go. mov ap_patch_slot(%rip), %rax jmp *%rax .globl ap_patch_slot ap_patch_slot: .quad 0 .p2align 2 ap_gdt32: .quad 0x0000000000000000 .quad 0x00CF9A000000FFFF /* code32 base 0 limit 4G .quad 0x00CF92000000FFFF /* data32 base 0 limit 4G", "kind": "function", "line": 88, "name": "ap_gdt32_ptr"}, {"kind": "function", "line": 91, "name": "ap_gdt32_end"}, {"kind": "function", "line": 93, "name": "ap_gdt64_ptr"}, {"kind": "function", "line": 98, "name": "ap_stub_end"}]}, {"doc": "bootdefs.h - centralized configuration for the MiniOS two-stage boot path.", "id": "arch/x86/boot/bootdefs.h", "kind": "module", "label": "bootdefs.h", "language": "h", "sha256": "b967de45c56e033f", "symbol_count": 139, "symbols": [{"kind": "function", "line": 179, "name": "address", "signature": "* address (below 1 MB so a real-mode SIPI can reach it) and executed by every * AP. It reuses the page tables and 64-bit GDT stage 2 built for the BSP. */ #define AP_STUB_ADDR 0x6000 #define GDT64_COD"}, {"kind": "macro", "line": 46, "name": "BOOTDEFS_H", "signature": "#define BOOTDEFS_H"}, {"kind": "macro", "line": 47, "name": "SECTOR_BYTES", "signature": "#define SECTOR_BYTES"}, {"kind": "macro", "line": 49, "name": "SECTOR_PARAGRAPH_SHIFT", "signature": "#define SECTOR_PARAGRAPH_SHIFT"}, {"kind": "macro", "line": 50, "name": "SECTOR_DWORD_SHIFT", "signature": "#define SECTOR_DWORD_SHIFT"}, {"kind": "macro", "line": 51, "name": "BOOT_SIGNATURE", "signature": "#define BOOT_SIGNATURE"}, {"kind": "macro", "line": 53, "name": "BOOT_SIGNATURE_BYTES", "signature": "#define BOOT_SIGNATURE_BYTES"}, {"kind": "macro", "line": 54, "name": "BOOT_SEG_NULL", "signature": "#define BOOT_SEG_NULL"}, {"kind": "macro", "line": 56, "name": "BOOT_STACK_TOP", "signature": "#define BOOT_STACK_TOP"}, {"kind": "macro", "line": 57, "name": "BOOT_DAP_ADDR", "signature": "#define BOOT_DAP_ADDR"}, {"kind": "macro", "line": 59, "name": "BOOT_DAP_SIZE", "signature": "#define BOOT_DAP_SIZE"}, {"kind": "macro", "line": 60, "name": "BOOT_DAP_OFF_COUNT", "signature": "#define BOOT_DAP_OFF_COUNT"}, {"kind": "macro", "line": 61, "name": "BOOT_DAP_OFF_OFFSET", "signature": "#define BOOT_DAP_OFF_OFFSET"}, {"kind": "macro", "line": 62, "name": "BOOT_DAP_OFF_SEGMENT", "signature": "#define BOOT_DAP_OFF_SEGMENT"}, {"kind": "macro", "line": 63, "name": "BOOT_DAP_OFF_LBA_LO", "signature": "#define BOOT_DAP_OFF_LBA_LO"}, {"kind": "macro", "line": 64, "name": "BOOT_DAP_OFF_LBA_HI", "signature": "#define BOOT_DAP_OFF_LBA_HI"}, {"kind": "macro", "line": 65, "name": "BOOT_DRIVE_ADDR", "signature": "#define BOOT_DRIVE_ADDR"}, {"kind": "macro", "line": 66, "name": "BOOT_KASLR_ADDR", "signature": "#define BOOT_KASLR_ADDR"}, {"kind": "macro", "line": 67, "name": "BOOT_STAGE2_LBA", "signature": "#define BOOT_STAGE2_LBA"}, {"kind": "macro", "line": 69, "name": "BOOT_STAGE2_SECTORS", "signature": "#define BOOT_STAGE2_SECTORS"}, {"kind": "macro", "line": 70, "name": "BOOT_STAGE2_ADDR", "signature": "#define BOOT_STAGE2_ADDR"}, {"kind": "macro", "line": 71, "name": "BOOT_STAGE2_SEG", "signature": "#define BOOT_STAGE2_SEG"}, {"kind": "macro", "line": 72, "name": "BOOT_KERNEL_LBA", "signature": "#define BOOT_KERNEL_LBA"}, {"kind": "macro", "line": 74, "name": "BOOT_KERNEL_BUF_ADDR", "signature": "#define BOOT_KERNEL_BUF_ADDR"}, {"kind": "macro", "line": 75, "name": "BOOT_KERNEL_BUF_SEG", "signature": "#define BOOT_KERNEL_BUF_SEG"}, {"kind": "macro", "line": 76, "name": "BOOT_KERNEL_PHYS_ADDR", "signature": "#define BOOT_KERNEL_PHYS_ADDR"}, {"kind": "macro", "line": 77, "name": "BOOT_CHUNK_SECTORS", "signature": "#define BOOT_CHUNK_SECTORS"}, {"kind": "macro", "line": 79, "name": "BOOT_BIOS_MAX_SECTORS", "signature": "#define BOOT_BIOS_MAX_SECTORS"}, {"kind": "macro", "line": 80, "name": "BOOT_PM_STACK_TOP", "signature": "#define BOOT_PM_STACK_TOP"}, {"kind": "macro", "line": 82, "name": "BIOS_DISK_INT", "signature": "#define BIOS_DISK_INT"}, {"kind": "macro", "line": 84, "name": "BIOS_DISK_EXT_CHECK", "signature": "#define BIOS_DISK_EXT_CHECK"}, {"kind": "macro", "line": 85, "name": "BIOS_DISK_EXT_REQ_MAGIC", "signature": "#define BIOS_DISK_EXT_REQ_MAGIC"}, {"kind": "macro", "line": 86, "name": "BIOS_DISK_EXT_ACK_MAGIC", "signature": "#define BIOS_DISK_EXT_ACK_MAGIC"}, {"kind": "macro", "line": 87, "name": "BIOS_DISK_EXT_PACKET_BIT", "signature": "#define BIOS_DISK_EXT_PACKET_BIT"}, {"kind": "macro", "line": 88, "name": "BIOS_DISK_READ_EXT", "signature": "#define BIOS_DISK_READ_EXT"}, {"kind": "macro", "line": 89, "name": "BIOS_VIDEO_INT", "signature": "#define BIOS_VIDEO_INT"}, {"kind": "macro", "line": 91, "name": "BIOS_VIDEO_TTY_WRITE", "signature": "#define BIOS_VIDEO_TTY_WRITE"}, {"kind": "macro", "line": 92, "name": "BIOS_VIDEO_TTY_ATTR", "signature": "#define BIOS_VIDEO_TTY_ATTR"}, {"kind": "macro", "line": 93, "name": "BIOS_VIDEO_SET_MODE", "signature": "#define BIOS_VIDEO_SET_MODE"}, {"kind": "macro", "line": 106, "name": "BIOS_VBE_GET_MODE_INFO", "signature": "#define BIOS_VBE_GET_MODE_INFO"}, {"kind": "macro", "line": 107, "name": "BIOS_VBE_SET_MODE", "signature": "#define BIOS_VBE_SET_MODE"}, {"kind": "macro", "line": 108, "name": "VBE_MODE_1024x768x32", "signature": "#define VBE_MODE_1024x768x32"}, {"kind": "macro", "line": 109, "name": "VBE_MODE_800x600x32", "signature": "#define VBE_MODE_800x600x32"}, {"kind": "macro", "line": 110, "name": "VBE_MODE_640x480x32", "signature": "#define VBE_MODE_640x480x32"}, {"kind": "macro", "line": 111, "name": "VBE_MODE_1024x768x8", "signature": "#define VBE_MODE_1024x768x8"}, {"kind": "macro", "line": 112, "name": "VBE_MODE_800x600x8", "signature": "#define VBE_MODE_800x600x8"}, {"kind": "macro", "line": 113, "name": "VBE_MODE_640x480x8", "signature": "#define VBE_MODE_640x480x8"}, {"kind": "macro", "line": 114, "name": "VBE_MODE_LFB", "signature": "#define VBE_MODE_LFB"}, {"kind": "macro", "line": 115, "name": "VBE_MODE_INFO_ADDR", "signature": "#define VBE_MODE_INFO_ADDR"}, {"kind": "macro", "line": 116, "name": "VBE_MODE_ATTR_OFF", "signature": "#define VBE_MODE_ATTR_OFF"}, {"kind": "macro", "line": 117, "name": "VBE_ATTR_SUPPORTED", "signature": "#define VBE_ATTR_SUPPORTED"}, {"kind": "macro", "line": 118, "name": "VBE_ATTR_LFB", "signature": "#define VBE_ATTR_LFB"}, {"kind": "macro", "line": 119, "name": "VBE_INFO_XRES_OFF", "signature": "#define VBE_INFO_XRES_OFF"}, {"kind": "macro", "line": 120, "name": "VBE_INFO_YRES_OFF", "signature": "#define VBE_INFO_YRES_OFF"}, {"kind": "macro", "line": 121, "name": "VBE_INFO_BYTES_SCAN_OFF", "signature": "#define VBE_INFO_BYTES_SCAN_OFF"}, {"kind": "macro", "line": 122, "name": "VBE_INFO_PHYSBASE_OFF", "signature": "#define VBE_INFO_PHYSBASE_OFF"}, {"kind": "macro", "line": 123, "name": "VBE_INFO_BPP_SRC_OFF", "signature": "#define VBE_INFO_BPP_SRC_OFF"}, {"kind": "macro", "line": 124, "name": "VBE_BPP_8", "signature": "#define VBE_BPP_8"}, {"kind": "macro", "line": 125, "name": "VBE_BPP_24", "signature": "#define VBE_BPP_24"}, {"kind": "macro", "line": 126, "name": "VBE_BPP_32", "signature": "#define VBE_BPP_32"}, {"kind": "macro", "line": 138, "name": "VBE_INFO_ADDR", "signature": "#define VBE_INFO_ADDR"}, {"kind": "macro", "line": 139, "name": "VBE_INFO_FBBASE_OFF", "signature": "#define VBE_INFO_FBBASE_OFF"}, {"kind": "macro", "line": 140, "name": "VBE_INFO_PITCH_OFF", "signature": "#define VBE_INFO_PITCH_OFF"}, {"kind": "macro", "line": 141, "name": "VBE_INFO_WIDTH_OFF", "signature": "#define VBE_INFO_WIDTH_OFF"}, {"kind": "macro", "line": 142, "name": "VBE_INFO_HEIGHT_OFF", "signature": "#define VBE_INFO_HEIGHT_OFF"}, {"kind": "macro", "line": 143, "name": "VBE_INFO_VALID_OFF", "signature": "#define VBE_INFO_VALID_OFF"}, {"kind": "macro", "line": 144, "name": "VBE_INFO_BPP_OFF", "signature": "#define VBE_INFO_BPP_OFF"}, {"kind": "macro", "line": 145, "name": "A20_CONTROL_PORT", "signature": "#define A20_CONTROL_PORT"}, {"kind": "macro", "line": 147, "name": "A20_ENABLE_BIT", "signature": "#define A20_ENABLE_BIT"}, {"kind": "macro", "line": 148, "name": "A20_RESET_CLEAR_MASK", "signature": "#define A20_RESET_CLEAR_MASK"}, {"kind": "macro", "line": 149, "name": "CR0_PE", "signature": "#define CR0_PE"}, {"kind": "macro", "line": 151, "name": "CR0_PE_CLEAR_MASK", "signature": "#define CR0_PE_CLEAR_MASK"}, {"kind": "macro", "line": 152, "name": "CR0_PG", "signature": "#define CR0_PG"}, {"kind": "macro", "line": 153, "name": "CR4_PAE", "signature": "#define CR4_PAE"}, {"kind": "macro", "line": 154, "name": "MSR_EFER", "signature": "#define MSR_EFER"}, {"kind": "macro", "line": 156, "name": "EFER_LME", "signature": "#define EFER_LME"}, {"kind": "macro", "line": 157, "name": "EFER_NXE", "signature": "#define EFER_NXE"}, {"kind": "macro", "line": 158, "name": "GDT32_CODE32_SEL", "signature": "#define GDT32_CODE32_SEL"}, {"kind": "macro", "line": 160, "name": "GDT32_DATA32_SEL", "signature": "#define GDT32_DATA32_SEL"}, {"kind": "macro", "line": 161, "name": "GDT32_CODE16_SEL", "signature": "#define GDT32_CODE16_SEL"}, {"kind": "macro", "line": 162, "name": "GDT32_DATA16_SEL", "signature": "#define GDT32_DATA16_SEL"}, {"kind": "macro", "line": 163, "name": "GDT32_DESC_NULL", "signature": "#define GDT32_DESC_NULL"}, {"kind": "macro", "line": 165, "name": "GDT32_DESC_CODE32", "signature": "#define GDT32_DESC_CODE32"}, {"kind": "macro", "line": 166, "name": "GDT32_DESC_DATA32", "signature": "#define GDT32_DESC_DATA32"}, {"kind": "macro", "line": 167, "name": "GDT32_DESC_CODE16", "signature": "#define GDT32_DESC_CODE16"}, {"kind": "macro", "line": 168, "name": "GDT32_DESC_DATA16", "signature": "#define GDT32_DESC_DATA16"}, {"kind": "macro", "line": 169, "name": "GDT64_ADDR", "signature": "#define GDT64_ADDR"}, {"kind": "macro", "line": 171, "name": "GDT64_BYTES", "signature": "#define GDT64_BYTES"}, {"kind": "macro", "line": 176, "name": "GDT64_SMP_BYTES", "signature": "#define GDT64_SMP_BYTES"}, {"kind": "macro", "line": 181, "name": "AP_STUB_ADDR", "signature": "#define AP_STUB_ADDR"}, {"kind": "macro", "line": 182, "name": "GDT64_CODE_SEL", "signature": "#define GDT64_CODE_SEL"}, {"kind": "macro", "line": 183, "name": "GDT64_DATA_SEL", "signature": "#define GDT64_DATA_SEL"}, {"kind": "macro", "line": 184, "name": "GDT64_USER_DATA_SEL", "signature": "#define GDT64_USER_DATA_SEL"}, {"kind": "macro", "line": 185, "name": "GDT64_USER_CODE_SEL", "signature": "#define GDT64_USER_CODE_SEL"}, {"kind": "macro", "line": 186, "name": "GDT64_DESC_NULL", "signature": "#define GDT64_DESC_NULL"}, {"kind": "macro", "line": 187, "name": "GDT64_DESC_CODE", "signature": "#define GDT64_DESC_CODE"}, {"kind": "macro", "line": 188, "name": "GDT64_DESC_DATA", "signature": "#define GDT64_DESC_DATA"}, {"kind": "macro", "line": 189, "name": "GDT64_DESC_UDATA", "signature": "#define GDT64_DESC_UDATA"}, {"kind": "macro", "line": 190, "name": "GDT64_DESC_UCODE", "signature": "#define GDT64_DESC_UCODE"}, {"kind": "macro", "line": 191, "name": "PT_PML4_ADDR", "signature": "#define PT_PML4_ADDR"}, {"kind": "macro", "line": 193, "name": "PT_PDPT_ADDR", "signature": "#define PT_PDPT_ADDR"}, {"kind": "macro", "line": 194, "name": "PT_PD_ADDR", "signature": "#define PT_PD_ADDR"}, {"kind": "macro", "line": 195, "name": "PT_USER0_ADDR", "signature": "#define PT_USER0_ADDR"}, {"kind": "macro", "line": 196, "name": "PT_USER1_ADDR", "signature": "#define PT_USER1_ADDR"}, {"kind": "macro", "line": 197, "name": "PT_ZERO_DWORDS", "signature": "#define PT_ZERO_DWORDS"}, {"kind": "macro", "line": 198, "name": "PT_FLAGS_PRESENT_RW", "signature": "#define PT_FLAGS_PRESENT_RW"}, {"kind": "macro", "line": 199, "name": "PT_FLAGS_PRESENT_RW_PS", "signature": "#define PT_FLAGS_PRESENT_RW_PS"}, {"kind": "macro", "line": 200, "name": "PT_FLAGS_PS", "signature": "#define PT_FLAGS_PS"}, {"kind": "macro", "line": 201, "name": "PT_FLAGS_USER", "signature": "#define PT_FLAGS_USER"}, {"kind": "macro", "line": 202, "name": "PT_FLAGS_PCD", "signature": "#define PT_FLAGS_PCD"}, {"kind": "macro", "line": 203, "name": "PT_FLAGS_NX", "signature": "#define PT_FLAGS_NX"}, {"kind": "macro", "line": 204, "name": "PT_ADDR_MASK", "signature": "#define PT_ADDR_MASK"}, {"kind": "macro", "line": 205, "name": "PT_USER_ENTRY", "signature": "#define PT_USER_ENTRY"}, {"kind": "macro", "line": 206, "name": "PT_USER_NX_ENTRY", "signature": "#define PT_USER_NX_ENTRY"}, {"kind": "macro", "line": 207, "name": "PT_ENTRY_PRESENT", "signature": "#define PT_ENTRY_PRESENT"}, {"kind": "macro", "line": 208, "name": "PT_ENTRY_USER", "signature": "#define PT_ENTRY_USER"}, {"kind": "macro", "line": 214, "name": "SB16_DMA_PT_ENTRY", "signature": "#define SB16_DMA_PT_ENTRY"}, {"kind": "macro", "line": 215, "name": "SB16_DMA_PT_PAGES", "signature": "#define SB16_DMA_PT_PAGES"}, {"kind": "macro", "line": 216, "name": "PT_PD_ENTRIES", "signature": "#define PT_PD_ENTRIES"}, {"kind": "macro", "line": 217, "name": "PT_PD_ENTRY_BYTES", "signature": "#define PT_PD_ENTRY_BYTES"}, {"kind": "macro", "line": 218, "name": "PT_PD_PAGE_BYTES", "signature": "#define PT_PD_PAGE_BYTES"}, {"kind": "macro", "line": 219, "name": "PT_PD_INDEX_SHIFT", "signature": "#define PT_PD_INDEX_SHIFT"}, {"kind": "macro", "line": 220, "name": "PT_FILL_START_INDEX", "signature": "#define PT_FILL_START_INDEX"}, {"kind": "macro", "line": 221, "name": "PT_FILL_START_ADDR", "signature": "#define PT_FILL_START_ADDR"}, {"kind": "macro", "line": 222, "name": "PT_FILL_ENTRIES", "signature": "#define PT_FILL_ENTRIES"}, {"kind": "macro", "line": 242, "name": "PT_USER_TABLES_ADDR", "signature": "#define PT_USER_TABLES_ADDR"}, {"kind": "macro", "line": 243, "name": "PT_USER_TABLES_BYTES", "signature": "#define PT_USER_TABLES_BYTES"}, {"kind": "macro", "line": 255, "name": "KASLR_MIN_ADDR", "signature": "#define KASLR_MIN_ADDR"}, {"kind": "macro", "line": 256, "name": "KASLR_ALIGN_SHIFT", "signature": "#define KASLR_ALIGN_SHIFT"}, {"kind": "macro", "line": 257, "name": "KASLR_MAX_UNITS", "signature": "#define KASLR_MAX_UNITS"}, {"kind": "macro", "line": 258, "name": "KASLR_IMG_OFF_1MB", "signature": "#define KASLR_IMG_OFF_1MB"}, {"kind": "macro", "line": 259, "name": "KASLR_IMG_OFF_2MB", "signature": "#define KASLR_IMG_OFF_2MB"}, {"kind": "macro", "line": 260, "name": "KASLR_IMAGE_SPAN", "signature": "#define KASLR_IMAGE_SPAN"}, {"kind": "macro", "line": 261, "name": "CMOS_INDEX_PORT", "signature": "#define CMOS_INDEX_PORT"}, {"kind": "macro", "line": 263, "name": "CMOS_DATA_PORT", "signature": "#define CMOS_DATA_PORT"}, {"kind": "macro", "line": 264, "name": "CMOS_NMI_DISABLE", "signature": "#define CMOS_NMI_DISABLE"}, {"kind": "macro", "line": 265, "name": "CMOS_REG_SECONDS", "signature": "#define CMOS_REG_SECONDS"}, {"kind": "macro", "line": 266, "name": "CMOS_REG_MINUTES", "signature": "#define CMOS_REG_MINUTES"}, {"kind": "macro", "line": 267, "name": "CMOS_REG_HOURS", "signature": "#define CMOS_REG_HOURS"}]}, {"doc": "stage1.S - MiniOS boot sector.", "id": "arch/x86/boot/stage1.S", "kind": "module", "label": "stage1.S", "language": "S", "sha256": "24326caac4c8b35e", "symbol_count": 11, "symbols": [{"kind": "function", "line": 28, "name": "main"}, {"kind": "function", "line": 32, "name": "normalize"}, {"kind": "function", "line": 78, "name": "no_extensions"}, {"kind": "function", "line": 82, "name": "read_failed"}, {"kind": "function", "line": 85, "name": "fail"}, {"kind": "function", "line": 88, "name": "halt"}, {"kind": "function", "line": 93, "name": "puts"}, {"kind": "function", "line": 97, "name": "puts_next"}, {"kind": "function", "line": 103, "name": "puts_done"}, {"kind": "function", "line": 107, "name": "msg_no_lba"}, {"kind": "function", "line": 109, "name": "msg_read"}]}, {"doc": "stage2.S - MiniOS second-stage loader.", "id": "arch/x86/boot/stage2.S", "kind": "module", "label": "stage2.S", "language": "S", "sha256": "5704c24ee5e48aea", "symbol_count": 40, "symbols": [{"kind": "function", "line": 39, "name": "stage2_main"}, {"kind": "function", "line": 54, "name": "a20_ready"}, {"kind": "function", "line": 69, "name": "load_chunk"}, {"kind": "function", "line": 74, "name": "chunk_size_ready"}, {"kind": "function", "line": 81, "name": "read_piece"}, {"kind": "function", "line": 86, "name": "piece_size_ready"}, {"kind": "function", "line": 118, "name": "chunk_copy"}, {"kind": "function", "line": 131, "name": "chunk_leave_pm"}, {"kind": "function", "line": 141, "name": "chunk_resume"}, {"kind": "function", "line": 162, "name": "enter_long_mode"}, {"kind": "function", "line": 190, "name": "fill_pt0_low"}, {"kind": "function", "line": 208, "name": "dma_uncache"}, {"kind": "function", "line": 216, "name": "fill_pt0_kernel"}, {"kind": "function", "line": 235, "name": "fill_pt1_kernel"}, {"kind": "function", "line": 244, "name": "fill_pt1_bss"}, {"doc": "endif", "kind": "function", "line": 260, "name": "fill_page_directory"}, {"kind": "function", "line": 289, "name": "read_failed"}, {"kind": "function", "line": 293, "name": "halt"}, {"kind": "function", "line": 298, "name": "puts"}, {"kind": "function", "line": 302, "name": "puts_next"}, {"kind": "function", "line": 308, "name": "puts_done"}, {"kind": "function", "line": 312, "name": "msg_read"}, {"doc": "Probe VESA BIOS Extensions for a high-resolution linear framebuffer and record it for the kernel in the fixed VBE_INFO_ADDR struct. Tries the true-color modes that fit the emulated ~2 MB scan-out window (800x600x32, then 640x480x32), then the 8-bit-palette modes 1024x768x8, 800x600x8 and 640x480x8, then falls back to VGA Mode 13h. Runs in real mode (the kernel image is already fully loaded, so this scratch is safe) and must complete before the transition to long mode kills the BIOS video services. A true-color mode frees the desktop from the 256-entry VGA DAC palette; the 8-bit modes keep that path unchanged. A true-color mode whose framebuffer exceeds the ~2 MB QEMU scans out would render its bottom rows black, so * none taller than 800x600 is offered.", "kind": "function", "line": 326, "name": "vbe_probe"}, {"doc": "Try one VBE mode held in %bx. On success the mode is set with the linear framebuffer bit and carry is cleared; on any failure carry is set so the caller can try the next candidate. Only 8/24/32-bit modes are accepted: a 15/16-bit mode would need an RGB565 packer the kernel does not carry, * so it is skipped like an unsupported mode.", "kind": "function", "line": 368, "name": "vbe_try_mode"}, {"kind": "function", "line": 399, "name": "vbe_try_bpp_ok"}, {"kind": "function", "line": 424, "name": "vbe_set_fail"}, {"kind": "function", "line": 427, "name": "vbe_try_fail"}, {"kind": "function", "line": 433, "name": "vbe_ok"}, {"doc": "Pick the kernel's physical load base: a 2 MB-aligned address in the 64-position window above the kernel heap, seeded from the TSC and the RTC so consecutive boots land at different locations. Returns the base in eax. The virtual base stays at the link-time 0x100000, which PT0/PT1 map * to the returned physical base.", "kind": "function", "line": 442, "name": "kaslr_pick"}, {"kind": "function", "line": 479, "name": "gdt32_start"}, {"kind": "function", "line": 485, "name": "gdt32_end"}, {"kind": "function", "line": 486, "name": "gdt32_ptr"}, {"kind": "function", "line": 491, "name": "gdt64_image"}, {"kind": "function", "line": 497, "name": "gdt64_ptr"}, {"kind": "function", "line": 501, "name": "saved_gdtr"}, {"kind": "function", "line": 504, "name": "sectors_left"}, {"kind": "function", "line": 506, "name": "chunk_sectors"}, {"kind": "function", "line": 508, "name": "next_lba"}, {"kind": "function", "line": 510, "name": "dest_addr"}, {"kind": "function", "line": 512, "name": "kaslr_dest"}]}, {"id": "arch/x86/ctx_sw.S", "kind": "module", "label": "ctx_sw.S", "language": "S", "sha256": "ef91a0da48c90501", "symbol_count": 5, "symbols": [{"kind": "function", "line": 44, "name": "switch_save_only"}, {"kind": "function", "line": 53, "name": "switch_to"}, {"kind": "function", "line": 90, "name": "switch_to_notrap"}, {"kind": "function", "line": 159, "name": "user_trampoline"}, {"kind": "function", "line": 172, "name": "resume_iretq"}]}, {"doc": "Docstring: x86 port I/O hardware abstraction contract.", "id": "arch/x86/hal_io.h", "kind": "module", "label": "hal_io.h", "language": "h", "sha256": "d92347ba91cfef9b", "symbol_count": 37, "symbols": [{"doc": "#ifdef HAL_IO_HOST_TEST /** Docstring: Stub log for host tests, counts port writes. extern unsigned hal_io_stub_writes; /** Docstring: Stub log for host tests, last port written. extern unsigned hal_io_stub_last_port; /** Docstring: Stub log for host tests, last value written. extern unsigned hal_io_stub_last_val; /** Docstring: Stub log for host tests, counts LAPIC EOI calls. extern unsigned hal_io_stub_lapic_eois; /** Docstring: Canned byte returned by stub port reads. extern unsigned char hal_io_stub_read_val; /** Docstring: Stub port byte write, records port and value.", "kind": "function", "line": 70, "name": "hal_outb", "signature": "static inline void hal_outb(unsigned short port, unsigned char val)"}, {"doc": "extern unsigned hal_io_stub_last_val; /** Docstring: Stub log for host tests, counts LAPIC EOI calls. extern unsigned hal_io_stub_lapic_eois; /** Docstring: Canned byte returned by stub port reads. extern unsigned char hal_io_stub_read_val; /** Docstring: Stub port byte write, records port and value. static inline void hal_outb(unsigned short port, unsigned char val) { hal_io_stub_writes++; hal_io_stub_last_port = port; hal_io_stub_last_val = val; } /** Docstring: Stub port byte read, returns the canned value.", "kind": "function", "line": 77, "name": "hal_inb", "signature": "static inline unsigned char hal_inb(unsigned short port)"}, {"doc": "/** Docstring: Stub port byte write, records port and value. static inline void hal_outb(unsigned short port, unsigned char val) { hal_io_stub_writes++; hal_io_stub_last_port = port; hal_io_stub_last_val = val; } /** Docstring: Stub port byte read, returns the canned value. static inline unsigned char hal_inb(unsigned short port) { (void)port; return hal_io_stub_read_val; } /** Docstring: Stub port word write, records port and low byte.", "kind": "function", "line": 83, "name": "hal_outw", "signature": "static inline void hal_outw(unsigned short port, unsigned short val)"}, {"doc": "/** Docstring: Stub port byte read, returns the canned value. static inline unsigned char hal_inb(unsigned short port) { (void)port; return hal_io_stub_read_val; } /** Docstring: Stub port word write, records port and low byte. static inline void hal_outw(unsigned short port, unsigned short val) { hal_io_stub_writes++; hal_io_stub_last_port = port; hal_io_stub_last_val = (unsigned)(val & 0xFFU); } /** Docstring: Stub port word read, returns the canned value.", "kind": "function", "line": 90, "name": "hal_inw", "signature": "static inline unsigned short hal_inw(unsigned short port)"}, {"doc": "/** Docstring: Stub port word write, records port and low byte. static inline void hal_outw(unsigned short port, unsigned short val) { hal_io_stub_writes++; hal_io_stub_last_port = port; hal_io_stub_last_val = (unsigned)(val & 0xFFU); } /** Docstring: Stub port word read, returns the canned value. static inline unsigned short hal_inw(unsigned short port) { (void)port; return (unsigned short)hal_io_stub_read_val; } /** Docstring: Stub LAPIC EOI, counts calls.", "kind": "function", "line": 96, "name": "hal_lapic_eoi", "signature": "static inline void hal_lapic_eoi(void)"}, {"doc": "} /** Docstring: Stub port word read, returns the canned value. static inline unsigned short hal_inw(unsigned short port) { (void)port; return (unsigned short)hal_io_stub_read_val; } /** Docstring: Stub LAPIC EOI, counts calls. static inline void hal_lapic_eoi(void) { hal_io_stub_lapic_eois++; } /** Docstring: Stub PIC EOI for an IRQ line.", "kind": "function", "line": 101, "name": "hal_pic_eoi", "signature": "static inline void hal_pic_eoi(int irq)"}, {"doc": "hal_io_stub_lapic_eois++; } /** Docstring: Stub PIC EOI for an IRQ line. static inline void hal_pic_eoi(int irq) { if (irq >= 8) { hal_outb(HAL_PIC2_CMD, HAL_PIC_EOI); } hal_outb(HAL_PIC1_CMD, HAL_PIC_EOI); } #else /** Docstring: Emit a port byte write.", "kind": "function", "line": 111, "name": "hal_outb", "signature": "static inline void hal_outb(unsigned short port, unsigned char val)"}, {"doc": "if (irq >= 8) { hal_outb(HAL_PIC2_CMD, HAL_PIC_EOI); } hal_outb(HAL_PIC1_CMD, HAL_PIC_EOI); } #else /** Docstring: Emit a port byte write. static inline void hal_outb(unsigned short port, unsigned char val) { __asm__ volatile(\"outb %0, %1\" : : \"a\"(val), \"Nd\"(port)); } /** Docstring: Emit a port byte read.", "kind": "function", "line": 116, "name": "hal_inb", "signature": "static inline unsigned char hal_inb(unsigned short port)"}, {"doc": "/** Docstring: Emit a port byte write. static inline void hal_outb(unsigned short port, unsigned char val) { __asm__ volatile(\"outb %0, %1\" : : \"a\"(val), \"Nd\"(port)); } /** Docstring: Emit a port byte read. static inline unsigned char hal_inb(unsigned short port) { unsigned char r; __asm__ volatile(\"inb %1, %0\" : \"=a\"(r) : \"Nd\"(port)); return r; } /** Docstring: Emit a port word write.", "kind": "function", "line": 123, "name": "hal_outw", "signature": "static inline void hal_outw(unsigned short port, unsigned short val)"}, {"doc": "/** Docstring: Emit a port byte read. static inline unsigned char hal_inb(unsigned short port) { unsigned char r; __asm__ volatile(\"inb %1, %0\" : \"=a\"(r) : \"Nd\"(port)); return r; } /** Docstring: Emit a port word write. static inline void hal_outw(unsigned short port, unsigned short val) { __asm__ volatile(\"outw %0, %1\" : : \"a\"(val), \"Nd\"(port)); } /** Docstring: Emit a port word read.", "kind": "function", "line": 128, "name": "hal_inw", "signature": "static inline unsigned short hal_inw(unsigned short port)"}, {"doc": "/** Docstring: Emit a port word write. static inline void hal_outw(unsigned short port, unsigned short val) { __asm__ volatile(\"outw %0, %1\" : : \"a\"(val), \"Nd\"(port)); } /** Docstring: Emit a port word read. static inline unsigned short hal_inw(unsigned short port) { unsigned short r; __asm__ volatile(\"inw %1, %0\" : \"=a\"(r) : \"Nd\"(port)); return r; } /** Docstring: Acknowledge the local APIC after an IPI-driven tick.", "kind": "function", "line": 135, "name": "hal_lapic_eoi", "signature": "static inline void hal_lapic_eoi(void)"}, {"doc": "/** Docstring: Emit a port word read. static inline unsigned short hal_inw(unsigned short port) { unsigned short r; __asm__ volatile(\"inw %1, %0\" : \"=a\"(r) : \"Nd\"(port)); return r; } /** Docstring: Acknowledge the local APIC after an IPI-driven tick. static inline void hal_lapic_eoi(void) { (volatile unsigned *)HAL_LAPIC_EOI_ADDR = 0; } /** Docstring: Send end-of-interrupt for an IRQ line.", "kind": "function", "line": 140, "name": "hal_pic_eoi", "signature": "static inline void hal_pic_eoi(int irq)"}, {"kind": "function", "line": 112, "name": "volatile", "signature": "__asm__ volatile(\"outb %0, %1\" : : \"a\"(val), \"Nd\"(port));"}, {"doc": "#define HAL_MOUSE_OVF_BITS 0xC0 /** Docstring: Mouse packet button mask. #define HAL_MOUSE_BUTTON_MASK 0x07 /** Docstring: Mouse packet byte count for Intellimouse mode. #define HAL_MOUSE_PACKET_LEN 4 /** Docstring: Mouse motion scale factor. #define HAL_MOUSE_SCALE 2 /** Docstring: Local APIC end-of-interrupt MMIO address. #define HAL_LAPIC_EOI_ADDR 0xFEE000B0UL #ifdef HAL_IO_HOST_TEST /** Docstring: Stub log for host tests, counts port writes.", "kind": "variable", "line": 59, "name": "hal_io_stub_writes", "signature": "extern unsigned hal_io_stub_writes;"}, {"doc": "#define HAL_MOUSE_BUTTON_MASK 0x07 /** Docstring: Mouse packet byte count for Intellimouse mode. #define HAL_MOUSE_PACKET_LEN 4 /** Docstring: Mouse motion scale factor. #define HAL_MOUSE_SCALE 2 /** Docstring: Local APIC end-of-interrupt MMIO address. #define HAL_LAPIC_EOI_ADDR 0xFEE000B0UL #ifdef HAL_IO_HOST_TEST /** Docstring: Stub log for host tests, counts port writes. extern unsigned hal_io_stub_writes; /** Docstring: Stub log for host tests, last port written.", "kind": "variable", "line": 61, "name": "hal_io_stub_last_port", "signature": "extern unsigned hal_io_stub_last_port;"}, {"doc": "#define HAL_MOUSE_PACKET_LEN 4 /** Docstring: Mouse motion scale factor. #define HAL_MOUSE_SCALE 2 /** Docstring: Local APIC end-of-interrupt MMIO address. #define HAL_LAPIC_EOI_ADDR 0xFEE000B0UL #ifdef HAL_IO_HOST_TEST /** Docstring: Stub log for host tests, counts port writes. extern unsigned hal_io_stub_writes; /** Docstring: Stub log for host tests, last port written. extern unsigned hal_io_stub_last_port; /** Docstring: Stub log for host tests, last value written.", "kind": "variable", "line": 63, "name": "hal_io_stub_last_val", "signature": "extern unsigned hal_io_stub_last_val;"}, {"doc": "#define HAL_MOUSE_SCALE 2 /** Docstring: Local APIC end-of-interrupt MMIO address. #define HAL_LAPIC_EOI_ADDR 0xFEE000B0UL #ifdef HAL_IO_HOST_TEST /** Docstring: Stub log for host tests, counts port writes. extern unsigned hal_io_stub_writes; /** Docstring: Stub log for host tests, last port written. extern unsigned hal_io_stub_last_port; /** Docstring: Stub log for host tests, last value written. extern unsigned hal_io_stub_last_val; /** Docstring: Stub log for host tests, counts LAPIC EOI calls.", "kind": "variable", "line": 65, "name": "hal_io_stub_lapic_eois", "signature": "extern unsigned hal_io_stub_lapic_eois;"}, {"doc": "/** Docstring: Local APIC end-of-interrupt MMIO address. #define HAL_LAPIC_EOI_ADDR 0xFEE000B0UL #ifdef HAL_IO_HOST_TEST /** Docstring: Stub log for host tests, counts port writes. extern unsigned hal_io_stub_writes; /** Docstring: Stub log for host tests, last port written. extern unsigned hal_io_stub_last_port; /** Docstring: Stub log for host tests, last value written. extern unsigned hal_io_stub_last_val; /** Docstring: Stub log for host tests, counts LAPIC EOI calls. extern unsigned hal_io_stub_lapic_eois; /** Docstring: Canned byte returned by stub port reads.", "kind": "variable", "line": 67, "name": "hal_io_stub_read_val", "signature": "extern unsigned char hal_io_stub_read_val;"}, {"kind": "macro", "line": 13, "name": "HAL_IO_H", "signature": "#define HAL_IO_H"}, {"kind": "macro", "line": 16, "name": "HAL_PIC1_CMD", "signature": "#define HAL_PIC1_CMD"}, {"kind": "macro", "line": 18, "name": "HAL_PIC1_DATA", "signature": "#define HAL_PIC1_DATA"}, {"kind": "macro", "line": 20, "name": "HAL_PIC2_CMD", "signature": "#define HAL_PIC2_CMD"}, {"kind": "macro", "line": 22, "name": "HAL_PIC2_DATA", "signature": "#define HAL_PIC2_DATA"}, {"kind": "macro", "line": 24, "name": "HAL_PIC_EOI", "signature": "#define HAL_PIC_EOI"}, {"kind": "macro", "line": 27, "name": "HAL_PIT_CMD", "signature": "#define HAL_PIT_CMD"}, {"kind": "macro", "line": 29, "name": "HAL_PIT_CH0", "signature": "#define HAL_PIT_CH0"}, {"kind": "macro", "line": 32, "name": "HAL_PS2_STATUS", "signature": "#define HAL_PS2_STATUS"}, {"kind": "macro", "line": 34, "name": "HAL_PS2_DATA", "signature": "#define HAL_PS2_DATA"}, {"kind": "macro", "line": 36, "name": "HAL_PS2_MOUSE_OBF", "signature": "#define HAL_PS2_MOUSE_OBF"}, {"kind": "macro", "line": 38, "name": "HAL_PS2_IBF_EMPTY", "signature": "#define HAL_PS2_IBF_EMPTY"}, {"kind": "macro", "line": 40, "name": "HAL_PS2_OBF_FULL", "signature": "#define HAL_PS2_OBF_FULL"}, {"kind": "macro", "line": 43, "name": "HAL_MOUSE_SYNC_BIT", "signature": "#define HAL_MOUSE_SYNC_BIT"}, {"kind": "macro", "line": 45, "name": "HAL_MOUSE_OVF_BITS", "signature": "#define HAL_MOUSE_OVF_BITS"}, {"kind": "macro", "line": 47, "name": "HAL_MOUSE_BUTTON_MASK", "signature": "#define HAL_MOUSE_BUTTON_MASK"}, {"kind": "macro", "line": 49, "name": "HAL_MOUSE_PACKET_LEN", "signature": "#define HAL_MOUSE_PACKET_LEN"}, {"kind": "macro", "line": 51, "name": "HAL_MOUSE_SCALE", "signature": "#define HAL_MOUSE_SCALE"}, {"kind": "macro", "line": 54, "name": "HAL_LAPIC_EOI_ADDR", "signature": "#define HAL_LAPIC_EOI_ADDR"}]}, {"id": "arch/x86/isr_stubs.S", "kind": "module", "label": "isr_stubs.S", "language": "S", "sha256": "9227535534f7ef58", "symbol_count": 24, "symbols": [{"kind": "function", "line": 67, "name": "tf_rax"}, {"kind": "function", "line": 68, "name": "tf_rbx"}, {"kind": "function", "line": 69, "name": "tf_rcx"}, {"kind": "function", "line": 70, "name": "tf_rdx"}, {"kind": "function", "line": 71, "name": "tf_rsi"}, {"kind": "function", "line": 72, "name": "tf_rdi"}, {"kind": "function", "line": 73, "name": "tf_rbp"}, {"kind": "function", "line": 74, "name": "tf_r8"}, {"kind": "function", "line": 75, "name": "tf_r9"}, {"kind": "function", "line": 76, "name": "tf_r10"}, {"kind": "function", "line": 77, "name": "tf_r11"}, {"kind": "function", "line": 78, "name": "tf_r12"}, {"kind": "function", "line": 79, "name": "tf_r13"}, {"kind": "function", "line": 80, "name": "tf_r14"}, {"kind": "function", "line": 81, "name": "tf_r15"}, {"kind": "function", "line": 82, "name": "tf_rip"}, {"kind": "function", "line": 83, "name": "tf_cs"}, {"kind": "function", "line": 84, "name": "tf_rflags"}, {"kind": "function", "line": 85, "name": "tf_rsp"}, {"kind": "function", "line": 86, "name": "tf_ss"}, {"kind": "function", "line": 87, "name": "tf_vector"}, {"kind": "function", "line": 88, "name": "tf_errcode"}, {"kind": "function", "line": 96, "name": "isr_common"}, {"kind": "function", "line": 195, "name": "isr_stub_table"}]}, {"doc": "ifndef ARCH_X86_MSR_H define ARCH_X86_MSR_H Model-Specific Register access for x86-64.", "id": "arch/x86/msr.h", "kind": "module", "label": "msr.h", "language": "h", "sha256": "46d85cf355bab5f7", "symbol_count": 10, "symbols": [{"doc": "Model-Specific Register access for x86-64. Shared by kernel.c (syscall_init, arch_prctl, k_exec_user), * paging.c (mm_setup_protections), and syscalls.c (arch_prctl handler).", "kind": "function", "line": 7, "name": "wrmsr", "signature": "static inline void wrmsr(unsigned msr, unsigned long val)"}, {"kind": "function", "line": 12, "name": "rdmsr", "signature": "static inline unsigned long rdmsr(unsigned msr)"}, {"kind": "function", "line": 10, "name": "volatile", "signature": "__asm__ volatile(\"wrmsr\" :: \"c\"(msr), \"a\"(lo), \"d\"(hi));"}, {"kind": "macro", "line": 2, "name": "ARCH_X86_MSR_H", "signature": "#define ARCH_X86_MSR_H"}, {"kind": "macro", "line": 18, "name": "MSR_STAR", "signature": "#define MSR_STAR"}, {"kind": "macro", "line": 20, "name": "MSR_LSTAR", "signature": "#define MSR_LSTAR"}, {"kind": "macro", "line": 21, "name": "MSR_SFMASK", "signature": "#define MSR_SFMASK"}, {"kind": "macro", "line": 22, "name": "MSR_FSBASE", "signature": "#define MSR_FSBASE"}, {"kind": "macro", "line": 23, "name": "MSR_GSBASE", "signature": "#define MSR_GSBASE"}, {"kind": "macro", "line": 24, "name": "MSR_KERNEL_GS_BASE", "signature": "#define MSR_KERNEL_GS_BASE"}]}, {"doc": "ifndef AUDIO_H define AUDIO_H Unified audio API for MiniOS.", "id": "audio.h", "kind": "module", "label": "audio.h", "language": "h", "sha256": "227178931626c839", "symbol_count": 18, "symbols": [{"doc": "PC speaker (square wave, syscalls 209/210/214) - Sound Blaster 16 (8-bit mono PCM DMA, syscalls 221/222/224) - SB16 multicanal mixer (streams, syscalls 225-228) Ring-3 programs use these wrappers instead of calling raw syscalls. The kernel dispatches to the appropriate hardware backend. #define AUDIO_RATE_DEFAULT 22050 #define AUDIO_CHANNELS_MONO 1 #define AUDIO_FORMAT_U8 0 #define AUDIO_FORMAT_S16 1 /* Initialize the audio subsystem. Probes for SB16, resets PC speaker.", "kind": "function", "line": 21, "name": "audio_init", "signature": "int audio_init(void);"}, {"doc": "Ring-3 programs use these wrappers instead of calling raw syscalls. The kernel dispatches to the appropriate hardware backend. #define AUDIO_RATE_DEFAULT 22050 #define AUDIO_CHANNELS_MONO 1 #define AUDIO_FORMAT_U8 0 #define AUDIO_FORMAT_S16 1 /* Initialize the audio subsystem. Probes for SB16, resets PC speaker. int audio_init(void); /* Tone mode: play a square wave at `freq` Hz. 0 = silence.", "kind": "function", "line": 24, "name": "audio_tone", "signature": "void audio_tone(unsigned freq);"}, {"doc": "#define AUDIO_RATE_DEFAULT 22050 #define AUDIO_CHANNELS_MONO 1 #define AUDIO_FORMAT_U8 0 #define AUDIO_FORMAT_S16 1 /* Initialize the audio subsystem. Probes for SB16, resets PC speaker. int audio_init(void); /* Tone mode: play a square wave at `freq` Hz. 0 = silence. void audio_tone(unsigned freq); /* PCM streaming mode (SB16).", "kind": "function", "line": 27, "name": "audio_pcm_open", "signature": "int audio_pcm_open(unsigned rate, unsigned channels, unsigned format);"}, {"kind": "function", "line": 28, "name": "audio_pcm_submit", "signature": "int audio_pcm_submit(const void *buf, unsigned len);"}, {"kind": "function", "line": 29, "name": "audio_pcm_pump", "signature": "void audio_pcm_pump(void);"}, {"kind": "function", "line": 30, "name": "audio_pcm_close", "signature": "void audio_pcm_close(void);"}, {"doc": "/* Initialize the audio subsystem. Probes for SB16, resets PC speaker. int audio_init(void); /* Tone mode: play a square wave at `freq` Hz. 0 = silence. void audio_tone(unsigned freq); /* PCM streaming mode (SB16). int audio_pcm_open(unsigned rate, unsigned channels, unsigned format); int audio_pcm_submit(const void *buf, unsigned len); void audio_pcm_pump(void); void audio_pcm_close(void); /* Volume control (PC speaker mute switch).", "kind": "function", "line": 33, "name": "audio_set_volume", "signature": "void audio_set_volume(unsigned volume);"}, {"kind": "function", "line": 34, "name": "audio_get_volume", "signature": "unsigned audio_get_volume(void);"}, {"doc": "/* Tone mode: play a square wave at `freq` Hz. 0 = silence. void audio_tone(unsigned freq); /* PCM streaming mode (SB16). int audio_pcm_open(unsigned rate, unsigned channels, unsigned format); int audio_pcm_submit(const void *buf, unsigned len); void audio_pcm_pump(void); void audio_pcm_close(void); /* Volume control (PC speaker mute switch). void audio_set_volume(unsigned volume); unsigned audio_get_volume(void); /* Query hardware presence.", "kind": "function", "line": 37, "name": "audio_sb16_present", "signature": "int audio_sb16_present(void);"}, {"doc": "/* PCM streaming mode (SB16). int audio_pcm_open(unsigned rate, unsigned channels, unsigned format); int audio_pcm_submit(const void *buf, unsigned len); void audio_pcm_pump(void); void audio_pcm_close(void); /* Volume control (PC speaker mute switch). void audio_set_volume(unsigned volume); unsigned audio_get_volume(void); /* Query hardware presence. int audio_sb16_present(void); /* Mixer stream API (SB16 multicanal).", "kind": "function", "line": 40, "name": "audio_stream_open", "signature": "int audio_stream_open(void);"}, {"kind": "function", "line": 41, "name": "audio_stream_close", "signature": "void audio_stream_close(int id);"}, {"kind": "function", "line": 42, "name": "audio_stream_submit", "signature": "int audio_stream_submit(int id, const void *buf, unsigned len);"}, {"kind": "function", "line": 43, "name": "audio_stream_volume", "signature": "void audio_stream_volume(int id, unsigned char vol);"}, {"kind": "macro", "line": 2, "name": "AUDIO_H", "signature": "#define AUDIO_H"}, {"kind": "macro", "line": 14, "name": "AUDIO_RATE_DEFAULT", "signature": "#define AUDIO_RATE_DEFAULT"}, {"kind": "macro", "line": 16, "name": "AUDIO_CHANNELS_MONO", "signature": "#define AUDIO_CHANNELS_MONO"}, {"kind": "macro", "line": 17, "name": "AUDIO_FORMAT_U8", "signature": "#define AUDIO_FORMAT_U8"}, {"kind": "macro", "line": 18, "name": "AUDIO_FORMAT_S16", "signature": "#define AUDIO_FORMAT_S16"}]}, {"doc": "ifndef BATCH_H define BATCH_H Docstring: batch.h -- Batched synchronous syscall submission.", "id": "batch.h", "kind": "module", "label": "batch.h", "language": "h", "sha256": "6c39b0fcfebdb354", "symbol_count": 13, "symbols": [{"kind": "struct", "line": 53, "name": "batch_op_t"}, {"kind": "function", "line": 59, "name": "long", "signature": "typedef long (*batch_handler_t)(uint32_t opcode);"}, {"kind": "function", "line": 61, "name": "batch_exec", "signature": "long batch_exec(const batch_op_t *ops, long *results, int count, int *completed, batch_handler_t dispatch);"}, {"kind": "macro", "line": 2, "name": "BATCH_H", "signature": "#define BATCH_H"}, {"kind": "macro", "line": 40, "name": "BATCH_MAX_OPS", "signature": "#define BATCH_MAX_OPS"}, {"kind": "macro", "line": 42, "name": "BATCH_OP_NOP", "signature": "#define BATCH_OP_NOP"}, {"kind": "macro", "line": 44, "name": "BATCH_OP_YIELD", "signature": "#define BATCH_OP_YIELD"}, {"kind": "macro", "line": 45, "name": "BATCH_OP_TIME", "signature": "#define BATCH_OP_TIME"}, {"kind": "macro", "line": 46, "name": "BATCH_OP_GETPID", "signature": "#define BATCH_OP_GETPID"}, {"kind": "macro", "line": 47, "name": "BATCH_OK", "signature": "#define BATCH_OK"}, {"kind": "macro", "line": 49, "name": "BATCH_ERR_COUNT", "signature": "#define BATCH_ERR_COUNT"}, {"kind": "macro", "line": 50, "name": "BATCH_ERR_PTR", "signature": "#define BATCH_ERR_PTR"}, {"kind": "macro", "line": 51, "name": "BATCH_ERR_OPCODE", "signature": "#define BATCH_ERR_OPCODE"}]}, {"doc": "ifndef BLOCK_H define BLOCK_H Block device abstraction for MiniFS. Maps 4096-byte logical blocks to 512-byte IDE sectors.", "id": "block.h", "kind": "module", "label": "block.h", "language": "h", "sha256": "c6b1301d43d02c53", "symbol_count": 12, "symbols": [{"doc": "Block device abstraction for MiniFS. * Maps 4096-byte logical blocks to 512-byte IDE sectors. #define BLOCK_SIZE 4096 #define BLOCK_SHIFT 12 #define SECTORS_PER_BLOCK (BLOCK_SIZE / IDE_SECTOR_SIZE) /* Initialize the block layer. Calls ide_init() internally.", "kind": "function", "line": 12, "name": "block_init", "signature": "void block_init(void);"}, {"doc": "Block device abstraction for MiniFS. * Maps 4096-byte logical blocks to 512-byte IDE sectors. #define BLOCK_SIZE 4096 #define BLOCK_SHIFT 12 #define SECTORS_PER_BLOCK (BLOCK_SIZE / IDE_SECTOR_SIZE) /* Initialize the block layer. Calls ide_init() internally. void block_init(void); /* Set the base LBA offset for all block I/O.", "kind": "function", "line": 15, "name": "block_set_base", "signature": "void block_set_base(unsigned int lba_base);"}, {"doc": "Block device abstraction for MiniFS. * Maps 4096-byte logical blocks to 512-byte IDE sectors. #define BLOCK_SIZE 4096 #define BLOCK_SHIFT 12 #define SECTORS_PER_BLOCK (BLOCK_SIZE / IDE_SECTOR_SIZE) /* Initialize the block layer. Calls ide_init() internally. void block_init(void); /* Set the base LBA offset for all block I/O. void block_set_base(unsigned int lba_base); /* Read/write one 4096-byte block. Returns 0 on success.", "kind": "function", "line": 18, "name": "block_read", "signature": "int block_read(unsigned int block_num, void *buf);"}, {"kind": "function", "line": 19, "name": "block_write", "signature": "int block_write(unsigned int block_num, const void *buf);"}, {"doc": "Read/write multiple contiguous blocks. * Returns 0 on success.", "kind": "function", "line": 23, "name": "block_read_multi", "signature": "int block_read_multi(unsigned int block_num, unsigned int count, void *buf);"}, {"kind": "function", "line": 24, "name": "block_write_multi", "signature": "int block_write_multi(unsigned int block_num, unsigned int count, const void *buf);"}, {"doc": "Read/write multiple contiguous blocks. * Returns 0 on success. int block_read_multi(unsigned int block_num, unsigned int count, void *buf); int block_write_multi(unsigned int block_num, unsigned int count, const void *buf); /* Flush any cached writes (currently a no-op, IDE is synchronous).", "kind": "function", "line": 27, "name": "block_flush", "signature": "void block_flush(void);"}, {"doc": "Read/write multiple contiguous blocks. * Returns 0 on success. int block_read_multi(unsigned int block_num, unsigned int count, void *buf); int block_write_multi(unsigned int block_num, unsigned int count, const void *buf); /* Flush any cached writes (currently a no-op, IDE is synchronous). void block_flush(void); /* Total blocks available, 0 if no disk.", "kind": "function", "line": 30, "name": "block_total", "signature": "unsigned int block_total(void);"}, {"kind": "macro", "line": 2, "name": "BLOCK_H", "signature": "#define BLOCK_H"}, {"kind": "macro", "line": 6, "name": "BLOCK_SIZE", "signature": "#define BLOCK_SIZE"}, {"kind": "macro", "line": 8, "name": "BLOCK_SHIFT", "signature": "#define BLOCK_SHIFT"}, {"kind": "macro", "line": 9, "name": "SECTORS_PER_BLOCK", "signature": "#define SECTORS_PER_BLOCK"}]}, {"id": "bootloader.c", "kind": "module", "label": "bootloader.c", "language": "c", "sha256": "7242dd712bfa1c60", "symbol_count": 4, "symbols": [{"doc": "\"gdt_start:\\n\" \" .quad 0\\n\" \" .quad 0x00CF9A000000FFFF\\n\" \" .quad 0x00CF92000000FFFF\\n\" \"gdt_end:\\n\" \".global gdt32_ptr\\n\" \"gdt32_ptr:\\n\" \" .word gdt_end - gdt_start - 1\\n\" \" .long gdt_start\\n\" ); __asm__(\"boot_drive: .byte 0\\n\"); /* Number of 512-byte sectors of kernel to load from LBA 1 to phys 0x10000. define KSECTORS 508", "kind": "function", "line": 20, "name": "main", "signature": "void main(void)"}, {"kind": "function", "line": 3, "name": "__asm__", "signature": "__asm__( \".global gdt_start\\n\" \"gdt_start:\\n\" \" .quad 0\\n\" \" .quad 0x00CF9A000000FFFF\\n\" \" .quad 0x00CF92000000FFFF\\n\" \"gdt_end:\\n\" \".global gdt32_ptr\\n\" \"gdt32_ptr:\\n\" \" .word gdt_end - gdt_start - 1"}, {"kind": "function", "line": 22, "name": "volatile", "signature": "__asm__ volatile(\"mov %%dl, boot_drive\\n\" : : : \"dx\");"}, {"kind": "macro", "line": 19, "name": "KSECTORS", "signature": "#define KSECTORS"}]}, {"doc": "desktop_icons.h -- embedded icon pixel data for desktop shortcuts.", "id": "desktop_icons.h", "kind": "module", "label": "desktop_icons.h", "language": "h", "sha256": "8669d183d119ecba", "symbol_count": 3, "symbols": [{"kind": "macro", "line": 8, "name": "DESKTOP_ICONS_H", "signature": "#define DESKTOP_ICONS_H"}, {"kind": "macro", "line": 11, "name": "ICON_EMBEDDED_W", "signature": "#define ICON_EMBEDDED_W"}, {"kind": "macro", "line": 13, "name": "ICON_EMBEDDED_H", "signature": "#define ICON_EMBEDDED_H"}]}, {"doc": "desktop_shortcuts.h -- configurable desktop icon shortcuts.", "id": "desktop_shortcuts.h", "kind": "module", "label": "desktop_shortcuts.h", "language": "h", "sha256": "da7697995fa77caf", "symbol_count": 20, "symbols": [{"doc": "A decoded+cached desktop shortcut. Pixels are raw RGBA bytes (ICON_W*ICON_H*4): the PNG's own colors, alpha below 128 transparent. Embedded fallback icons arrive as palette indices and are expanded to * RGBA at load time, so the renderer has a single code path.", "kind": "struct", "line": 50, "name": "desktop_shortcut"}, {"doc": "Load shortcuts from etc/shortcuts, decode icons, compute layout. * Called once from vga_fb_draw_desktop on first draw.", "kind": "function", "line": 60, "name": "desktop_shortcuts_load", "signature": "void desktop_shortcuts_load(void);"}, {"doc": "Load shortcuts from etc/shortcuts, decode icons, compute layout. * Called once from vga_fb_draw_desktop on first draw. void desktop_shortcuts_load(void); /* Draw all shortcut icons and labels onto the framebuffer.", "kind": "function", "line": 63, "name": "desktop_shortcuts_draw", "signature": "void desktop_shortcuts_draw(void);"}, {"doc": "Handle a left-click at (mx, my). Returns the command string if the * click hit an icon, or NULL otherwise.", "kind": "function", "line": 67, "name": "desktop_shortcuts_hit_test", "signature": "const char *desktop_shortcuts_hit_test(int mx, int my);"}, {"kind": "macro", "line": 13, "name": "DESKTOP_SHORTCUTS_H", "signature": "#define DESKTOP_SHORTCUTS_H"}, {"kind": "macro", "line": 18, "name": "MAX_SHORTCUTS", "signature": "#define MAX_SHORTCUTS"}, {"kind": "macro", "line": 19, "name": "SHORTCUT_NAME_LEN", "signature": "#define SHORTCUT_NAME_LEN"}, {"kind": "macro", "line": 20, "name": "SHORTCUT_CMD_LEN", "signature": "#define SHORTCUT_CMD_LEN"}, {"kind": "macro", "line": 21, "name": "SHORTCUT_PATH_LEN", "signature": "#define SHORTCUT_PATH_LEN"}, {"kind": "macro", "line": 24, "name": "ICON_W", "signature": "#define ICON_W"}, {"kind": "macro", "line": 25, "name": "ICON_H", "signature": "#define ICON_H"}, {"kind": "macro", "line": 26, "name": "ICON_PAD_X", "signature": "#define ICON_PAD_X"}, {"kind": "macro", "line": 27, "name": "ICON_PAD_Y", "signature": "#define ICON_PAD_Y"}, {"kind": "macro", "line": 28, "name": "ICON_LABEL_H", "signature": "#define ICON_LABEL_H"}, {"kind": "macro", "line": 33, "name": "DOCK_PAD_X", "signature": "#define DOCK_PAD_X"}, {"kind": "macro", "line": 34, "name": "DOCK_PAD_Y", "signature": "#define DOCK_PAD_Y"}, {"kind": "macro", "line": 35, "name": "DOCK_GAP", "signature": "#define DOCK_GAP"}, {"kind": "macro", "line": 36, "name": "DOCK_LABEL_GAP", "signature": "#define DOCK_LABEL_GAP"}, {"kind": "macro", "line": 43, "name": "ICON_PAL_BASE", "signature": "#define ICON_PAL_BASE"}, {"kind": "macro", "line": 44, "name": "ICON_PAL_SIZE", "signature": "#define ICON_PAL_SIZE"}]}, {"doc": "ifndef DRIVER_H define DRIVER_H driver.h -- Strategy pattern for hardware drivers (thesis correction 2).", "id": "driver.h", "kind": "module", "label": "driver.h", "language": "h", "sha256": "ae5794de5133197f", "symbol_count": 19, "symbols": [{"kind": "struct", "line": 44, "name": "device"}, {"kind": "struct", "line": 28, "name": "block_ops_t"}, {"kind": "struct", "line": 37, "name": "audio_ops_t"}, {"doc": "define DEV_TYPE_BLOCK 1 define DEV_TYPE_AUDIO 2 define DEV_TYPE_NET 3 define DEV_TYPE_CHAR 4", "kind": "type_alias", "line": 25, "name": "device_t", "signature": "typedef struct device device_t;"}, {"kind": "function", "line": 29, "name": "int", "signature": "int (*read_sectors)(device_t *dev, unsigned lba, unsigned count, void *buf);"}, {"kind": "function", "line": 33, "name": "unsigned", "signature": "unsigned (*total_sectors)(device_t *dev);"}, {"kind": "function", "line": 38, "name": "void", "signature": "void (*tone)(device_t *dev, unsigned freq);"}, {"kind": "function", "line": 51, "name": "device_register", "signature": "int device_register(device_t *dev);"}, {"kind": "function", "line": 53, "name": "device_find", "signature": "device_t *device_find(const char *name);"}, {"kind": "function", "line": 54, "name": "device_find_by_type", "signature": "device_t *device_find_by_type(int type);"}, {"kind": "function", "line": 55, "name": "device_count", "signature": "int device_count(void);"}, {"kind": "function", "line": 56, "name": "device_reset", "signature": "void device_reset(void);"}, {"kind": "macro", "line": 2, "name": "DRIVER_H", "signature": "#define DRIVER_H"}, {"kind": "macro", "line": 17, "name": "DEV_NAME_LEN", "signature": "#define DEV_NAME_LEN"}, {"kind": "macro", "line": 19, "name": "DEV_MAX", "signature": "#define DEV_MAX"}, {"kind": "macro", "line": 20, "name": "DEV_TYPE_BLOCK", "signature": "#define DEV_TYPE_BLOCK"}, {"kind": "macro", "line": 22, "name": "DEV_TYPE_AUDIO", "signature": "#define DEV_TYPE_AUDIO"}, {"kind": "macro", "line": 23, "name": "DEV_TYPE_NET", "signature": "#define DEV_TYPE_NET"}, {"kind": "macro", "line": 24, "name": "DEV_TYPE_CHAR", "signature": "#define DEV_TYPE_CHAR"}]}, {"doc": "Block device layer for MiniFS.", "id": "drivers/block.c", "kind": "module", "label": "block.c", "language": "c", "sha256": "05baaa2d6a4dafa3", "symbol_count": 17, "symbols": [{"kind": "function", "line": 28, "name": "bc_index", "signature": "static unsigned int bc_index(unsigned int block_num)"}, {"kind": "function", "line": 32, "name": "bc_invalidate", "signature": "static void bc_invalidate(unsigned int block_num)"}, {"kind": "function", "line": 37, "name": "block_init", "signature": "void block_init(void)"}, {"kind": "function", "line": 43, "name": "block_set_base", "signature": "void block_set_base(unsigned int lba_base)"}, {"kind": "function", "line": 59, "name": "block_dev_write", "signature": "static int block_dev_write(unsigned lba, unsigned count, const void *buf)"}, {"kind": "function", "line": 66, "name": "block_read", "signature": "int block_read(unsigned int block_num, void *buf)"}, {"kind": "function", "line": 86, "name": "block_write", "signature": "int block_write(unsigned int block_num, const void *buf)"}, {"kind": "function", "line": 92, "name": "block_read_multi", "signature": "int block_read_multi(unsigned int block_num, unsigned int count, void *buf)"}, {"kind": "function", "line": 97, "name": "block_write_multi", "signature": "int block_write_multi(unsigned int block_num, unsigned int count, const void *buf)"}, {"kind": "function", "line": 104, "name": "block_flush", "signature": "void block_flush(void)"}, {"kind": "function", "line": 106, "name": "block_total", "signature": "unsigned int block_total(void)"}, {"kind": "function", "line": 39, "name": "ide_init", "signature": "ide_init();"}, {"kind": "function", "line": 57, "name": "ide_read_sectors", "signature": "return ide_read_sectors(lba, count, buf);"}, {"kind": "function", "line": 64, "name": "ide_write_sectors", "signature": "return ide_write_sectors(lba, count, buf);"}, {"kind": "function", "line": 95, "name": "block_dev_read", "signature": "return block_dev_read(lba, count * SECTORS_PER_BLOCK, buf);"}, {"kind": "macro", "line": 23, "name": "BC_WAYS", "signature": "#define BC_WAYS"}, {"kind": "macro", "line": 24, "name": "BC_MASK", "signature": "#define BC_MASK"}]}, {"doc": "include \"driver.h\" driver.c -- Device registry for the Strategy-pattern driver layer.", "id": "drivers/driver.c", "kind": "module", "label": "driver.c", "language": "c", "sha256": "b21ef58431a55bc2", "symbol_count": 8, "symbols": [{"kind": "function", "line": 13, "name": "dev_len", "signature": "static unsigned dev_len(const char *s)"}, {"kind": "function", "line": 19, "name": "dev_copy", "signature": "static void dev_copy(char *dst, const char *src, unsigned cap)"}, {"kind": "function", "line": 26, "name": "dev_eq", "signature": "static int dev_eq(const char *a, const char *b)"}, {"kind": "function", "line": 31, "name": "device_reset", "signature": "void device_reset(void)"}, {"kind": "function", "line": 43, "name": "device_register", "signature": "int device_register(device_t *dev)"}, {"kind": "function", "line": 65, "name": "device_find", "signature": "device_t *device_find(const char *name)"}, {"kind": "function", "line": 75, "name": "device_find_by_type", "signature": "device_t *device_find_by_type(int type)"}, {"kind": "function", "line": 84, "name": "device_count", "signature": "int device_count(void)"}]}, {"doc": "IDE/ATA PIO driver for MiniOS.", "id": "drivers/ide.c", "kind": "module", "label": "ide.c", "language": "c", "sha256": "fadc445d999878de", "symbol_count": 24, "symbols": [{"kind": "function", "line": 12, "name": "ide_delay", "signature": "static void ide_delay(void)"}, {"kind": "function", "line": 22, "name": "ide_read_status", "signature": "static unsigned char ide_read_status(void)"}, {"kind": "function", "line": 26, "name": "ide_wait_not_busy", "signature": "static int ide_wait_not_busy(unsigned int timeout)"}, {"kind": "function", "line": 34, "name": "ide_wait_drq", "signature": "static int ide_wait_drq(unsigned int timeout)"}, {"kind": "function", "line": 45, "name": "ide_select_drive", "signature": "static void ide_select_drive(unsigned char drive)"}, {"kind": "function", "line": 51, "name": "ide_soft_reset", "signature": "static void ide_soft_reset(void)"}, {"kind": "function", "line": 58, "name": "ide_identify", "signature": "static int ide_identify(void)"}, {"kind": "function", "line": 83, "name": "ide_init", "signature": "void ide_init(void)"}, {"kind": "function", "line": 102, "name": "ide_present", "signature": "int ide_present(void)"}, {"kind": "function", "line": 104, "name": "ide_total_sectors", "signature": "unsigned int ide_total_sectors(void)"}, {"kind": "function", "line": 105, "name": "ide_ops_read", "signature": "static int ide_ops_read(device_t *dev, unsigned lba, unsigned count, void *buf)"}, {"kind": "function", "line": 110, "name": "ide_ops_write", "signature": "static int ide_ops_write(device_t *dev, unsigned lba, unsigned count, const void *buf)"}, {"kind": "function", "line": 115, "name": "ide_ops_total", "signature": "static unsigned ide_ops_total(device_t *dev)"}, {"kind": "function", "line": 120, "name": "ide_ops_present", "signature": "static int ide_ops_present(device_t *dev)"}, {"kind": "function", "line": 140, "name": "ide_register_device", "signature": "void ide_register_device(void)"}, {"kind": "function", "line": 144, "name": "ide_read_sectors", "signature": "int ide_read_sectors(unsigned int lba, unsigned int count, void *buf)"}, {"kind": "function", "line": 175, "name": "ide_write_sectors", "signature": "int ide_write_sectors(unsigned int lba, unsigned int count, const void *buf)"}, {"kind": "function", "line": 205, "name": "ide_read_sector", "signature": "int ide_read_sector(unsigned int lba, void *buf)"}, {"kind": "function", "line": 209, "name": "ide_write_sector", "signature": "int ide_write_sector(unsigned int lba, const void *buf)"}, {"kind": "function", "line": 24, "name": "inb", "signature": "return inb(IDE_PRIMARY_BASE + IDE_REG_STATUS);"}, {"kind": "function", "line": 47, "name": "outb", "signature": "outb(IDE_PRIMARY_BASE + IDE_REG_DRIVE, IDE_DRIVE_LBA | (drive ? IDE_DRIVE_SLAVE : IDE_DRIVE_MASTER));"}, {"kind": "function", "line": 95, "name": "kprintf", "signature": "kprintf(\"IDE: disk detected, %u sectors (%u MB)\\n\", ide_disk_sectors, ide_disk_sectors / 2048);"}, {"kind": "function", "line": 142, "name": "device_register", "signature": "device_register(&ide_device);"}, {"kind": "function", "line": 197, "name": "outw", "signature": "outw(IDE_PRIMARY_BASE + IDE_REG_DATA, ((const unsigned short *)p)[j]);"}]}, {"doc": "include \"kernel.h\" include \"sched.h\" include \"vga_fb.h\" include \"kbd.h\" ================================================================", "id": "drivers/kbd.c", "kind": "module", "label": "kbd.c", "language": "c", "sha256": "eb73c14e884f03a1", "symbol_count": 29, "symbols": [{"kind": "function", "line": 96, "name": "kbd_get_layout", "signature": "int kbd_get_layout(void)"}, {"kind": "function", "line": 98, "name": "kbd_set_layout", "signature": "void kbd_set_layout(int layout)"}, {"kind": "function", "line": 102, "name": "kbd_toggle_layout", "signature": "void kbd_toggle_layout(void)"}, {"kind": "function", "line": 128, "name": "kbd_q_push", "signature": "void kbd_q_push(unsigned char c)"}, {"kind": "function", "line": 135, "name": "kbd_raw_push_internal", "signature": "static void kbd_raw_push_internal(unsigned char c)"}, {"kind": "function", "line": 142, "name": "kbd_q_empty", "signature": "int kbd_q_empty(void)"}, {"kind": "function", "line": 144, "name": "kbd_q_pop", "signature": "int kbd_q_pop(void)"}, {"kind": "function", "line": 151, "name": "kbd_available", "signature": "int kbd_available(void)"}, {"kind": "function", "line": 157, "name": "kbd_raw_mode_get", "signature": "int kbd_raw_mode_get(void)"}, {"kind": "function", "line": 159, "name": "kbd_raw_mode_set", "signature": "void kbd_raw_mode_set(int on)"}, {"kind": "function", "line": 160, "name": "kbd_raw_empty", "signature": "int kbd_raw_empty(void)"}, {"kind": "function", "line": 161, "name": "kbd_raw_pop", "signature": "int kbd_raw_pop(void)"}, {"kind": "function", "line": 167, "name": "kbd_raw_push_byte", "signature": "void kbd_raw_push_byte(unsigned char c)"}, {"kind": "function", "line": 168, "name": "kbd_e0_get", "signature": "int kbd_e0_get(void)"}, {"kind": "function", "line": 169, "name": "kbd_e0_set", "signature": "void kbd_e0_set(int v)"}, {"kind": "function", "line": 170, "name": "kbd_flush_all", "signature": "void kbd_flush_all(void)"}, {"doc": "Drop queued raw scancodes (shell-typed while a terminal owned PS/2) so a * newly focused game never replays them as input. Cooked shell keys stay.", "kind": "function", "line": 177, "name": "kbd_raw_flush", "signature": "void kbd_raw_flush(void)"}, {"kind": "function", "line": 197, "name": "raw_track_mods", "signature": "static int raw_track_mods(int code, int brk, int e0)"}, {"kind": "function", "line": 206, "name": "wm_raw_combo", "signature": "static int wm_raw_combo(int code, int e0)"}, {"kind": "function", "line": 247, "name": "bare", "signature": "* second byte is not a WM combo is delivered bare (keypad alias): games map\n * both, so play surv..."}, {"kind": "function", "line": 270, "name": "kbd_read", "signature": "int kbd_read(void)"}, {"kind": "function", "line": 426, "name": "kbd_reset_for_shell", "signature": "void kbd_reset_for_shell(void)"}, {"kind": "function", "line": 154, "name": "volatile", "signature": "__asm__ volatile(\"inb $0x64, %0\" : \"=a\"(s));"}, {"kind": "function", "line": 187, "name": "paths", "signature": "* keeps the modifier state in sync on both paths (the old raw branch never * tracked Alt/Super, so a modifier held across raw mode stuck forever);"}, {"kind": "function", "line": 192, "name": "too", "signature": "* too (DOOM strafes with Alt+arrows);"}, {"kind": "function", "line": 224, "name": "vga_fb_snap_window", "signature": "vga_fb_snap_window(zone);"}, {"kind": "macro", "line": 117, "name": "KBD_QUEUE_LEN", "signature": "#define KBD_QUEUE_LEN"}, {"kind": "macro", "line": 119, "name": "KBD_SCAN_DEL", "signature": "#define KBD_SCAN_DEL"}, {"kind": "macro", "line": 123, "name": "KBD_RAW_LEN", "signature": "#define KBD_RAW_LEN"}]}, {"doc": "ifndef KBD_H define KBD_H Keyboard layout: US qwerty (default) or Spanish (Spain) qwerty. Toggled from the taskbar widget or the `kbd` shell builtin.", "id": "drivers/kbd.h", "kind": "module", "label": "kbd.h", "language": "h", "sha256": "331dcb6ad92f59eb", "symbol_count": 22, "symbols": [{"doc": "Keyboard layout: US qwerty (default) or Spanish (Spain) qwerty. Toggled * from the taskbar widget or the `kbd` shell builtin. define KBD_LAYOUT_EN 0 define KBD_LAYOUT_ES 1", "kind": "function", "line": 8, "name": "kbd_available", "signature": "int kbd_available(void);"}, {"kind": "function", "line": 10, "name": "kbd_read", "signature": "int kbd_read(void);"}, {"kind": "function", "line": 11, "name": "kbd_reset_for_shell", "signature": "void kbd_reset_for_shell(void);"}, {"doc": "Keyboard layout: US qwerty (default) or Spanish (Spain) qwerty. Toggled * from the taskbar widget or the `kbd` shell builtin. #define KBD_LAYOUT_EN 0 #define KBD_LAYOUT_ES 1 int kbd_available(void); int kbd_read(void); void kbd_reset_for_shell(void); /* Layout selection", "kind": "function", "line": 14, "name": "kbd_get_layout", "signature": "int kbd_get_layout(void);"}, {"kind": "function", "line": 15, "name": "kbd_set_layout", "signature": "void kbd_set_layout(int layout);"}, {"kind": "function", "line": 16, "name": "kbd_toggle_layout", "signature": "void kbd_toggle_layout(void);"}, {"doc": "Printable test for console input: ASCII 32..126 plus Latin-1 160..255 (the ES layout emits single-byte Latin-1 for ñ ¡ ¿ ´ ¨ · ª º ç Ç ¬). * DEL (127) and the C1 controls (128..159) are never input. static inline int kbd_is_printable(int c) { return (c >= 32 && c <= 126) || (c >= 160 && c <= 255); } /* Translated queue (shell input)", "kind": "function", "line": 26, "name": "kbd_q_empty", "signature": "int kbd_q_empty(void);"}, {"kind": "function", "line": 27, "name": "kbd_q_pop", "signature": "int kbd_q_pop(void);"}, {"kind": "function", "line": 28, "name": "kbd_q_push", "signature": "void kbd_q_push(unsigned char c);"}, {"doc": "Printable test for console input: ASCII 32..126 plus Latin-1 160..255 (the ES layout emits single-byte Latin-1 for ñ ¡ ¿ ´ ¨ · ª º ç Ç ¬). * DEL (127) and the C1 controls (128..159) are never input. static inline int kbd_is_printable(int c) { return (c >= 32 && c <= 126) || (c >= 160 && c <= 255); } /* Translated queue (shell input) int kbd_q_empty(void); int kbd_q_pop(void); void kbd_q_push(unsigned char c); /* Raw queue (DOOM / SYS_KBD)", "kind": "function", "line": 31, "name": "kbd_raw_mode_get", "signature": "int kbd_raw_mode_get(void);"}, {"kind": "function", "line": 32, "name": "kbd_raw_mode_set", "signature": "void kbd_raw_mode_set(int on);"}, {"kind": "function", "line": 33, "name": "kbd_raw_empty", "signature": "int kbd_raw_empty(void);"}, {"kind": "function", "line": 34, "name": "kbd_raw_pop", "signature": "int kbd_raw_pop(void);"}, {"kind": "function", "line": 35, "name": "kbd_raw_push_byte", "signature": "void kbd_raw_push_byte(unsigned char c);"}, {"kind": "function", "line": 36, "name": "kbd_e0_get", "signature": "int kbd_e0_get(void);"}, {"kind": "function", "line": 37, "name": "kbd_e0_set", "signature": "void kbd_e0_set(int v);"}, {"kind": "function", "line": 38, "name": "kbd_flush_all", "signature": "void kbd_flush_all(void);"}, {"kind": "function", "line": 39, "name": "kbd_raw_flush", "signature": "void kbd_raw_flush(void);"}, {"doc": "Raw-path WM filter for the SYS_KBD direct-port read (DOOM/Quake/Nuklear read scancodes one byte per syscall, bypassing kbd_read): tracks E0 and modifiers, performs Alt+Tab / Super+Tab / Super+arrows / Alt+Enter,M,X,Q and swallows the consumed bytes. Returns 1 when sc must not reach the * app. Declared here so kernel/syscalls.c shares the one implementation.", "kind": "function", "line": 46, "name": "kbd_sys_raw_filter", "signature": "int kbd_sys_raw_filter(unsigned char sc);"}, {"kind": "macro", "line": 2, "name": "KBD_H", "signature": "#define KBD_H"}, {"kind": "macro", "line": 6, "name": "KBD_LAYOUT_EN", "signature": "#define KBD_LAYOUT_EN"}, {"kind": "macro", "line": 7, "name": "KBD_LAYOUT_ES", "signature": "#define KBD_LAYOUT_ES"}]}, {"doc": "include \"kernel.h\" include \"pcspk.h\" include \"driver.h\" PC speaker driver with a software master volume. The speaker has no", "id": "drivers/pcspk.c", "kind": "module", "label": "pcspk.c", "language": "c", "sha256": "770e8cb1eb06a08a", "symbol_count": 20, "symbols": [{"kind": "function", "line": 32, "name": "pcspk_ops_tone", "signature": "static void pcspk_ops_tone(device_t *dev, unsigned freq)"}, {"kind": "function", "line": 37, "name": "pcspk_ops_off", "signature": "static void pcspk_ops_off(device_t *dev)"}, {"kind": "function", "line": 42, "name": "pcspk_ops_set_volume", "signature": "static void pcspk_ops_set_volume(device_t *dev, unsigned vol)"}, {"kind": "function", "line": 47, "name": "pcspk_ops_get_volume", "signature": "static unsigned pcspk_ops_get_volume(device_t *dev)"}, {"kind": "function", "line": 67, "name": "pcspk_init", "signature": "void pcspk_init(void)"}, {"kind": "function", "line": 73, "name": "pcspk_set_volume", "signature": "void pcspk_set_volume(unsigned volume)"}, {"kind": "function", "line": 77, "name": "pcspk_get_volume", "signature": "unsigned pcspk_get_volume(void)"}, {"kind": "function", "line": 81, "name": "pcspk_tone", "signature": "void pcspk_tone(unsigned freq)"}, {"kind": "function", "line": 99, "name": "pcspk_off", "signature": "void pcspk_off(void)"}, {"kind": "function", "line": 70, "name": "outb", "signature": "outb(SPEAKER_PORT, inb(SPEAKER_PORT) & 0xFC);"}, {"kind": "function", "line": 71, "name": "device_register", "signature": "device_register(&pcspk_device);"}, {"kind": "macro", "line": 13, "name": "PIT_CH2_DATA", "signature": "#define PIT_CH2_DATA"}, {"kind": "macro", "line": 15, "name": "PIT_CH2_CMD", "signature": "#define PIT_CH2_CMD"}, {"kind": "macro", "line": 16, "name": "SPEAKER_PORT", "signature": "#define SPEAKER_PORT"}, {"kind": "macro", "line": 17, "name": "PIT_FREQ", "signature": "#define PIT_FREQ"}, {"kind": "macro", "line": 18, "name": "PCSPK_MIN_FREQ", "signature": "#define PCSPK_MIN_FREQ"}, {"kind": "macro", "line": 20, "name": "PCSPK_MAX_FREQ", "signature": "#define PCSPK_MAX_FREQ"}, {"kind": "macro", "line": 21, "name": "SPEAKER_DATA_BIT", "signature": "#define SPEAKER_DATA_BIT"}, {"kind": "macro", "line": 23, "name": "SPEAKER_GATE_BIT", "signature": "#define SPEAKER_GATE_BIT"}, {"kind": "macro", "line": 24, "name": "SPEAKER_ENABLE_BITS", "signature": "#define SPEAKER_ENABLE_BITS"}]}, {"doc": "include \"kernel.h\" include \"rtc.h\" CMOS RTC time-of-day reader. The desktop clock and the shell `date` builtin", "id": "drivers/rtc.c", "kind": "module", "label": "rtc.c", "language": "c", "sha256": "e5cb1486b55db69d", "symbol_count": 27, "symbols": [{"doc": "The RTC reports a time-of-day that is mid-update; waiting out this flag * before reading the three fields makes the snapshot consistent. define RTC_UPDATE_WAIT 100000", "kind": "function", "line": 34, "name": "rtc_cmos_read", "signature": "static inline unsigned char rtc_cmos_read(unsigned char reg)"}, {"kind": "function", "line": 39, "name": "rtc_from_bcd", "signature": "static int rtc_from_bcd(unsigned char v)"}, {"kind": "function", "line": 43, "name": "rtc_read_tod", "signature": "int rtc_read_tod(int *hour, int *min, int *sec)"}, {"kind": "function", "line": 67, "name": "rtc_month_len", "signature": "static int rtc_month_len(long full_year, long mon)"}, {"kind": "function", "line": 77, "name": "rtc_read_date", "signature": "int rtc_read_date(int *year, int *mon, int *day)"}, {"kind": "function", "line": 101, "name": "rtc_wall_seconds", "signature": "int rtc_wall_seconds(unsigned long *out)"}, {"kind": "function", "line": 36, "name": "outb", "signature": "outb(RTC_CMOS_ADDR, reg);"}, {"kind": "function", "line": 37, "name": "inb", "signature": "return inb(RTC_CMOS_DATA);"}, {"kind": "macro", "line": 8, "name": "RTC_CMOS_ADDR", "signature": "#define RTC_CMOS_ADDR"}, {"kind": "macro", "line": 10, "name": "RTC_CMOS_DATA", "signature": "#define RTC_CMOS_DATA"}, {"kind": "macro", "line": 11, "name": "RTC_REG_SEC", "signature": "#define RTC_REG_SEC"}, {"kind": "macro", "line": 13, "name": "RTC_REG_MIN", "signature": "#define RTC_REG_MIN"}, {"kind": "macro", "line": 14, "name": "RTC_REG_HOUR", "signature": "#define RTC_REG_HOUR"}, {"kind": "macro", "line": 15, "name": "RTC_REG_DAY", "signature": "#define RTC_REG_DAY"}, {"kind": "macro", "line": 16, "name": "RTC_REG_MON", "signature": "#define RTC_REG_MON"}, {"kind": "macro", "line": 17, "name": "RTC_REG_YEAR", "signature": "#define RTC_REG_YEAR"}, {"kind": "macro", "line": 18, "name": "RTC_REG_STATUS_A", "signature": "#define RTC_REG_STATUS_A"}, {"kind": "macro", "line": 19, "name": "RTC_REG_STATUS_B", "signature": "#define RTC_REG_STATUS_B"}, {"kind": "macro", "line": 20, "name": "RTC_UPDATE_IN_PROGRESS", "signature": "#define RTC_UPDATE_IN_PROGRESS"}, {"kind": "macro", "line": 22, "name": "RTC_BCD_FLAG", "signature": "#define RTC_BCD_FLAG"}, {"kind": "macro", "line": 23, "name": "RTC_HOUR_MIN", "signature": "#define RTC_HOUR_MIN"}, {"kind": "macro", "line": 25, "name": "RTC_HOUR_MAX", "signature": "#define RTC_HOUR_MAX"}, {"kind": "macro", "line": 26, "name": "RTC_MIN_MIN", "signature": "#define RTC_MIN_MIN"}, {"kind": "macro", "line": 27, "name": "RTC_MIN_MAX", "signature": "#define RTC_MIN_MAX"}, {"kind": "macro", "line": 28, "name": "RTC_SEC_MIN", "signature": "#define RTC_SEC_MIN"}, {"kind": "macro", "line": 29, "name": "RTC_SEC_MAX", "signature": "#define RTC_SEC_MAX"}, {"kind": "macro", "line": 33, "name": "RTC_UPDATE_WAIT", "signature": "#define RTC_UPDATE_WAIT"}]}, {"doc": "include \"kernel.h\" include \"sb16.h\" include \"sync.h\" Sound Blaster 16 DMA audio driver.", "id": "drivers/sb16.c", "kind": "module", "label": "sb16.c", "language": "c", "sha256": "aebc6d9d2e9836a6", "symbol_count": 62, "symbols": [{"doc": "Mixer stream id backing the legacy sb16_pcm_open/submit API (WQ_NONE when closed). The legacy path forwards into the mixer so submitted PCM actually reaches the DMA ring through sb16_mix_all; a dedicated * kernel-side ring here would be a second, never-drained copy. static int legacy_stream = WQ_NONE; /* Reset the legacy kernel-side audio ring to empty.", "kind": "function", "line": 117, "name": "sb16_kring_reset", "signature": "static void sb16_kring_reset(void)"}, {"kind": "function", "line": 128, "name": "sb16_slot", "signature": "static unsigned char *sb16_slot(unsigned i)"}, {"doc": "streams[(unsigned)legacy_stream].count = 0; } } /* Mix output buffer: one SB16_PCM_BUF chunk of mixed 8-bit unsigned audio. static unsigned char mix_buf[SB16_PCM_BUF]; static unsigned char *sb16_slot(unsigned i) { return (unsigned char *)(unsigned long)(SB16_DMA_BUF0 + i * SB16_BUF); } /* ------------------------------------------------------------------ /* Mixer stream API /* ------------------------------------------------------------------", "kind": "function", "line": 136, "name": "sb16_stream_open", "signature": "int sb16_stream_open(void)"}, {"kind": "function", "line": 152, "name": "sb16_stream_close", "signature": "void sb16_stream_close(int id)"}, {"kind": "function", "line": 160, "name": "sb16_stream_submit", "signature": "int sb16_stream_submit(int id, const unsigned char *pcm, unsigned len)"}, {"kind": "function", "line": 175, "name": "sb16_stream_volume", "signature": "void sb16_stream_volume(int id, unsigned char vol)"}, {"kind": "function", "line": 181, "name": "sb16_stream_count", "signature": "int sb16_stream_count(void)"}, {"doc": "if (!streams[id].active) return; streams[id].volume = vol; } int sb16_stream_count(void) { int i, n = 0; for (i = 0; i < (int)SB16_STREAMS; i++) if (streams[i].active) n++; return n; } /* ------------------------------------------------------------------ /* Mixer: sum all active streams into mix_buf /* ------------------------------------------------------------------", "kind": "function", "line": 192, "name": "sb16_mix_all", "signature": "static void sb16_mix_all(void)"}, {"doc": "if (sample < -128) sample = -128; mix_buf[k] = (unsigned char)(sample + 128); idx++; if (idx >= SB16_STREAM_BUF) idx = 0; } s->tail = idx; s->count -= len; } sb16_stat.mixes++; } /* ------------------------------------------------------------------ /* Pump: drain mixer output into DMA slots and arm the hardware. /* ------------------------------------------------------------------", "kind": "function", "line": 234, "name": "sb16_pump", "signature": "void sb16_pump(void)"}, {"doc": "DSP write-ready: bit 7 of the status port clear means the DSP accepts a command or data byte. Bounded so a dead DSP can never hang the kernel; the byte is still issued after the timeout (the DSP takes it * once it catches up after a reset).", "kind": "function", "line": 276, "name": "sb16_wait_write", "signature": "static int sb16_wait_write(void)"}, {"kind": "function", "line": 282, "name": "sb16_cmd", "signature": "static void sb16_cmd(unsigned char c)"}, {"kind": "function", "line": 287, "name": "sb16_read_data", "signature": "static int sb16_read_data(unsigned char *out)"}, {"kind": "function", "line": 299, "name": "sb16_reset_dsp", "signature": "static int sb16_reset_dsp(void)"}, {"kind": "function", "line": 312, "name": "sb16_dma_play", "signature": "static void sb16_dma_play(unsigned addr, unsigned len)"}, {"kind": "function", "line": 328, "name": "sb16_refill", "signature": "static void sb16_refill(int slot_index)"}, {"kind": "function", "line": 344, "name": "sb16_arm", "signature": "static void sb16_arm(int from_irq)"}, {"kind": "function", "line": 368, "name": "sb16_present", "signature": "int sb16_present(void)"}, {"kind": "function", "line": 370, "name": "sb16_tone", "signature": "void sb16_tone(unsigned freq)"}, {"kind": "function", "line": 385, "name": "sb16_pcm_open", "signature": "void sb16_pcm_open(void)"}, {"kind": "function", "line": 408, "name": "sb16_pcm_close", "signature": "void sb16_pcm_close(void)"}, {"kind": "function", "line": 417, "name": "sb16_pcm_submit", "signature": "int sb16_pcm_submit(const unsigned char *pcm, unsigned len)"}, {"kind": "function", "line": 434, "name": "sb16_irq", "signature": "void sb16_irq(void)"}, {"kind": "function", "line": 441, "name": "sb16_poll", "signature": "void sb16_poll(void)"}, {"kind": "function", "line": 446, "name": "sb16_ring_free", "signature": "unsigned sb16_ring_free(void)"}, {"kind": "function", "line": 448, "name": "sb16_mode_active", "signature": "int sb16_mode_active(void)"}, {"kind": "function", "line": 449, "name": "sb16_counters", "signature": "void sb16_counters(sb16_counters_t *out)"}, {"kind": "function", "line": 453, "name": "sb16_init", "signature": "int sb16_init(void)"}, {"kind": "function", "line": 20, "name": "IRQ", "signature": "* QEMU audio backends never raise the completion IRQ (they only consume once * their engine buffer drains, which a stalled host backend never does), and * without a fallback the 7-slot ring fills once"}, {"kind": "function", "line": 156, "name": "kfree", "signature": "kfree(streams[id].ring);"}, {"kind": "function", "line": 285, "name": "outb", "signature": "outb(SB16_DSP_WRITE_DATA, c);"}, {"kind": "function", "line": 459, "name": "pending", "signature": "* reading without it eats whatever byte happens to be pending (or * times out), so the probe used to fail or misread here. */ sb16_cmd(SB16_CMD_READ_VER);"}, {"kind": "macro", "line": 45, "name": "SB16_BASE_PORT", "signature": "#define SB16_BASE_PORT"}, {"kind": "macro", "line": 47, "name": "SB16_DSP_RESET", "signature": "#define SB16_DSP_RESET"}, {"kind": "macro", "line": 48, "name": "SB16_DSP_READ_DATA", "signature": "#define SB16_DSP_READ_DATA"}, {"kind": "macro", "line": 49, "name": "SB16_DSP_WRITE_DATA", "signature": "#define SB16_DSP_WRITE_DATA"}, {"kind": "macro", "line": 50, "name": "SB16_DSP_STATUS", "signature": "#define SB16_DSP_STATUS"}, {"kind": "macro", "line": 51, "name": "SB16_IRQ_ACK", "signature": "#define SB16_IRQ_ACK"}, {"kind": "macro", "line": 52, "name": "SB16_CMD_READ_VER", "signature": "#define SB16_CMD_READ_VER"}, {"kind": "macro", "line": 54, "name": "SB16_CMD_SET_FREQ", "signature": "#define SB16_CMD_SET_FREQ"}, {"kind": "macro", "line": 55, "name": "SB16_CMD_PLAY8", "signature": "#define SB16_CMD_PLAY8"}, {"kind": "macro", "line": 56, "name": "SB16_CMD_SPK_ON", "signature": "#define SB16_CMD_SPK_ON"}, {"kind": "macro", "line": 57, "name": "SB16_CMD_SPK_OFF", "signature": "#define SB16_CMD_SPK_OFF"}, {"kind": "macro", "line": 58, "name": "SB16_DSP_RDSTATUS", "signature": "#define SB16_DSP_RDSTATUS"}, {"kind": "macro", "line": 65, "name": "DMA_MODE_PORT", "signature": "#define DMA_MODE_PORT"}, {"kind": "macro", "line": 66, "name": "DMA_CH1_SINGLE_READ", "signature": "#define DMA_CH1_SINGLE_READ"}, {"kind": "macro", "line": 67, "name": "SB16_FREQ_LO", "signature": "#define SB16_FREQ_LO"}, {"kind": "macro", "line": 69, "name": "SB16_FREQ_HI", "signature": "#define SB16_FREQ_HI"}, {"kind": "macro", "line": 70, "name": "SB16_DSP_READY_MASK", "signature": "#define SB16_DSP_READY_MASK"}, {"kind": "macro", "line": 72, "name": "DMA_CH1_ADDR", "signature": "#define DMA_CH1_ADDR"}, {"kind": "macro", "line": 74, "name": "DMA_CH1_CNT", "signature": "#define DMA_CH1_CNT"}, {"kind": "macro", "line": 75, "name": "DMA_CH1_PAGE", "signature": "#define DMA_CH1_PAGE"}, {"kind": "macro", "line": 76, "name": "DMA_MASK", "signature": "#define DMA_MASK"}, {"kind": "macro", "line": 77, "name": "DMA_FF_CLR", "signature": "#define DMA_FF_CLR"}, {"kind": "macro", "line": 78, "name": "DMA_CH1_UNMASK", "signature": "#define DMA_CH1_UNMASK"}, {"kind": "macro", "line": 79, "name": "DMA_CH1_MASK", "signature": "#define DMA_CH1_MASK"}, {"kind": "macro", "line": 80, "name": "SB16_DMA_BUF0", "signature": "#define SB16_DMA_BUF0"}, {"kind": "macro", "line": 82, "name": "SB16_SILENCE_SLOT", "signature": "#define SB16_SILENCE_SLOT"}, {"kind": "macro", "line": 83, "name": "SB16_BUF", "signature": "#define SB16_BUF"}, {"kind": "macro", "line": 84, "name": "SB16_PROBE_WAIT", "signature": "#define SB16_PROBE_WAIT"}, {"kind": "macro", "line": 86, "name": "SB16_MODE_TONE", "signature": "#define SB16_MODE_TONE"}, {"kind": "macro", "line": 88, "name": "SB16_MODE_PCM", "signature": "#define SB16_MODE_PCM"}, {"kind": "macro", "line": 89, "name": "SB16_SQ_CYCLE", "signature": "#define SB16_SQ_CYCLE"}]}, {"doc": "ifndef EDITOR_H define EDITOR_H editor.h -- the built-in line editor contract.", "id": "editor.h", "kind": "module", "label": "editor.h", "language": "h", "sha256": "81a9b0c1bce3a456", "symbol_count": 2, "symbols": [{"doc": "include \"kernel.h\"", "kind": "function", "line": 14, "name": "shell_cmd_edit", "signature": "void shell_cmd_edit(int argc, char **argv);"}, {"kind": "macro", "line": 2, "name": "EDITOR_H", "signature": "#define EDITOR_H"}]}, {"doc": "include \"kernel.h\" include \"minifs.h\" ================================================================", "id": "fs/kfile.c", "kind": "module", "label": "kfile.c", "language": "c", "sha256": "0217b352ddeec83e", "symbol_count": 22, "symbols": [{"kind": "function", "line": 14, "name": "kfile_stdin", "signature": "KFILE *kfile_stdin(void)"}, {"kind": "function", "line": 16, "name": "kfile_stdout", "signature": "KFILE *kfile_stdout(void)"}, {"kind": "function", "line": 17, "name": "kfile_stderr", "signature": "KFILE *kfile_stderr(void)"}, {"kind": "function", "line": 33, "name": "kfopen", "signature": "KFILE *kfopen(const char *path, const char *mode)"}, {"kind": "function", "line": 105, "name": "kfclose", "signature": "int kfclose(KFILE *f)"}, {"kind": "function", "line": 118, "name": "kfgetc", "signature": "int kfgetc(KFILE *f)"}, {"kind": "function", "line": 139, "name": "kfgets", "signature": "char *kfgets(char *buf, int size, KFILE *f)"}, {"kind": "function", "line": 153, "name": "kfungetc", "signature": "int kfungetc(int c, KFILE *f)"}, {"kind": "function", "line": 159, "name": "kfread", "signature": "unsigned long kfread(void *ptr, unsigned long size, unsigned long n, KFILE *f)"}, {"kind": "function", "line": 181, "name": "kfwrite", "signature": "unsigned long kfwrite(const void *ptr, unsigned long size, unsigned long n, KFILE *f)"}, {"kind": "function", "line": 210, "name": "kfseek", "signature": "int kfseek(KFILE *f, long offset, int whence)"}, {"kind": "function", "line": 224, "name": "kftell", "signature": "long kftell(KFILE *f)"}, {"kind": "function", "line": 228, "name": "kfflush", "signature": "int kfflush(KFILE *f)"}, {"kind": "function", "line": 251, "name": "kfputs", "signature": "int kfputs(const char *s, KFILE *f)"}, {"kind": "function", "line": 257, "name": "kfputc", "signature": "int kfputc(int c, KFILE *f)"}, {"kind": "function", "line": 262, "name": "krewind", "signature": "void krewind(KFILE *f)"}, {"kind": "function", "line": 41, "name": "kmemset", "signature": "kmemset(f, 0, sizeof(KFILE));"}, {"kind": "function", "line": 54, "name": "kmemcpy", "signature": "kmemcpy(parent, resolved, plen);"}, {"kind": "function", "line": 115, "name": "kfree", "signature": "kfree(f);"}, {"kind": "function", "line": 129, "name": "minifs_read", "signature": "minifs_read(f->minifs_ino, &c, f->pos, 1);"}, {"kind": "function", "line": 135, "name": "ramdisk_read", "signature": "ramdisk_read(f->rf, &c, f->pos, 1);"}, {"kind": "function", "line": 246, "name": "ramdisk_write", "signature": "ramdisk_write(f->rf, f->wbuf, base, f->wsize);"}]}, {"doc": "MiniFS: minimal Unix-like filesystem for MiniOS.", "id": "fs/minifs.c", "kind": "module", "label": "minifs.c", "language": "c", "sha256": "897af518ee80ab5c", "symbol_count": 66, "symbols": [{"doc": "#define DE_NAME_W(de) ((char *)((de) + 1)) void minifs_journal_touch(unsigned int phys); void minifs_journal_clear(void); void minifs_journal_abort(void); static MiniFSSuper fs_sb; static unsigned char *fs_ibitmap; static unsigned char *fs_bbitmap; static unsigned int fs_lba_start; static unsigned int fs_next_txn; static int fs_mounted; /* ---- Compression wrappers ----", "kind": "function", "line": 27, "name": "minifs_compress", "signature": "unsigned int minifs_compress(const void *src, unsigned int src_len,\n ..."}, {"kind": "function", "line": 37, "name": "minifs_decompress", "signature": "unsigned int minifs_decompress(const void *src, unsigned int src_len,\n ..."}, {"kind": "function", "line": 48, "name": "minifs_crc16", "signature": "static unsigned short minifs_crc16(const void *data, unsigned int len)"}, {"kind": "function", "line": 60, "name": "minifs_crc32", "signature": "static unsigned int minifs_crc32(const void *data, unsigned int len)"}, {"kind": "function", "line": 72, "name": "roundup4", "signature": "static unsigned int roundup4(unsigned int v)"}, {"kind": "function", "line": 74, "name": "div_round_up", "signature": "static unsigned int div_round_up(unsigned int n, unsigned int d)"}, {"doc": "crc ^= (unsigned int)p[i]; for (j = 0; j < 8; j++) crc = (crc >> 1) ^ ((crc & 1) ? 0xEDB88320 : 0); } return crc ^ 0xFFFFFFFF; } static unsigned int roundup4(unsigned int v) { return (v + 3) & ~3u; } static unsigned int div_round_up(unsigned int n, unsigned int d) { return (n + d - 1) / d; } /* ---- Superblock I/O ----", "kind": "function", "line": 80, "name": "fs_write_super", "signature": "static int fs_write_super(void)"}, {"doc": "} /* ---- Superblock I/O ---- static int fs_write_super(void) { unsigned char buf[MINIFS_BLOCK_SIZE]; kmemset(buf, 0, MINIFS_BLOCK_SIZE); fs_sb.checksum = minifs_crc16(&fs_sb, sizeof(MiniFSSuper) - 2); kmemcpy(buf, &fs_sb, sizeof(MiniFSSuper)); return block_write(0, buf); } /* ---- Inode I/O ----", "kind": "function", "line": 91, "name": "fs_read_inode", "signature": "static int fs_read_inode(unsigned int num, MiniFSInode *out)"}, {"kind": "function", "line": 100, "name": "fs_write_inode", "signature": "static int fs_write_inode(unsigned int num, const MiniFSInode *in)"}, {"doc": "return 0; } static int fs_write_inode(unsigned int num, const MiniFSInode *in) { unsigned int block = fs_sb.inode_table_start + (num / MINIFS_INODES_PER_BLOCK); minifs_journal_touch(block); unsigned int offset = (num % MINIFS_INODES_PER_BLOCK) * sizeof(MiniFSInode); unsigned char buf[MINIFS_BLOCK_SIZE]; if (block_read(block, buf) < 0) return -1; kmemcpy(buf + offset, in, sizeof(MiniFSInode)); return block_write(block, buf); } /* ---- Bitmap helpers ----", "kind": "function", "line": 112, "name": "bm_test", "signature": "static int bm_test(unsigned char *bm, unsigned int bit)"}, {"kind": "function", "line": 116, "name": "bm_set", "signature": "static void bm_set(unsigned char *bm, unsigned int bit)"}, {"kind": "function", "line": 120, "name": "bm_clear", "signature": "static void bm_clear(unsigned char *bm, unsigned int bit)"}, {"doc": "static int bm_test(unsigned char *bm, unsigned int bit) { return (bm[bit / 8] >> (bit % 8)) & 1; } static void bm_set(unsigned char *bm, unsigned int bit) { bm[bit / 8] |= (unsigned char)(1u << (bit % 8)); } static void bm_clear(unsigned char *bm, unsigned int bit) { bm[bit / 8] &= (unsigned char)~(1u << (bit % 8)); } /* ---- Block allocator ----", "kind": "function", "line": 126, "name": "minifs_alloc_block", "signature": "int minifs_alloc_block(void)"}, {"kind": "function", "line": 143, "name": "minifs_free_block", "signature": "void minifs_free_block(unsigned int block)"}, {"doc": "fs_sb.first_free_hint = (idx + 1) % total; return (int)idx; } } return -1; } void minifs_free_block(unsigned int block) { if (block >= fs_sb.total_blocks) return; bm_clear(fs_bbitmap, block); fs_sb.free_blocks++; } /* ---- Inode allocator ----", "kind": "function", "line": 151, "name": "minifs_alloc_inode", "signature": "int minifs_alloc_inode(void)"}, {"kind": "function", "line": 163, "name": "minifs_free_inode", "signature": "void minifs_free_inode(int num)"}, {"doc": "fs_sb.free_inodes--; return (int)i; } } return -1; } void minifs_free_inode(int num) { if (num < 0 || (unsigned int)num >= fs_sb.total_inodes) return; bm_clear(fs_ibitmap, (unsigned int)num); fs_sb.free_inodes++; } /* ---- Inode block mapping ----", "kind": "function", "line": 171, "name": "minifs_inode_get_block", "signature": "int minifs_inode_get_block(MiniFSInode *inode, unsigned int logblk,\n un..."}, {"kind": "function", "line": 194, "name": "fs_inode_set_block", "signature": "static int fs_inode_set_block(MiniFSInode *inode, unsigned int logblk,\n ..."}, {"kind": "function", "line": 240, "name": "minifs_inode_alloc_block", "signature": "int minifs_inode_alloc_block(MiniFSInode *inode, unsigned int logblk)"}, {"kind": "function", "line": 254, "name": "fs_inode_free_all_blocks", "signature": "static void fs_inode_free_all_blocks(MiniFSInode *inode)"}, {"kind": "function", "line": 331, "name": "journal_load_super", "signature": "static void journal_load_super(void)"}, {"kind": "function", "line": 347, "name": "journal_save_super", "signature": "static void journal_save_super(unsigned int state)"}, {"kind": "function", "line": 358, "name": "journal_save_entries", "signature": "static void journal_save_entries(void)"}, {"kind": "function", "line": 373, "name": "minifs_journal_begin", "signature": "void minifs_journal_begin(unsigned int txn_id)"}, {"doc": "Deprecated alias: historically took an inode number (wrong layer). * Takes a physical block now; prefer minifs_journal_touch.", "kind": "function", "line": 383, "name": "minifs_journal_add_block", "signature": "void minifs_journal_add_block(unsigned int block)"}, {"doc": "Pre-write barrier: persist the entry array and mark the journal DIRTY before any protected data block is modified. A crash after this * point replays the undo log in minifs_journal_recover.", "kind": "function", "line": 390, "name": "minifs_journal_commit", "signature": "int minifs_journal_commit(unsigned int txn_id)"}, {"doc": "Post-write barrier: the protected writes are all on disk, so the undo * log is no longer needed.", "kind": "function", "line": 400, "name": "minifs_journal_clear", "signature": "void minifs_journal_clear(void)"}, {"doc": "Error path after the DIRTY barrier: restore every snapshotted block from the journal data area, then clear. Only undoes blocks recorded * in the live in-RAM entry array.", "kind": "function", "line": 410, "name": "minifs_journal_abort", "signature": "void minifs_journal_abort(void)"}, {"kind": "function", "line": 432, "name": "first", "signature": "* keep the first (oldest) snapshot. */\nvoid minifs_journal_touch(unsigned int phys)"}, {"doc": "Mount-time recovery: replays the undo log left by a crash between the DIRTY barrier and the CLEAN mark. Every on-disk field is hostile data (a crafted image must not cause arbitrary block overwrites): super checksum, entry count bound, per-entry checksum and the target block range are all validated; invalid entries are skipped and * counted, never applied.", "kind": "function", "line": 470, "name": "minifs_journal_recover", "signature": "void minifs_journal_recover(void)"}, {"doc": "/* Restore the original block content block_read(data_base + i, orig); block_write(e.affected_blocks[0], orig); applied++; } journal_save_super(MINIFS_JSTATE_CLEAN); journal_load_super(); kprintf(\"minifs: journal recovery complete (%u applied, %u skipped)\\n\", applied, skipped); } /* ---- Path resolution ----", "kind": "function", "line": 546, "name": "fs_namecmp", "signature": "static int fs_namecmp(const char *a, unsigned char alen, const char *b)"}, {"kind": "function", "line": 555, "name": "minifs_dir_lookup", "signature": "int minifs_dir_lookup(int dir_ino, const char *name)"}, {"kind": "function", "line": 579, "name": "minifs_dir_add_entry", "signature": "int minifs_dir_add_entry(int dir_ino, const char *name, int child_ino,\n u..."}, {"kind": "function", "line": 696, "name": "minifs_dir_remove_entry", "signature": "int minifs_dir_remove_entry(int dir_ino, const char *name)"}, {"kind": "function", "line": 722, "name": "minifs_dir_read", "signature": "int minifs_dir_read(int dir_ino, int index, MiniFSDirEntry *out, char *name_out)"}, {"doc": "kmemcpy(out, de, sizeof(MiniFSDirEntry)); kmemcpy(name_out, DE_NAME(de), de->name_len); name_out[de->name_len] = 0; return 0; } count++; } off += de->rec_len; } } return -1; } /* ---- Resolve a path to an inode number ----", "kind": "function", "line": 756, "name": "minifs_resolve_path", "signature": "int minifs_resolve_path(const char *path)"}, {"doc": "if (*p) p++; continue; } if (len > MINIFS_MAX_FILENAME) return -1; kmemcpy(namebuf, start, len); namebuf[len] = 0; ino = minifs_dir_lookup(ino, namebuf); if (ino < 0) return -1; if (*p) p++; } return ino; } /* ---- File operations ----", "kind": "function", "line": 789, "name": "minifs_create", "signature": "int minifs_create(const char *path, unsigned short mode)"}, {"kind": "function", "line": 843, "name": "minifs_mkdir", "signature": "int minifs_mkdir(const char *path, unsigned short mode)"}, {"kind": "function", "line": 893, "name": "minifs_unlink", "signature": "int minifs_unlink(const char *path)"}, {"kind": "function", "line": 932, "name": "minifs_rmdir", "signature": "int minifs_rmdir(const char *path)"}, {"kind": "function", "line": 972, "name": "minifs_read", "signature": "int minifs_read(int inode_num, void *buf, unsigned int offset, unsigned int len)"}, {"kind": "function", "line": 1036, "name": "minifs_write", "signature": "int minifs_write(int inode_num, const void *buf, unsigned int offset,\n unsigned i..."}, {"kind": "function", "line": 1119, "name": "minifs_truncate", "signature": "int minifs_truncate(int inode_num, unsigned int new_size)"}, {"kind": "function", "line": 1135, "name": "minifs_stat", "signature": "int minifs_stat(int inode_num, MiniFSInode *out)"}, {"kind": "function", "line": 1139, "name": "minifs_access", "signature": "int minifs_access(const char *path)"}, {"doc": "inode.size = new_size; inode.checksum = minifs_crc32(&inode, sizeof(MiniFSInode) - 4); return fs_write_inode((unsigned int)inode_num, &inode); } int minifs_stat(int inode_num, MiniFSInode *out) { return fs_read_inode((unsigned int)inode_num, out); } int minifs_access(const char *path) { return minifs_resolve_path(path) >= 0 ? 0 : -1; } /* ---- Init / mount / mkfs ----", "kind": "function", "line": 1145, "name": "minifs_init", "signature": "void minifs_init(void)"}, {"kind": "function", "line": 1153, "name": "minifs_get_lba_start", "signature": "unsigned int minifs_get_lba_start(void)"}, {"kind": "function", "line": 1155, "name": "minifs_is_mounted", "signature": "int minifs_is_mounted(void)"}, {"kind": "function", "line": 1156, "name": "minifs_mount", "signature": "int minifs_mount(void)"}, {"kind": "function", "line": 1259, "name": "minifs_mkfs", "signature": "int minifs_mkfs(unsigned int total_blocks)"}, {"kind": "function", "line": 1330, "name": "minifs_sync", "signature": "int minifs_sync(void)"}, {"kind": "function", "line": 1345, "name": "minifs_file_open", "signature": "MiniFSFile *minifs_file_open(int inode_num, int flags)"}, {"kind": "function", "line": 1359, "name": "minifs_file_close", "signature": "int minifs_file_close(MiniFSFile *f)"}, {"kind": "function", "line": 1366, "name": "minifs_get_total_blocks", "signature": "unsigned int minifs_get_total_blocks(void)"}, {"doc": "include \"kernel.h\" include \"minifs.h\" include \"block.h\" include \"ide.h\" include \"lz4_kernel.h\" define DE_NAME(de) ((const char *)((de) + 1)) define DE_NAME_W(de) ((char *)((de) + 1))", "kind": "function", "line": 14, "name": "minifs_journal_touch", "signature": "void minifs_journal_touch(unsigned int phys);"}, {"kind": "function", "line": 84, "name": "kmemset", "signature": "kmemset(buf, 0, MINIFS_BLOCK_SIZE);"}, {"kind": "function", "line": 86, "name": "kmemcpy", "signature": "kmemcpy(buf, &fs_sb, sizeof(MiniFSSuper));"}, {"kind": "function", "line": 87, "name": "block_write", "signature": "return block_write(0, buf);"}, {"kind": "function", "line": 334, "name": "block_read", "signature": "block_read(journal_start, buf);"}, {"kind": "function", "line": 431, "name": "blocks", "signature": "* blocks (self-protection);"}, {"kind": "function", "line": 489, "name": "kprintf", "signature": "kprintf(\"minifs: journal super checksum bad, discarding log\\n\");"}, {"kind": "function", "line": 795, "name": "kstrncpy", "signature": "kstrncpy(parent_buf, path, RAMDISK_FNAME_LEN - 1);"}, {"kind": "function", "line": 1006, "name": "kfree", "signature": "kfree(cbuf);"}, {"kind": "function", "line": 1189, "name": "block_set_base", "signature": "block_set_base(fs_lba_start);"}, {"kind": "macro", "line": 12, "name": "DE_NAME", "signature": "#define DE_NAME(de)"}, {"kind": "macro", "line": 13, "name": "DE_NAME_W", "signature": "#define DE_NAME_W(de)"}]}, {"doc": "include \"kernel.h\" ================================================================", "id": "fs/ramdisk.c", "kind": "module", "label": "ramdisk.c", "language": "c", "sha256": "07ec3ad607a181db", "symbol_count": 25, "symbols": [{"kind": "struct", "line": 14, "name": "RDSuper"}, {"kind": "function", "line": 24, "name": "ramdisk_reserve", "signature": "static int ramdisk_reserve(unsigned long want)"}, {"kind": "function", "line": 42, "name": "ramdisk_setup_from", "signature": "void ramdisk_setup_from(void *data, unsigned size)"}, {"kind": "function", "line": 94, "name": "ramdisk_init", "signature": "void ramdisk_init(void)"}, {"kind": "function", "line": 111, "name": "ramdisk_open", "signature": "RDFile *ramdisk_open(const char *name)"}, {"kind": "function", "line": 121, "name": "ramdisk_read", "signature": "int ramdisk_read(RDFile *f, void *buf, unsigned offset, unsigned len)"}, {"kind": "function", "line": 129, "name": "ramdisk_write", "signature": "int ramdisk_write(RDFile *f, const void *buf, unsigned offset, unsigned len)"}, {"kind": "function", "line": 137, "name": "ramdisk_create", "signature": "RDFile *ramdisk_create(const char *name, unsigned size)"}, {"kind": "function", "line": 151, "name": "ramdisk_resize", "signature": "int ramdisk_resize(RDFile *f, unsigned newsize)"}, {"kind": "function", "line": 188, "name": "ramdisk_list", "signature": "int ramdisk_list(RDFile **out, int max)"}, {"kind": "function", "line": 196, "name": "ramdisk_count", "signature": "int ramdisk_count(void)"}, {"kind": "function", "line": 201, "name": "ramdisk_file_name", "signature": "const char *ramdisk_file_name(int idx)"}, {"kind": "function", "line": 206, "name": "ramdisk_delete", "signature": "int ramdisk_delete(RDFile *f)"}, {"kind": "function", "line": 31, "name": "kprintf", "signature": "kprintf(\"ramdisk: cannot allocate %lu KB (heap exhausted)\\n\", want / 1024);"}, {"kind": "function", "line": 35, "name": "kmemset", "signature": "kmemset(area, 0, want);"}, {"kind": "function", "line": 84, "name": "kmemcpy", "signature": "kmemcpy(f->name, esrc, RAMDISK_FNAME_LEN);"}, {"kind": "function", "line": 103, "name": "kfree", "signature": "kfree(rd);"}, {"kind": "function", "line": 143, "name": "kstrncpy", "signature": "kstrncpy(f->name, name, RAMDISK_FNAME_LEN - 1);"}, {"kind": "function", "line": 170, "name": "kmemmove", "signature": "kmemmove(rd_data + new_end, rd_data + old_end, move_len);"}, {"kind": "macro", "line": 6, "name": "RD_MAGIC", "signature": "#define RD_MAGIC"}, {"kind": "macro", "line": 8, "name": "RD_HEADER_SIZE", "signature": "#define RD_HEADER_SIZE"}, {"kind": "macro", "line": 9, "name": "RD_ENTRY_SIZE", "signature": "#define RD_ENTRY_SIZE"}, {"kind": "macro", "line": 10, "name": "RD_DATA_MIN", "signature": "#define RD_DATA_MIN"}, {"kind": "macro", "line": 11, "name": "RD_DATA_SPARE", "signature": "#define RD_DATA_SPARE"}, {"kind": "macro", "line": 12, "name": "RD_DATA_MAX", "signature": "#define RD_DATA_MAX"}]}, {"doc": "include \"kernel.h\" include \"minifs.h\" ================================================================", "id": "fs/vfs.c", "kind": "module", "label": "vfs.c", "language": "c", "sha256": "6984a72c4ae60c2f", "symbol_count": 37, "symbols": [{"kind": "struct", "line": 11, "name": "vfs_mount_t"}, {"kind": "struct", "line": 82, "name": "ramdisk_handle_t"}, {"kind": "struct", "line": 173, "name": "minifs_handle_t"}, {"kind": "function", "line": 19, "name": "vfs_init", "signature": "void vfs_init(void)"}, {"kind": "function", "line": 24, "name": "vfs_register", "signature": "int vfs_register(const char *prefix, const vfs_ops_t *ops)"}, {"kind": "function", "line": 40, "name": "vfs_unregister", "signature": "int vfs_unregister(const char *prefix)"}, {"kind": "function", "line": 52, "name": "vfs_open", "signature": "int vfs_open(const char *path, int mode, vfs_file_t *f)"}, {"kind": "function", "line": 97, "name": "ramdisk_vfs_open", "signature": "static int ramdisk_vfs_open(const char *path, int mode, void **handle)"}, {"kind": "function", "line": 123, "name": "ramdisk_vfs_read", "signature": "static int ramdisk_vfs_read(void *handle, void *buf, unsigned long pos, unsigned long len)"}, {"kind": "function", "line": 132, "name": "ramdisk_vfs_write", "signature": "static int ramdisk_vfs_write(void *handle, const void *buf, unsigned long pos, unsigned long len)"}, {"kind": "function", "line": 140, "name": "ramdisk_vfs_close", "signature": "static int ramdisk_vfs_close(void *handle)"}, {"kind": "function", "line": 146, "name": "ramdisk_vfs_fstat", "signature": "static int ramdisk_vfs_fstat(void *handle, unsigned long *size_out)"}, {"kind": "function", "line": 153, "name": "ramdisk_vfs_truncate", "signature": "static int ramdisk_vfs_truncate(void *handle, unsigned long size)"}, {"kind": "function", "line": 177, "name": "minifs_vfs_open", "signature": "static int minifs_vfs_open(const char *path, int mode, void **handle)"}, {"kind": "function", "line": 205, "name": "minifs_vfs_read", "signature": "static int minifs_vfs_read(void *handle, void *buf, unsigned long pos, unsigned long len)"}, {"kind": "function", "line": 214, "name": "minifs_vfs_write", "signature": "static int minifs_vfs_write(void *handle, const void *buf, unsigned long pos, unsigned long len)"}, {"kind": "function", "line": 222, "name": "minifs_vfs_close", "signature": "static int minifs_vfs_close(void *handle)"}, {"kind": "function", "line": 228, "name": "minifs_vfs_fstat", "signature": "static int minifs_vfs_fstat(void *handle, unsigned long *size_out)"}, {"kind": "function", "line": 235, "name": "minifs_vfs_truncate", "signature": "static int minifs_vfs_truncate(void *handle, unsigned long size)"}, {"kind": "function", "line": 256, "name": "fs_resolve", "signature": "int fs_resolve(const char *path, char *out, unsigned cap)"}, {"kind": "function", "line": 289, "name": "fs_dir_exists", "signature": "int fs_dir_exists(const char *dir)"}, {"kind": "function", "line": 314, "name": "fs_is_dir", "signature": "int fs_is_dir(const char *resolved)"}, {"kind": "function", "line": 327, "name": "minifs_mkdir_p", "signature": "int minifs_mkdir_p(const char *resolved)"}, {"kind": "function", "line": 350, "name": "vfs_register_builtins", "signature": "void vfs_register_builtins(void)"}, {"doc": "================================================================ Facade dispatch: pure ops-table calls, no filesystem branches. A caller holding a vnode never asks which driver backs it; that is the Open/Closed guarantee. All paths fail closed (-1) on a null vnode, a null ops table or a missing operation. * ================================================================", "kind": "function", "line": 363, "name": "vfs_read", "signature": "int vfs_read(vfs_file_t *f, void *buf, unsigned long len)"}, {"kind": "function", "line": 372, "name": "vfs_write", "signature": "int vfs_write(vfs_file_t *f, const void *buf, unsigned long len)"}, {"kind": "function", "line": 381, "name": "vfs_close", "signature": "int vfs_close(vfs_file_t *f)"}, {"kind": "function", "line": 390, "name": "vfs_fstat", "signature": "int vfs_fstat(vfs_file_t *f, unsigned long *size_out)"}, {"kind": "function", "line": 22, "name": "kmemset", "signature": "kmemset(vfs_mounts, 0, sizeof(vfs_mounts));"}, {"kind": "function", "line": 30, "name": "kstrncpy", "signature": "kstrncpy(vfs_mounts[i].prefix, prefix, VFS_PREFIX_LEN - 1);"}, {"kind": "function", "line": 108, "name": "kmemcpy", "signature": "kmemcpy(parent, path, plen);"}, {"kind": "function", "line": 129, "name": "ramdisk_read", "signature": "ramdisk_read(h->rf, buf, (unsigned)pos, (unsigned)len);"}, {"kind": "function", "line": 137, "name": "ramdisk_write", "signature": "ramdisk_write(h->rf, buf, (unsigned)pos, (unsigned)len);"}, {"kind": "function", "line": 211, "name": "minifs_read", "signature": "minifs_read(h->ino, buf, pos, (unsigned)len);"}, {"kind": "function", "line": 239, "name": "minifs_truncate", "signature": "return minifs_truncate(h->ino, size);"}, {"kind": "macro", "line": 7, "name": "VFS_MAX_MOUNTS", "signature": "#define VFS_MAX_MOUNTS"}, {"kind": "macro", "line": 9, "name": "VFS_PREFIX_LEN", "signature": "#define VFS_PREFIX_LEN"}]}, {"doc": "zip.c — the unzip/zip shell builtins over the miniz zip library.", "id": "fs/zip.c", "kind": "module", "label": "zip.c", "language": "c", "sha256": "88a1eebead812f4c", "symbol_count": 19, "symbols": [{"doc": "Read a whole file (ramdisk first, MiniFS fallback) into a fresh kernel buffer, growing until the read stops making progress. The buffer is bounded by the file size, so a hostile file cannot drive an oversized * allocation. Returns 0 on failure.", "kind": "function", "line": 25, "name": "zip_read_whole", "signature": "static unsigned char *zip_read_whole(const char *path, unsigned long *size)"}, {"kind": "function", "line": 50, "name": "marker", "signature": "* marker (trailing '/') is preserved by the caller, not here. */\nstatic int zip_sanitize_name(con..."}, {"doc": "Build the combined extraction path: destdir (already resolved, may be \"\") joined with the sanitized entry name. Returns 1 and fills `out` when the * path fits.", "kind": "function", "line": 79, "name": "zip_build_path", "signature": "static int zip_build_path(const char *destdir, const char *name, char *out)"}, {"doc": "Create every directory component of `dir` (a resolved, slash-separated name with no trailing '/'), including `dir` itself, as ramdisk directory * markers. Returns 1 on success; the root (empty) always succeeds.", "kind": "function", "line": 95, "name": "zip_ensure_dir_tree", "signature": "static int zip_ensure_dir_tree(const char *dir)"}, {"doc": "Extract one archive entry under destdir. Junk entries (empty or '.'-only * names) are skipped and count as success. Returns 1 on success.", "kind": "function", "line": 117, "name": "zip_do_entry", "signature": "static int zip_do_entry(mz_zip_archive *zip, mz_uint idx, const char *destdir)"}, {"doc": "if (!data) return 0; if (n != usize) { mz_free(data); return 0; } f = kfopen(resolved, \"w\"); if (!f) { mz_free(data); return 0; } rc = (kfwrite(data, 1, usize, f) == usize) ? 0 : -1; if (kfclose(f) != 0) rc = -1; mz_free(data); if (rc != 0) return 0; kprintf(\" %-24s %lu bytes\\n\", resolved, usize); } return 1; } /* unzip [dir] — extract; unzip -l — list.", "kind": "function", "line": 176, "name": "shell_cmd_unzip", "signature": "void shell_cmd_unzip(int argc, char **argv)"}, {"doc": "zip — store each file (under its sanitized name) into * a new archive.", "kind": "function", "line": 254, "name": "shell_cmd_zip", "signature": "void shell_cmd_zip(int argc, char **argv)"}, {"kind": "function", "line": 7, "name": "root", "signature": "* names are hostile data: each is normalized to forward slashes and rejected * when it escapes the extraction root (absolute paths, '.'/'..' components, * empty names), so a crafted archive can never "}, {"doc": "Both builtins work whole-file in memory over the unified file API, matching the compression tools contract: an archive is validated before any entry is published, output is written only after the whole archive was read, and every failure path reports a diagnostic and releases. Entry names are hostile data: each is normalized to forward slashes and rejected when it escapes the extraction root (absolute paths, '.'/'..' components, empty names), so a crafted archive can never write outside the directory the user named. miniz runs on the kernel heap (see third_party/miniz/miniz_impl.c); this file only calls its public API. include \"kernel.h\" include \"miniz.h\"", "kind": "function", "line": 17, "name": "mz_zip_writer_mem_ptr", "signature": "void *mz_zip_writer_mem_ptr(mz_zip_archive *pZip);"}, {"kind": "function", "line": 19, "name": "mz_zip_writer_mem_size", "signature": "size_t mz_zip_writer_mem_size(mz_zip_archive *pZip);"}, {"kind": "function", "line": 41, "name": "kfclose", "signature": "kfclose(f);"}, {"kind": "function", "line": 68, "name": "kmemcpy", "signature": "kmemcpy(dst + len, start, clen);"}, {"kind": "function", "line": 168, "name": "mz_free", "signature": "mz_free(data);"}, {"kind": "function", "line": 170, "name": "kprintf", "signature": "kprintf(\" %-24s %lu bytes\\n\", resolved, usize);"}, {"kind": "function", "line": 219, "name": "kmemset", "signature": "kmemset(&zip, 0, sizeof(zip));"}, {"kind": "function", "line": 222, "name": "kfree", "signature": "kfree(abuf);"}, {"kind": "function", "line": 248, "name": "mz_zip_reader_end", "signature": "mz_zip_reader_end(&zip);"}, {"kind": "function", "line": 264, "name": "vga_puts", "signature": "vga_puts(\"zip: cannot initialise archive\\n\");"}, {"kind": "function", "line": 310, "name": "mz_zip_writer_end", "signature": "mz_zip_writer_end(&zip);"}]}, {"doc": "ifndef FUTEX_H define FUTEX_H Docstring: futex.h -- Fast userspace mutex sleep/wake contract.", "id": "futex.h", "kind": "module", "label": "futex.h", "language": "h", "sha256": "29f8ab7a62e715fd", "symbol_count": 17, "symbols": [{"kind": "struct", "line": 68, "name": "futex_bucket_t"}, {"kind": "function", "line": 73, "name": "futex_init", "signature": "void futex_init(void);"}, {"kind": "function", "line": 75, "name": "futex_wait", "signature": "long futex_wait(unsigned long uaddr, int val);"}, {"kind": "function", "line": 76, "name": "futex_wake", "signature": "long futex_wake(unsigned long uaddr, int n);"}, {"kind": "function", "line": 79, "name": "FUTEX_PRIVATE_FLAG", "signature": "* FUTEX_PRIVATE_FLAG (process-private is served on the same global * buckets: same semantics, no isolation shortcut). Returns -1 for * anything unserved (REQUEUE, CMP_REQUEUE, WAKE_OP, WAIT_BITSET, * "}, {"doc": "Decode a Linux futex(2) op to LINUX_FUTEX_WAIT/WAKE, masking FUTEX_PRIVATE_FLAG (process-private is served on the same global buckets: same semantics, no isolation shortcut). Returns -1 for anything unserved (REQUEUE, CMP_REQUEUE, WAKE_OP, WAIT_BITSET, PI/PP...). Host-tested (tests/test_futex.c); the kernel errno mapping * lives in syscalls.c, which is not host-compilable.", "kind": "function", "line": 84, "name": "futex_linux_cmd", "signature": "int futex_linux_cmd(long op);"}, {"kind": "macro", "line": 2, "name": "FUTEX_H", "signature": "#define FUTEX_H"}, {"kind": "macro", "line": 50, "name": "FUTEX_BUCKETS", "signature": "#define FUTEX_BUCKETS"}, {"kind": "macro", "line": 52, "name": "FUTEX_BUCKET_MASK", "signature": "#define FUTEX_BUCKET_MASK"}, {"kind": "macro", "line": 53, "name": "FUTEX_HASH_GOLDEN", "signature": "#define FUTEX_HASH_GOLDEN"}, {"kind": "macro", "line": 54, "name": "FUTEX_OK", "signature": "#define FUTEX_OK"}, {"kind": "macro", "line": 56, "name": "FUTEX_NOMATCH", "signature": "#define FUTEX_NOMATCH"}, {"kind": "macro", "line": 57, "name": "FUTEX_NOPROC", "signature": "#define FUTEX_NOPROC"}, {"kind": "macro", "line": 58, "name": "FUTEX_WAKE_ALL", "signature": "#define FUTEX_WAKE_ALL"}, {"kind": "macro", "line": 64, "name": "LINUX_FUTEX_WAIT", "signature": "#define LINUX_FUTEX_WAIT"}, {"kind": "macro", "line": 65, "name": "LINUX_FUTEX_WAKE", "signature": "#define LINUX_FUTEX_WAKE"}, {"kind": "macro", "line": 66, "name": "LINUX_FUTEX_PRIVATE_FLAG", "signature": "#define LINUX_FUTEX_PRIVATE_FLAG"}]}, {"id": "gen_minifs.py", "kind": "module", "label": "gen_minifs.py", "language": "py", "sha256": "e7d4cac4d07804fb", "symbol_count": 0, "symbols": []}, {"doc": "ifndef IDE_H define IDE_H IDE/ATA PIO driver for MiniOS.", "id": "ide.h", "kind": "module", "label": "ide.h", "language": "h", "sha256": "41d0101708d35f30", "symbol_count": 35, "symbols": [{"doc": "#define IDE_CMD_FLUSH 0xE7 /* FLUSH CACHE /* Drive/Head register bits #define IDE_DRIVE_LBA 0x40 /* LBA mode #define IDE_DRIVE_MASTER 0xA0 /* master drive #define IDE_DRIVE_SLAVE 0xB0 /* slave drive /* Timeout in PIT ticks (approximate) #define IDE_TIMEOUT 1000000 /* Sector size in bytes #define IDE_SECTOR_SIZE 512 /* Initialize the IDE driver: probe, IDENTIFY, report geometry.", "kind": "function", "line": 49, "name": "ide_init", "signature": "void ide_init(void);"}, {"doc": "Read/write sectors using 28-bit LBA. * Returns 0 on success, -1 on error.", "kind": "function", "line": 53, "name": "ide_read_sectors", "signature": "int ide_read_sectors(unsigned int lba, unsigned int count, void *buf);"}, {"kind": "function", "line": 54, "name": "ide_write_sectors", "signature": "int ide_write_sectors(unsigned int lba, unsigned int count, const void *buf);"}, {"doc": "Read/write sectors using 28-bit LBA. * Returns 0 on success, -1 on error. int ide_read_sectors(unsigned int lba, unsigned int count, void *buf); int ide_write_sectors(unsigned int lba, unsigned int count, const void *buf); /* Convenience: single sector read/write.", "kind": "function", "line": 57, "name": "ide_read_sector", "signature": "int ide_read_sector(unsigned int lba, void *buf);"}, {"kind": "function", "line": 58, "name": "ide_write_sector", "signature": "int ide_write_sector(unsigned int lba, const void *buf);"}, {"doc": "Read/write sectors using 28-bit LBA. * Returns 0 on success, -1 on error. int ide_read_sectors(unsigned int lba, unsigned int count, void *buf); int ide_write_sectors(unsigned int lba, unsigned int count, const void *buf); /* Convenience: single sector read/write. int ide_read_sector(unsigned int lba, void *buf); int ide_write_sector(unsigned int lba, const void *buf); /* Returns total sectors on the disk, or 0 if not detected.", "kind": "function", "line": 61, "name": "ide_total_sectors", "signature": "unsigned int ide_total_sectors(void);"}, {"doc": "Read/write sectors using 28-bit LBA. * Returns 0 on success, -1 on error. int ide_read_sectors(unsigned int lba, unsigned int count, void *buf); int ide_write_sectors(unsigned int lba, unsigned int count, const void *buf); /* Convenience: single sector read/write. int ide_read_sector(unsigned int lba, void *buf); int ide_write_sector(unsigned int lba, const void *buf); /* Returns total sectors on the disk, or 0 if not detected. unsigned int ide_total_sectors(void); /* Returns 1 if a disk was successfully detected.", "kind": "function", "line": 64, "name": "ide_present", "signature": "int ide_present(void);"}, {"doc": "Publish the Strategy ops table to the device registry (driver.h). * Called from ide_init; re-registration is a no-op (duplicate refused).", "kind": "function", "line": 68, "name": "ide_register_device", "signature": "void ide_register_device(void);"}, {"kind": "macro", "line": 2, "name": "IDE_H", "signature": "#define IDE_H"}, {"kind": "macro", "line": 9, "name": "IDE_PRIMARY_BASE", "signature": "#define IDE_PRIMARY_BASE"}, {"kind": "macro", "line": 10, "name": "IDE_PRIMARY_CTRL", "signature": "#define IDE_PRIMARY_CTRL"}, {"kind": "macro", "line": 13, "name": "IDE_REG_DATA", "signature": "#define IDE_REG_DATA"}, {"kind": "macro", "line": 14, "name": "IDE_REG_ERROR", "signature": "#define IDE_REG_ERROR"}, {"kind": "macro", "line": 15, "name": "IDE_REG_SECCOUNT", "signature": "#define IDE_REG_SECCOUNT"}, {"kind": "macro", "line": 16, "name": "IDE_REG_LBA_LO", "signature": "#define IDE_REG_LBA_LO"}, {"kind": "macro", "line": 17, "name": "IDE_REG_LBA_MID", "signature": "#define IDE_REG_LBA_MID"}, {"kind": "macro", "line": 18, "name": "IDE_REG_LBA_HI", "signature": "#define IDE_REG_LBA_HI"}, {"kind": "macro", "line": 19, "name": "IDE_REG_DRIVE", "signature": "#define IDE_REG_DRIVE"}, {"kind": "macro", "line": 20, "name": "IDE_REG_STATUS", "signature": "#define IDE_REG_STATUS"}, {"kind": "macro", "line": 21, "name": "IDE_REG_ALTSTATUS", "signature": "#define IDE_REG_ALTSTATUS"}, {"kind": "macro", "line": 24, "name": "IDE_STATUS_ERR", "signature": "#define IDE_STATUS_ERR"}, {"kind": "macro", "line": 25, "name": "IDE_STATUS_DRQ", "signature": "#define IDE_STATUS_DRQ"}, {"kind": "macro", "line": 26, "name": "IDE_STATUS_SRV", "signature": "#define IDE_STATUS_SRV"}, {"kind": "macro", "line": 27, "name": "IDE_STATUS_DF", "signature": "#define IDE_STATUS_DF"}, {"kind": "macro", "line": 28, "name": "IDE_STATUS_RDY", "signature": "#define IDE_STATUS_RDY"}, {"kind": "macro", "line": 29, "name": "IDE_STATUS_BSY", "signature": "#define IDE_STATUS_BSY"}, {"kind": "macro", "line": 32, "name": "IDE_CMD_READ", "signature": "#define IDE_CMD_READ"}, {"kind": "macro", "line": 33, "name": "IDE_CMD_WRITE", "signature": "#define IDE_CMD_WRITE"}, {"kind": "macro", "line": 34, "name": "IDE_CMD_IDENTIFY", "signature": "#define IDE_CMD_IDENTIFY"}, {"kind": "macro", "line": 35, "name": "IDE_CMD_FLUSH", "signature": "#define IDE_CMD_FLUSH"}, {"kind": "macro", "line": 38, "name": "IDE_DRIVE_LBA", "signature": "#define IDE_DRIVE_LBA"}, {"kind": "macro", "line": 39, "name": "IDE_DRIVE_MASTER", "signature": "#define IDE_DRIVE_MASTER"}, {"kind": "macro", "line": 40, "name": "IDE_DRIVE_SLAVE", "signature": "#define IDE_DRIVE_SLAVE"}, {"kind": "macro", "line": 43, "name": "IDE_TIMEOUT", "signature": "#define IDE_TIMEOUT"}, {"kind": "macro", "line": 46, "name": "IDE_SECTOR_SIZE", "signature": "#define IDE_SECTOR_SIZE"}]}, {"id": "install.sh", "kind": "module", "label": "install.sh", "language": "sh", "sha256": "c907d80fd6734993", "symbol_count": 0, "symbols": []}, {"doc": "Docstring: kernel/batch.c -- Ordered batch executor.", "id": "kernel/batch.c", "kind": "module", "label": "batch.c", "language": "c", "sha256": "ce040dbb0abc0441", "symbol_count": 1, "symbols": [{"doc": "Docstring: Run ops in order, storing one result per index. Returns BATCH_OK when every operation dispatched without a negative result. On the first negative dispatch result, stops immediately and returns that error. completed always reports the number of successful operations, including on early refusal (zero). A null dispatch table entry for a known opcode is treated as BATCH_ERR_OPCODE, never called.", "kind": "function", "line": 19, "name": "batch_exec", "signature": "long batch_exec(const batch_op_t *ops, long *results, int count,\n int *completed, ..."}]}, {"doc": "include \"kernel.h\" include \"sched.h\" include \"vga_fb.h\" define XXH_STATIC_LINKING_ONLY include \"xxhash.h\" include \"stb/stb_api.h\" console.c -- Execution-context output: text console, capture, libc names.", "id": "kernel/console.c", "kind": "module", "label": "console.c", "language": "c", "sha256": "4e456860ed402de6", "symbol_count": 31, "symbols": [{"kind": "function", "line": 17, "name": "vga_get_x", "signature": "int vga_get_x(void)"}, {"kind": "function", "line": 19, "name": "vga_get_y", "signature": "int vga_get_y(void)"}, {"kind": "function", "line": 20, "name": "vga_set_xy", "signature": "void vga_set_xy(int x, int y)"}, {"kind": "function", "line": 21, "name": "vga_get_color", "signature": "char vga_get_color(void)"}, {"kind": "function", "line": 22, "name": "vga_offset", "signature": "static inline unsigned vga_offset(int x, int y)"}, {"kind": "function", "line": 24, "name": "vga_clear", "signature": "void vga_clear(void)"}, {"kind": "function", "line": 35, "name": "vga_set_cursor", "signature": "void vga_set_cursor(int x, int y)"}, {"kind": "function", "line": 55, "name": "vga_scroll", "signature": "void vga_scroll(void)"}, {"kind": "function", "line": 74, "name": "vga_newline", "signature": "void vga_newline(void)"}, {"kind": "function", "line": 80, "name": "vga_cursor_enable", "signature": "void vga_cursor_enable(int on)"}, {"kind": "function", "line": 87, "name": "vga_raw_space", "signature": "static void vga_raw_space(void)"}, {"kind": "function", "line": 104, "name": "redir_grow", "signature": "static int redir_grow(void)"}, {"kind": "function", "line": 114, "name": "redirect_active", "signature": "int redirect_active(void)"}, {"kind": "function", "line": 116, "name": "redirect_putc", "signature": "static int redirect_putc(char c)"}, {"kind": "function", "line": 123, "name": "redirect_suspend", "signature": "int redirect_suspend(void)"}, {"kind": "function", "line": 129, "name": "redirect_resume", "signature": "void redirect_resume(int was)"}, {"kind": "function", "line": 133, "name": "redirect_begin", "signature": "int redirect_begin(void)"}, {"kind": "function", "line": 141, "name": "redirect_commit", "signature": "int redirect_commit(const char *path, int append_mode)"}, {"kind": "function", "line": 160, "name": "vga_putc", "signature": "void vga_putc(char c)"}, {"kind": "function", "line": 204, "name": "vga_puts", "signature": "void vga_puts(const char *s)"}, {"kind": "function", "line": 208, "name": "register_libc_symbols", "signature": "void register_libc_symbols(void)"}, {"kind": "function", "line": 33, "name": "sb_reset", "signature": "sb_reset();"}, {"kind": "function", "line": 40, "name": "volatile", "signature": "__asm__ volatile( \"movw $0x3D4, %%dx\\n\\t\" \"movb $0x0F, %%al\\n\\t\" \"outb %%al, %%dx\\n\" \"movb %b0, %%al\\n\\t\" \"outb %%al, %%dx\\n\" \"movb $0x0E, %%al\\n\\t\" \"outb %%al, %%dx\\n\" \"movb %b1, %%al\\n\\t\" \"outb %%al"}, {"kind": "function", "line": 58, "name": "sb_capture_row0", "signature": "sb_capture_row0();"}, {"kind": "function", "line": 82, "name": "outb", "signature": "outb(0x3D4, 0x0A);"}, {"kind": "function", "line": 164, "name": "serial_putc", "signature": "serial_putc(c);"}, {"kind": "function", "line": 167, "name": "vga_fb_putc_term", "signature": "vga_fb_putc_term(c);"}, {"kind": "function", "line": 210, "name": "k_register_symbol", "signature": "k_register_symbol(\"strlen\", (void *)kstrlen);"}, {"kind": "macro", "line": 4, "name": "XXH_STATIC_LINKING_ONLY", "signature": "#define XXH_STATIC_LINKING_ONLY"}, {"kind": "macro", "line": 95, "name": "REDIR_INITIAL_CAP", "signature": "#define REDIR_INITIAL_CAP"}, {"kind": "macro", "line": 97, "name": "REDIR_MAX_BYTES", "signature": "#define REDIR_MAX_BYTES"}]}, {"id": "kernel/cvm_host.c", "kind": "module", "label": "cvm_host.c", "language": "c", "sha256": "ac688b0394a4d031", "symbol_count": 55, "symbols": [{"kind": "function", "line": 21, "name": "n_strcmp", "signature": "static int64_t n_strcmp(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 27, "name": "n_strncmp", "signature": "static int64_t n_strncmp(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 34, "name": "n_strcpy", "signature": "static int64_t n_strcpy(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 40, "name": "n_strncpy", "signature": "static int64_t n_strncpy(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 47, "name": "n_memcpy", "signature": "static int64_t n_memcpy(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 54, "name": "n_memset", "signature": "static int64_t n_memset(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 60, "name": "n_memmove", "signature": "static int64_t n_memmove(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 67, "name": "n_memcmp", "signature": "static int64_t n_memcmp(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 74, "name": "n_strchr", "signature": "static int64_t n_strchr(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 80, "name": "n_strstr", "signature": "static int64_t n_strstr(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 87, "name": "n_malloc", "signature": "static int64_t n_malloc(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 92, "name": "n_free", "signature": "static int64_t n_free(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 97, "name": "n_calloc", "signature": "static int64_t n_calloc(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 105, "name": "n_realloc", "signature": "static int64_t n_realloc(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 113, "name": "n_exit", "signature": "static int64_t n_exit(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 120, "name": "n_fopen", "signature": "static int64_t n_fopen(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 127, "name": "n_fclose", "signature": "static int64_t n_fclose(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 133, "name": "n_fread", "signature": "static int64_t n_fread(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 140, "name": "n_fwrite", "signature": "static int64_t n_fwrite(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 147, "name": "n_fseek", "signature": "static int64_t n_fseek(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 153, "name": "n_ftell", "signature": "static int64_t n_ftell(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 159, "name": "n_rewind", "signature": "static int64_t n_rewind(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 166, "name": "n_fputs", "signature": "static int64_t n_fputs(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 172, "name": "n_fputc", "signature": "static int64_t n_fputc(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 178, "name": "n_fgetc", "signature": "static int64_t n_fgetc(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 184, "name": "n_ungetc", "signature": "static int64_t n_ungetc(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 190, "name": "n_fflush", "signature": "static int64_t n_fflush(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 196, "name": "n_putchar", "signature": "static int64_t n_putchar(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 203, "name": "n_write", "signature": "static int64_t n_write(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 212, "name": "n_read", "signature": "static int64_t n_read(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 227, "name": "n_puts", "signature": "static int64_t n_puts(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 235, "name": "n_atol", "signature": "static int64_t n_atol(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 248, "name": "n_strtol", "signature": "static int64_t n_strtol(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 261, "name": "n_stderr_addr", "signature": "static int64_t n_stderr_addr(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 266, "name": "n_stdout_addr", "signature": "static int64_t n_stdout_addr(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 271, "name": "n_stdin_addr", "signature": "static int64_t n_stdin_addr(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 276, "name": "kout_char", "signature": "static void kout_char(void *ctx, char c)"}, {"kind": "function", "line": 282, "name": "kout_uint", "signature": "static void kout_uint(void *ctx, unsigned long long v, int base, int upper)"}, {"kind": "function", "line": 295, "name": "kformat", "signature": "static void kformat(void *ctx, const char *fmt, uint64_t *argv, int argc)"}, {"kind": "function", "line": 361, "name": "n_fprintf", "signature": "static int64_t n_fprintf(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 368, "name": "n_printf", "signature": "static int64_t n_printf(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 375, "name": "n_sprintf", "signature": "static int64_t n_sprintf(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 383, "name": "n_snprintf", "signature": "static int64_t n_snprintf(void *vm, int ac, uint64_t *av)"}, {"kind": "function", "line": 391, "name": "register_host_natives", "signature": "static void register_host_natives(CvmState *vm)"}, {"kind": "function", "line": 436, "name": "cvm_main", "signature": "int cvm_main(int argc, char **argv)"}, {"kind": "function", "line": 163, "name": "rewind", "signature": "rewind((FILE *)(uintptr_t)av[0]);"}, {"kind": "function", "line": 200, "name": "fputc", "signature": "fputc((int)(av[0] & 255), stdout);"}, {"kind": "function", "line": 231, "name": "fputs", "signature": "fputs((const char *)(uintptr_t)av[0], stdout);"}, {"kind": "function", "line": 393, "name": "cvm_register_native", "signature": "cvm_register_native(vm, \"strlen\", n_strlen);"}, {"kind": "function", "line": 442, "name": "puts", "signature": "puts(\"cvm: cannot open module\");"}, {"kind": "function", "line": 445, "name": "fseek", "signature": "fseek(f, 0, 2);"}, {"kind": "function", "line": 450, "name": "fclose", "signature": "fclose(f);"}, {"kind": "function", "line": 460, "name": "free", "signature": "free(buf);"}, {"kind": "function", "line": 474, "name": "cvm_destroy", "signature": "cvm_destroy(vm);"}, {"kind": "function", "line": 495, "name": "printf", "signature": "printf(\"cvm: runtime error: %s\\n\", cvm_strerror(rc));"}]}, {"doc": "include \"kernel.h\" include \"shell.h\" include \"editor.h\" ================================================================", "id": "kernel/editor.c", "kind": "module", "label": "editor.c", "language": "c", "sha256": "4028a42d8a658937", "symbol_count": 31, "symbols": [{"kind": "struct", "line": 24, "name": "EditLine"}, {"kind": "struct", "line": 29, "name": "EditBuf"}, {"kind": "function", "line": 37, "name": "edit_alloc", "signature": "static EditBuf *edit_alloc(const char *fname)"}, {"kind": "function", "line": 54, "name": "edit_free", "signature": "static void edit_free(EditBuf *e)"}, {"kind": "function", "line": 60, "name": "edit_load", "signature": "static int edit_load(EditBuf *e)"}, {"kind": "function", "line": 96, "name": "edit_save", "signature": "static int edit_save(EditBuf *e)"}, {"kind": "function", "line": 110, "name": "edit_print", "signature": "static void edit_print(EditBuf *e, int idx)"}, {"doc": "List a (possibly empty) range [start, end], both 1-based inclusive. A * single argument lists from that line; no argument lists everything.", "kind": "function", "line": 121, "name": "edit_list", "signature": "static void edit_list(EditBuf *e, int start, int end)"}, {"kind": "function", "line": 132, "name": "edit_set_line", "signature": "static int edit_set_line(EditBuf *e, int idx, const char *text)"}, {"kind": "function", "line": 141, "name": "edit_insert", "signature": "static int edit_insert(EditBuf *e, int idx, const char *text)"}, {"kind": "function", "line": 151, "name": "edit_delete", "signature": "static int edit_delete(EditBuf *e, int idx)"}, {"doc": "Copy a line into a NUL-terminated scratch buffer (lines are otherwise * stored length-prefixed without a terminator).", "kind": "function", "line": 164, "name": "edit_line_cstr", "signature": "static void edit_line_cstr(EditLine *l, char *out)"}, {"kind": "function", "line": 168, "name": "edit_search", "signature": "static void edit_search(EditBuf *e, const char *needle)"}, {"kind": "function", "line": 185, "name": "edit_status", "signature": "static void edit_status(EditBuf *e)"}, {"kind": "function", "line": 193, "name": "edit_usage", "signature": "static void edit_usage(void)"}, {"doc": "A buffer that did not hold the whole file must never be written back: * saving it would drop the part that was never loaded.", "kind": "function", "line": 205, "name": "edit_refuse_save", "signature": "static int edit_refuse_save(EditBuf *e)"}, {"kind": "function", "line": 210, "name": "edit_arg_line", "signature": "static int edit_arg_line(int argc, char **argv, EditBuf *e, int *out)"}, {"kind": "function", "line": 218, "name": "edit_loop", "signature": "static void edit_loop(EditBuf *e)"}, {"kind": "function", "line": 306, "name": "shell_cmd_edit", "signature": "void shell_cmd_edit(int argc, char **argv)"}, {"kind": "function", "line": 43, "name": "kfree", "signature": "kfree(e);"}, {"kind": "function", "line": 50, "name": "kstrncpy", "signature": "kstrncpy(e->fname, fname, RAMDISK_FNAME_LEN - 1);"}, {"kind": "function", "line": 65, "name": "kfclose", "signature": "kfclose(f);"}, {"kind": "function", "line": 113, "name": "kprintf", "signature": "kprintf(\"%4d: \", idx + 1);"}, {"kind": "function", "line": 116, "name": "vga_putc", "signature": "vga_putc('\\n');"}, {"kind": "function", "line": 124, "name": "vga_puts", "signature": "vga_puts(\"(empty)\\n\");"}, {"kind": "function", "line": 136, "name": "kmemcpy", "signature": "kmemcpy(e->lines[idx].text, text, n);"}, {"kind": "function", "line": 146, "name": "kmemmove", "signature": "kmemmove(&e->lines[idx + 1], &e->lines[idx], (unsigned long)(e->count - idx) * sizeof(EditLine));"}, {"kind": "function", "line": 224, "name": "shell_readline_buf", "signature": "shell_readline_buf(buf, CMD_BUF_SZ);"}, {"kind": "macro", "line": 19, "name": "EDIT_MAX_LINES", "signature": "#define EDIT_MAX_LINES"}, {"kind": "macro", "line": 21, "name": "EDIT_LINE_MAX", "signature": "#define EDIT_LINE_MAX"}, {"kind": "macro", "line": 22, "name": "EDIT_FILE_MAX", "signature": "#define EDIT_FILE_MAX"}]}, {"doc": "exec.c - Process execution: setjmp/longjmp, k_exec_user, k_run_rel, kexit.", "id": "kernel/exec.c", "kind": "module", "label": "exec.c", "language": "c", "sha256": "b4f7ecd46e600e73", "symbol_count": 18, "symbols": [{"kind": "function", "line": 59, "name": "vga_mode_set", "signature": "void vga_mode_set(int on)"}, {"kind": "function", "line": 61, "name": "vga_mode_is_active", "signature": "int vga_mode_is_active(void)"}, {"kind": "function", "line": 62, "name": "vga_gfx_ran_set", "signature": "void vga_gfx_ran_set(int on)"}, {"doc": "VGA mode tracking: set/cleared by k_exec_user and k_run_rel when a * graphics program owns the display. static int vga_mode13h; static int graphics_program_ran; void vga_mode_set(int on) { vga_mode13h = on; } int vga_mode_is_active(void) { return vga_mode13h; } void vga_gfx_ran_set(int on) { graphics_program_ran = on; } /* Called from the ISR exception handler when a ring-3 user program faults.", "kind": "function", "line": 65, "name": "k_user_fault_return", "signature": "void k_user_fault_return(void)"}, {"doc": "__asm__ volatile( \"mov %[kdata], %%ax\\n\" \"mov %%ax, %%ds\\n\" \"mov %%ax, %%es\\n\" \"mov %%ax, %%fs\\n\" \"mov %%ax, %%gs\\n\" :: [kdata] \"i\"(GDT64_DATA_SEL) : \"ax\", \"memory\"); wrmsr(MSR_FSBASE, 0); wrmsr(MSR_GSBASE, (unsigned long)&cpus[0]); klongjmp(&exec_return, 1); } /* ---- Build the SysV initial stack and jump to the ELF entry -------------", "kind": "function", "line": 81, "name": "setup_user_stack", "signature": "unsigned long *setup_user_stack(char *sbase, unsigned long ssize,\n ..."}, {"kind": "function", "line": 116, "name": "k_exec_user", "signature": "int k_exec_user(void *entry, int argc, char **argv)"}, {"kind": "function", "line": 209, "name": "k_run_rel", "signature": "int k_run_rel(prog_entry_t entry, int argc, char **argv)"}, {"kind": "function", "line": 241, "name": "kexit", "signature": "void kexit(int code)"}, {"kind": "function", "line": 67, "name": "volatile", "signature": "__asm__ volatile( \"mov %[kdata], %%ax\\n\" \"mov %%ax, %%ds\\n\" \"mov %%ax, %%es\\n\" \"mov %%ax, %%fs\\n\" \"mov %%ax, %%gs\\n\" :: [kdata] \"i\"(GDT64_DATA_SEL) : \"ax\", \"memory\");"}, {"kind": "function", "line": 75, "name": "wrmsr", "signature": "wrmsr(MSR_FSBASE, 0);"}, {"kind": "function", "line": 77, "name": "klongjmp", "signature": "klongjmp(&exec_return, 1);"}, {"kind": "function", "line": 92, "name": "kmemcpy", "signature": "kmemcpy(p, argv[i], l);"}, {"kind": "function", "line": 176, "name": "__builtin_unreachable", "signature": "__builtin_unreachable();"}, {"kind": "function", "line": 181, "name": "pt_free_user", "signature": "pt_free_user(new_cr3);"}, {"kind": "function", "line": 203, "name": "vga_fb_set_gfx_mode", "signature": "vga_fb_set_gfx_mode(0);"}, {"kind": "function", "line": 204, "name": "vga_fb_draw_desktop", "signature": "vga_fb_draw_desktop();"}, {"kind": "function", "line": 206, "name": "kbd_reset_for_shell", "signature": "kbd_reset_for_shell();"}, {"doc": "unsigned long sp = ((unsigned long)p - (unsigned long)nwords * 8) & ~15UL; unsigned long *w = (unsigned long *)sp; int idx = 0; w[idx++] = (unsigned long)argc; for (i = 0; i < argc; i++) w[idx++] = (unsigned long)argp[i]; w[idx++] = 0; w[idx++] = 0; w[idx++] = 6; w[idx++] = 4096; w[idx++] = 25; w[idx++] = (unsigned long)randp; w[idx++] = 0; w[idx++] = 0; return w; } /* Enter a ring-3 program via iretq.", "kind": "variable", "line": 115, "name": "syscall_kstack", "signature": "extern unsigned long syscall_kstack;"}]}, {"doc": "Docstring: kernel/futex.c -- Kernel side of the futex contract.", "id": "kernel/futex.c", "kind": "module", "label": "futex.c", "language": "c", "sha256": "d6999c5f6dfaba58", "symbol_count": 11, "symbols": [{"kind": "struct", "line": 16, "name": "futex_table_t"}, {"kind": "function", "line": 22, "name": "futex_hash", "signature": "static unsigned long futex_hash(unsigned long uaddr)"}, {"kind": "function", "line": 30, "name": "futex_bucket", "signature": "static futex_bucket_t *futex_bucket(unsigned long uaddr)"}, {"doc": "static unsigned long futex_hash(unsigned long uaddr) { unsigned long word = uaddr >> 2; word ^= word >> 16; word *= FUTEX_HASH_GOLDEN; word ^= word >> 13; return word & FUTEX_BUCKET_MASK; } static futex_bucket_t *futex_bucket(unsigned long uaddr) { return &futex_table.buckets[futex_hash(uaddr)]; } /** Docstring: Initialize every bucket queue and clear the awaited table.", "kind": "function", "line": 36, "name": "futex_init", "signature": "void futex_init(void)"}, {"doc": "futex_table.awaited[cur->pid] = uaddr; if (b->head == WQ_NONE) { b->head = cur->pid; b->tail = cur->pid; } else { procs[b->tail].wq_next = cur->pid; b->tail = cur->pid; } spin_unlock_irqrestore(&b->lock, flags); schedule(); return FUTEX_OK; } /** Docstring: Decode a Linux futex(2) op to WAIT/WAKE.", "kind": "function", "line": 84, "name": "futex_linux_cmd", "signature": "int futex_linux_cmd(long op)"}, {"doc": "Docstring: Wake up to n sleepers waiting on uaddr. Only entries whose recorded address equals uaddr change state; hash collisions sleep through. Returns the number of threads woken, zero when the bucket holds no waiter for this address. Never sleeps.", "kind": "function", "line": 97, "name": "futex_wake", "signature": "long futex_wake(unsigned long uaddr, int n)"}, {"kind": "function", "line": 39, "name": "spin_init", "signature": "spin_init(&futex_table.buckets[i].lock);"}, {"kind": "function", "line": 58, "name": "spin_lock_irqsave", "signature": "spin_lock_irqsave(&b->lock, &flags);"}, {"kind": "function", "line": 61, "name": "spin_unlock_irqrestore", "signature": "spin_unlock_irqrestore(&b->lock, flags);"}, {"kind": "function", "line": 79, "name": "schedule", "signature": "schedule();"}, {"doc": "ifdef SYNC_HOST_CURRENT_PID", "kind": "variable", "line": 13, "name": "t_cur_pid", "signature": "extern int t_cur_pid;"}]}, {"doc": "klog.c - Structured kernel logging with levels and subsystems.", "id": "kernel/klog.c", "kind": "module", "label": "klog.c", "language": "c", "sha256": "70e1c92daff3df9b", "symbol_count": 9, "symbols": [{"kind": "function", "line": 28, "name": "klog_set_level", "signature": "void klog_set_level(log_level_t level)"}, {"kind": "function", "line": 32, "name": "klog_set_subsys_level", "signature": "void klog_set_subsys_level(log_subsystem_t subsys, log_level_t level)"}, {"kind": "function", "line": 37, "name": "klog_disable", "signature": "void klog_disable(void)"}, {"kind": "function", "line": 39, "name": "klog_enable", "signature": "void klog_enable(void)"}, {"kind": "function", "line": 40, "name": "klog", "signature": "void klog(log_level_t level, log_subsystem_t subsys,\n const char *fmt, ...)"}, {"kind": "function", "line": 118, "name": "klog_hexdump", "signature": "void klog_hexdump(log_level_t level, log_subsystem_t subsys,\n const void *data, ..."}, {"kind": "function", "line": 52, "name": "kprintf", "signature": "kprintf(\"[%s %s] \", lname, sname);"}, {"kind": "function", "line": 56, "name": "__builtin_va_start", "signature": "__builtin_va_start(ap, fmt);"}, {"kind": "function", "line": 114, "name": "__builtin_va_end", "signature": "__builtin_va_end(ap);"}]}, {"doc": "include \"kernel.h\" include \"vga_fb.h\" ================================================================", "id": "kernel/loader.c", "kind": "module", "label": "loader.c", "language": "c", "sha256": "e63b8ab0a3d9db37", "symbol_count": 44, "symbols": [{"kind": "struct", "line": 90, "name": "exec_range"}, {"kind": "struct", "line": 15, "name": "Elf64_Shdr"}, {"kind": "struct", "line": 28, "name": "Elf64_Sym"}, {"kind": "struct", "line": 37, "name": "Elf64_Rela"}, {"kind": "struct", "line": 43, "name": "Elf64_Phdr"}, {"doc": "#define PF_X 1 #define ELF_MAX_SEGMENTS 64 #define ELF_NAME_MAX 64 struct exec_range { unsigned long start, end; }; /* ---- Globals shared with kernel.c (syscall dispatcher, brk/mmap) ---- unsigned long g_brk; /* current program break unsigned long g_brk_limit; /* upper bound for brk growth unsigned long user_mmap_cur; /* anonymous mmap cursor, grows down /* ---- ELF helper functions ----", "kind": "function", "line": 99, "name": "elf_name_copy", "signature": "static void elf_name_copy(char *out, unsigned out_cap, const char *tab,\n ..."}, {"kind": "function", "line": 113, "name": "elf_load_fail", "signature": "static void elf_load_fail(void *base, void **sec_addrs, const char *why)"}, {"doc": "if (out[i] == '\\0') break; i++; } } out[i] = '\\0'; } static void elf_load_fail(void *base, void **sec_addrs, const char *why) { if (why) kprintf(\"load: %s\\n\", why); if (sec_addrs) kfree(sec_addrs); if (base) kfree(base); } /* ---- ET_REL loader (ring-0 toolchain objects) ----", "kind": "function", "line": 121, "name": "elf_load", "signature": "void *elf_load(void *data, unsigned size)"}, {"doc": "char sn[ELF_NAME_MAX]; elf_name_copy(sn, sizeof(sn), strtab, strtab_size, symtab[k].st_name); int alloc = (symtab[k].st_shndx < shnum && sec_addrs[symtab[k].st_shndx]) ? 1 : 0; kprintf(\" [%u] '%s' sec=%u val=%lu alloc=%d\\n\", k, sn, symtab[k].st_shndx, symtab[k].st_value, alloc); } elf_load_fail(base, sec_addrs, \"no valid entry point\"); return 0; } kfree(sec_addrs); return entry; } /* ---- ET_EXEC / ET_DYN loader (Linux ring-3 binaries) ----", "kind": "function", "line": 360, "name": "apply_exec_relocs", "signature": "static void apply_exec_relocs(void *data, unsigned size, unsigned long base,\n ..."}, {"kind": "function", "line": 443, "name": "load_exec_elf", "signature": "void *load_exec_elf(void *data, unsigned size)"}, {"doc": "--- Isolated loader (multitask foundation) ---- Same validation as load_exec_elf, but the segments land in the user window of `cr3` (built by pt_clone_user_empty) instead of the live one. Pages are allocated with mm_user_ensure_page and filled under a short CR3 switch with interrupts off; the caller's address space is restored before return. Globals (g_brk, VMA) stay untouched: the caller owns the per-process brk, reported via brk_out. Shared graphics slots are never written. Returns the entry VA, or 0 with a diagnostic. No relocation fixups: static ET_EXEC binaries load identity-clean; ET_DYN without RELA still runs when linked * non-PIE by the MiniOS toolchain path.", "kind": "function", "line": 523, "name": "load_exec_elf_into", "signature": "void *load_exec_elf_into(void *data, unsigned size, unsigned long cr3,\n u..."}, {"kind": "function", "line": 177, "name": "kprintf", "signature": "kprintf(\"load: ET_REL image exceeds %u bytes, refusing\\n\", ETREL_IMAGE_MAX);"}, {"kind": "function", "line": 193, "name": "kmemset", "signature": "kmemset(base, 0, total_alloc);"}, {"kind": "function", "line": 210, "name": "kmemcpy", "signature": "kmemcpy(sec_addrs[i], (char *)data + shdrs[i].sh_offset, (unsigned long)ssize);"}, {"kind": "function", "line": 355, "name": "kfree", "signature": "kfree(sec_addrs);"}, {"kind": "function", "line": 491, "name": "volatile", "signature": "__asm__ volatile(\"mov %%cr3, %0\" : \"=r\"(cur_cr3));"}, {"kind": "function", "line": 493, "name": "mm_user_set_exec", "signature": "mm_user_set_exec(xr[i].start, xr[i].end, cur_cr3);"}, {"kind": "function", "line": 502, "name": "vma_tree_init", "signature": "vma_tree_init();"}, {"kind": "function", "line": 506, "name": "redirect_resume", "signature": "redirect_resume(was);"}, {"kind": "macro", "line": 53, "name": "ELF64_R_SYM", "signature": "#define ELF64_R_SYM(i)"}, {"kind": "macro", "line": 55, "name": "ELF64_R_TYPE", "signature": "#define ELF64_R_TYPE(i)"}, {"kind": "macro", "line": 56, "name": "SHN_UNDEF", "signature": "#define SHN_UNDEF"}, {"kind": "macro", "line": 63, "name": "ETREL_IMAGE_MAX", "signature": "#define ETREL_IMAGE_MAX"}, {"kind": "macro", "line": 64, "name": "SHT_SYMTAB", "signature": "#define SHT_SYMTAB"}, {"kind": "macro", "line": 66, "name": "SHT_STRTAB", "signature": "#define SHT_STRTAB"}, {"kind": "macro", "line": 67, "name": "SHT_RELA", "signature": "#define SHT_RELA"}, {"kind": "macro", "line": 68, "name": "SHT_PROGBITS", "signature": "#define SHT_PROGBITS"}, {"kind": "macro", "line": 69, "name": "SHT_NOBITS", "signature": "#define SHT_NOBITS"}, {"kind": "macro", "line": 70, "name": "SHF_ALLOC", "signature": "#define SHF_ALLOC"}, {"kind": "macro", "line": 71, "name": "SHF_EXECINSTR", "signature": "#define SHF_EXECINSTR"}, {"kind": "macro", "line": 72, "name": "EM_X86_64", "signature": "#define EM_X86_64"}, {"kind": "macro", "line": 74, "name": "PT_LOAD", "signature": "#define PT_LOAD"}, {"kind": "macro", "line": 75, "name": "R_X86_64_64", "signature": "#define R_X86_64_64"}, {"kind": "macro", "line": 77, "name": "R_X86_64_PC32", "signature": "#define R_X86_64_PC32"}, {"kind": "macro", "line": 78, "name": "R_X86_64_PLT32", "signature": "#define R_X86_64_PLT32"}, {"kind": "macro", "line": 79, "name": "R_X86_64_GLOB_DAT", "signature": "#define R_X86_64_GLOB_DAT"}, {"kind": "macro", "line": 80, "name": "R_X86_64_JUMP_SLOT", "signature": "#define R_X86_64_JUMP_SLOT"}, {"kind": "macro", "line": 81, "name": "R_X86_64_RELATIVE", "signature": "#define R_X86_64_RELATIVE"}, {"kind": "macro", "line": 82, "name": "R_X86_64_32", "signature": "#define R_X86_64_32"}, {"kind": "macro", "line": 83, "name": "R_X86_64_32S", "signature": "#define R_X86_64_32S"}, {"kind": "macro", "line": 84, "name": "R_X86_64_IRELATIVE", "signature": "#define R_X86_64_IRELATIVE"}, {"kind": "macro", "line": 85, "name": "PF_X", "signature": "#define PF_X"}, {"kind": "macro", "line": 87, "name": "ELF_MAX_SEGMENTS", "signature": "#define ELF_MAX_SEGMENTS"}, {"kind": "macro", "line": 88, "name": "ELF_NAME_MAX", "signature": "#define ELF_NAME_MAX"}]}, {"doc": "include \"kernel.h\" include \"lz4_kernel.h\" define HASH_BITS 12 define HASH_SIZE (1 << HASH_BITS)", "id": "kernel/lz4_kernel.c", "kind": "module", "label": "lz4_kernel.c", "language": "c", "sha256": "103bde26b8c694c8", "symbol_count": 11, "symbols": [{"doc": "define HASH_BITS 12 define HASH_SIZE (1 << HASH_BITS)", "kind": "function", "line": 6, "name": "LZ4_read32", "signature": "static inline unsigned int LZ4_read32(const unsigned char *p)"}, {"kind": "function", "line": 13, "name": "LZ4_read16", "signature": "static inline unsigned int LZ4_read16(const unsigned char *p)"}, {"kind": "function", "line": 20, "name": "LZ4_write16", "signature": "static inline void LZ4_write16(unsigned char *dst, unsigned short v)"}, {"kind": "function", "line": 25, "name": "LZ4_hash", "signature": "static unsigned int LZ4_hash(const unsigned char *p)"}, {"kind": "function", "line": 32, "name": "LZ4_compressBound", "signature": "int LZ4_compressBound(int inputSize)"}, {"kind": "function", "line": 39, "name": "LZ4_compress_default", "signature": "int LZ4_compress_default(const char *src, char *dst, int srcSize, int dstCapacity)"}, {"kind": "function", "line": 163, "name": "LZ4_decompress_safe", "signature": "int LZ4_decompress_safe(const char *src, char *dst, int compressedSize, int dstCapacity)"}, {"kind": "function", "line": 10, "name": "kmemcpy", "signature": "kmemcpy(&v, p, 4);"}, {"kind": "function", "line": 54, "name": "kmemset", "signature": "kmemset(hash_table, 0, sizeof(hash_table));"}, {"kind": "macro", "line": 3, "name": "HASH_BITS", "signature": "#define HASH_BITS"}, {"kind": "macro", "line": 5, "name": "HASH_SIZE", "signature": "#define HASH_SIZE"}]}, {"doc": "paging.c - Page table management for the user window and per-process KPTI.", "id": "kernel/mm/paging.c", "kind": "module", "label": "paging.c", "language": "c", "sha256": "73b44cc6e37188ff", "symbol_count": 20, "symbols": [{"doc": "mm_setup_protections - boot-time user-window NX + framebuffer/backbuffer mapping mm_user_pte_update - set/clear NX on a single 4 KB page mm_user_set_exec - mark ELF segment pages as executable pt_page_alloc/free - page-aligned allocator for page-table pages pt_clone_user - build per-process PML4 (KPTI) pt_free_user - release per-process page-table pages #include \"kernel.h\" #include \"bootdefs.h\" #include \"vga_fb.h\" #include \"arch/x86/msr.h\" /* ---- Page table helpers (from kernel.c, now shared via bootdefs.h) ----", "kind": "function", "line": 18, "name": "mm_setup_protections", "signature": "void mm_setup_protections(void)"}, {"kind": "function", "line": 107, "name": "mm_user_pte_update", "signature": "void mm_user_pte_update(unsigned long vaddr, int exec, unsigned long cr3)"}, {"kind": "function", "line": 128, "name": "mm_user_set_exec", "signature": "void mm_user_set_exec(unsigned long start, unsigned long end, unsigned long cr3)"}, {"doc": "define PT_ALLOC_HDR sizeof(void *)", "kind": "function", "line": 140, "name": "pt_page_alloc", "signature": "void *pt_page_alloc(void)"}, {"kind": "function", "line": 150, "name": "pt_page_free", "signature": "void pt_page_free(void *ptr)"}, {"kind": "function", "line": 156, "name": "pt_clone_user", "signature": "uint64_t pt_clone_user(uint64_t parent_cr3)"}, {"doc": "The legacy path identity-maps the user window (VA == PA), so every CR3 built by pt_clone_user aliases the same physical pages. That is why only one ET_EXEC can run at a time today. The helpers below build an EMPTY user window instead: fresh page tables with no user data pages mapped, except the kernel-owned graphics slots (FB, DOOM/NK back-buffers) which stay shared on purpose. Data pages come from the kernel heap via pt_page_alloc, so each process owns its bytes and switch_to's CR3 swap already isolates them. Pages are freed by the extended pt_free_user below, which releases heap-owned data pages in private slots and never touches identity pages or * the shared graphics slots. /* 1 when this PD slot holds kernel-shared graphics mappings.", "kind": "function", "line": 270, "name": "mt_shared_slot", "signature": "static int mt_shared_slot(unsigned long pd_idx)"}, {"doc": "Fresh user window: kernel mappings copied, every user PT zeroed, graphics slots re-shared from the boot tables. Returns PML4 phys * (usable as CR3), or 0 on OOM. No user data page is mapped.", "kind": "function", "line": 287, "name": "pt_clone_user_empty", "signature": "unsigned long pt_clone_user_empty(void)"}, {"doc": "Ensure one 4 KB user page at va inside cr3 exists (heap-owned). * Returns 0 on success, -1 on OOM or when va leaves the user window.", "kind": "function", "line": 344, "name": "mm_user_ensure_page", "signature": "int mm_user_ensure_page(unsigned long cr3, unsigned long va)"}, {"doc": "Copy one present user page from src_cr3 to the same VA in dst_cr3, * allocating the destination page. Used by fork-style clones.", "kind": "function", "line": 372, "name": "mm_copy_user_page", "signature": "int mm_copy_user_page(unsigned long dst_cr3, unsigned long src_cr3, unsigned long va)"}, {"kind": "function", "line": 443, "name": "pt_free_user", "signature": "void pt_free_user(uint64_t cr3)"}, {"kind": "function", "line": 29, "name": "kprintf", "signature": "kprintf(\"mm: kernel image reaches 0x%lx, must stay below 0x%lx\\n\", (unsigned long)_kernel_end, USER_LOAD_BASE);"}, {"kind": "function", "line": 37, "name": "wrmsr", "signature": "wrmsr(MSR_EFER, rdmsr(MSR_EFER) | EFER_NXE);"}, {"kind": "function", "line": 147, "name": "kmemset", "signature": "kmemset((void *)aligned, 0, 0x1000);"}, {"kind": "function", "line": 154, "name": "kfree", "signature": "kfree(raw);"}, {"kind": "function", "line": 397, "name": "volatile", "signature": "__asm__ volatile(\"mov %%cr3, %0\" : \"=r\"(saved_cr3));"}, {"kind": "function", "line": 399, "name": "kmemcpy", "signature": "kmemcpy((void *)dst_phys, (void *)src_phys, 0x1000);"}, {"kind": "function", "line": 446, "name": "pt_free_data_pages", "signature": "pt_free_data_pages(cr3);"}, {"kind": "variable", "line": 26, "name": "_kernel_end", "signature": "extern char _kernel_end[];"}, {"kind": "macro", "line": 138, "name": "PT_ALLOC_HDR", "signature": "#define PT_ALLOC_HDR"}]}, {"doc": "swap.c - Swap-out/swap-in for the user window (LZ4-compressed disk swap).", "id": "kernel/mm/swap.c", "kind": "module", "label": "swap.c", "language": "c", "sha256": "dcbb8050fc95ac71", "symbol_count": 10, "symbols": [{"kind": "function", "line": 23, "name": "swap_lba", "signature": "static unsigned long swap_lba(void)"}, {"kind": "function", "line": 29, "name": "swap_out", "signature": "int swap_out(unsigned long window_sz)"}, {"kind": "function", "line": 78, "name": "swap_in", "signature": "int swap_in(void)"}, {"kind": "function", "line": 42, "name": "kmemcpy", "signature": "kmemcpy(swap_buf_raw, (void *)(USER_LOAD_BASE + off), raw_sz);"}, {"kind": "function", "line": 72, "name": "kmemset", "signature": "kmemset(hdr + 3, 0, IDE_SECTOR_SIZE - 12);"}, {"kind": "macro", "line": 14, "name": "SWAP_CHUNK_RAW", "signature": "#define SWAP_CHUNK_RAW"}, {"kind": "macro", "line": 16, "name": "SWAP_CHUNK_SECTORS", "signature": "#define SWAP_CHUNK_SECTORS"}, {"kind": "macro", "line": 17, "name": "SWAP_HDR_SECTORS", "signature": "#define SWAP_HDR_SECTORS"}, {"kind": "macro", "line": 18, "name": "SWAP_MAX_SECTORS", "signature": "#define SWAP_MAX_SECTORS"}, {"kind": "macro", "line": 19, "name": "SWAP_MAGIC", "signature": "#define SWAP_MAGIC"}]}, {"doc": "include \"kernel.h\" include \"sched.h\" ================================================================", "id": "kernel/mm.c", "kind": "module", "label": "mm.c", "language": "c", "sha256": "05e85492834e6771", "symbol_count": 12, "symbols": [{"doc": "================================================================ Memory allocator Thin wrappers over dlmalloc 2.8.6 (third_party/dlmalloc), a private mspace rooted at the fixed kernel heap. The space is built with HAVE_MORECORE=0 and HAVE_MMAP=0, so it can never grow past HEAP_SIZE; an exhausted heap returns 0. * ================================================================", "kind": "function", "line": 12, "name": "kallocator_init", "signature": "void kallocator_init(void)"}, {"kind": "function", "line": 21, "name": "kmalloc", "signature": "void *kmalloc(unsigned long size)"}, {"kind": "function", "line": 27, "name": "kfree", "signature": "void kfree(void *ptr)"}, {"kind": "function", "line": 32, "name": "kcalloc", "signature": "void *kcalloc(unsigned long nmemb, unsigned long size)"}, {"kind": "function", "line": 36, "name": "krealloc", "signature": "void *krealloc(void *ptr, unsigned long size)"}, {"doc": "Per-CPU memory allocation. Allocates cpu_count * size bytes, aligned to `align`, zeroed. Each CPU accesses its own region at offset cpu_id * size. Returns NULL on failure. The caller must not free individual CPU regions; the whole block is freed as one allocation. This is a building block for Phase 2 (per-CPU run queues) and Phase 3 (per-CPU wait queue caches). Not wired into * any subsystem yet; the API is established for future use.", "kind": "function", "line": 53, "name": "kmalloc_percpu", "signature": "void *kmalloc_percpu(unsigned long size, unsigned long align)"}, {"kind": "function", "line": 14, "name": "dlmalloc_init", "signature": "dlmalloc_init();"}, {"kind": "function", "line": 25, "name": "dlmalloc_malloc", "signature": "return dlmalloc_malloc(size);"}, {"kind": "function", "line": 30, "name": "dlmalloc_free", "signature": "dlmalloc_free(ptr);"}, {"kind": "function", "line": 34, "name": "dlmalloc_calloc", "signature": "return dlmalloc_calloc(nmemb, size);"}, {"kind": "function", "line": 40, "name": "dlmalloc_realloc", "signature": "return dlmalloc_realloc(ptr, size);"}, {"kind": "function", "line": 61, "name": "kmemset", "signature": "kmemset(base, 0, total);"}]}, {"doc": "Docstring: kernel/percpu_rq.c -- Per-CPU runqueue hints and stealing.", "id": "kernel/percpu_rq.c", "kind": "module", "label": "percpu_rq.c", "language": "c", "sha256": "40eef8c993bcf360", "symbol_count": 14, "symbols": [{"kind": "function", "line": 13, "name": "rq_cpu_valid", "signature": "static int rq_cpu_valid(int cpu)"}, {"doc": "topology and on spinlock.h for the ring locks, which keeps it host-testable (tests/test_percpu_rq.c, make test-percpu-rq) with a stub topology of fake CPUs. #include \"percpu_rq.h\" static percpu_rq_t rqueues[MAX_CPUS]; static int rq_cpu_valid(int cpu) { return cpu >= 0 && cpu < MAX_CPUS && cpu < cpu_count; } /** Docstring: Clear every ring and counter. Called once from sched_init.", "kind": "function", "line": 19, "name": "rq_init", "signature": "void rq_init(void)"}, {"doc": "Docstring: Record pid as READY work for cpu. Lossy by contract: a full ring drops the hint and counts the drop. The global scan remains the fallback, so a drop costs one rescan period of latency at most, never correctness. Pids outside the table are refused.", "kind": "function", "line": 41, "name": "rq_enqueue", "signature": "void rq_enqueue(int cpu, int pid)"}, {"doc": "return; spin_lock_irqsave(&rqueues[cpu].lock, &flags); if (rqueues[cpu].count >= RQ_DEPTH) { rqueues[cpu].drops++; spin_unlock_irqrestore(&rqueues[cpu].lock, flags); return; } slot = (rqueues[cpu].head + rqueues[cpu].count) % RQ_DEPTH; rqueues[cpu].ring[slot] = pid; rqueues[cpu].count++; spin_unlock_irqrestore(&rqueues[cpu].lock, flags); } /** Docstring: Pop one hint from the local ring, WQ_NONE_HINT when empty.", "kind": "function", "line": 61, "name": "rq_pop_local", "signature": "int rq_pop_local(int cpu)"}, {"doc": "Docstring: Non-blocking steal of one hint from another CPU's ring. Tries every remote ring once with spin_trylock and returns the first hint found, reporting the donor through from_cpu. Rings that are busy are skipped, never waited on. Returns WQ_NONE_HINT when nothing could be stolen without blocking. The thief's steal counter is owner-written but updated under the donor's lock, so it uses an atomic add (the same pattern as smp_dispatches) instead of relying on the donor's lock.", "kind": "function", "line": 89, "name": "rq_steal_once", "signature": "int rq_steal_once(int self_cpu, int *from_cpu)"}, {"doc": "pid = rqueues[c].ring[rqueues[c].head]; rqueues[c].ring[rqueues[c].head] = WQ_NONE_HINT; rqueues[c].head = (rqueues[c].head + 1) % RQ_DEPTH; rqueues[c].count--; __sync_fetch_and_add(&rqueues[self_cpu].steals, 1); spin_unlock(&rqueues[c].lock); if (from_cpu) from_cpu = c; return pid; } return WQ_NONE_HINT; } /** Docstring: True when cpu holds no hint. Lock-protected peek.", "kind": "function", "line": 115, "name": "rq_empty", "signature": "int rq_empty(int cpu)"}, {"doc": "/** Docstring: True when cpu holds no hint. Lock-protected peek. int rq_empty(int cpu) { irqflags_t flags; int empty; if (!rq_cpu_valid(cpu)) return 1; spin_lock_irqsave(&rqueues[cpu].lock, &flags); empty = (rqueues[cpu].count <= 0); spin_unlock_irqrestore(&rqueues[cpu].lock, flags); return empty; } /** Docstring: Count an unsuccessful claim poll for the rescan schedule.", "kind": "function", "line": 127, "name": "rq_note_poll", "signature": "void rq_note_poll(int cpu)"}, {"doc": "return empty; } /** Docstring: Count an unsuccessful claim poll for the rescan schedule. void rq_note_poll(int cpu) { irqflags_t flags; if (!rq_cpu_valid(cpu)) return; spin_lock_irqsave(&rqueues[cpu].lock, &flags); rqueues[cpu].polls++; spin_unlock_irqrestore(&rqueues[cpu].lock, flags); } /** Docstring: True every RQ_RESCAN_PERIOD polls, bounding hint staleness.", "kind": "function", "line": 137, "name": "rq_should_rescan", "signature": "int rq_should_rescan(int cpu)"}, {"doc": "irqflags_t flags; int due = 0; if (!rq_cpu_valid(cpu)) return 1; spin_lock_irqsave(&rqueues[cpu].lock, &flags); if (rqueues[cpu].polls >= RQ_RESCAN_PERIOD) { rqueues[cpu].polls = 0; due = 1; } spin_unlock_irqrestore(&rqueues[cpu].lock, flags); return due; } /** Docstring: Snapshot hits, steals and drops for diagnostics.", "kind": "function", "line": 152, "name": "rq_stats", "signature": "void rq_stats(int cpu, unsigned long *hits, unsigned long *steals,\n unsigned long *d..."}, {"kind": "function", "line": 23, "name": "spin_init", "signature": "spin_init(&rqueues[c].lock);"}, {"kind": "function", "line": 48, "name": "spin_lock_irqsave", "signature": "spin_lock_irqsave(&rqueues[cpu].lock, &flags);"}, {"kind": "function", "line": 51, "name": "spin_unlock_irqrestore", "signature": "spin_unlock_irqrestore(&rqueues[cpu].lock, flags);"}, {"kind": "function", "line": 98, "name": "spin_unlock", "signature": "spin_unlock(&rqueues[c].lock);"}, {"kind": "function", "line": 105, "name": "__sync_fetch_and_add", "signature": "__sync_fetch_and_add(&rqueues[self_cpu].steals, 1);"}]}, {"doc": "include \"kernel.h\" ================================================================", "id": "kernel/printf.c", "kind": "module", "label": "printf.c", "language": "c", "sha256": "58126f0b076bfa7e", "symbol_count": 15, "symbols": [{"kind": "struct", "line": 177, "name": "snctx"}, {"doc": "================================================================ printf family * ================================================================", "kind": "function", "line": 6, "name": "putc_buf", "signature": "static void putc_buf(char c, void *ctx, int *written)"}, {"kind": "function", "line": 12, "name": "putc_file", "signature": "static void putc_file(char c, void *ctx, int *written)"}, {"kind": "function", "line": 18, "name": "putc_str", "signature": "static void putc_str(char c, void *ctx, int *written)"}, {"kind": "function", "line": 25, "name": "emit_num", "signature": "static void emit_num(void (*emit)(char, void *, int *), void *ctx, int *written,\n ..."}, {"kind": "function", "line": 43, "name": "kformat", "signature": "static void kformat(void (*emit)(char, void *, int *), void *ctx,\n int *writte..."}, {"kind": "function", "line": 156, "name": "kfprintf", "signature": "int kfprintf(KFILE *f, const char *fmt, ...)"}, {"kind": "function", "line": 165, "name": "ksprintf", "signature": "int ksprintf(char *buf, const char *fmt, ...)"}, {"kind": "function", "line": 178, "name": "putc_snbuf", "signature": "static void putc_snbuf(char c, void *ctx, int *written)"}, {"kind": "function", "line": 183, "name": "ksnprintf", "signature": "int ksnprintf(char *buf, unsigned long size, const char *fmt, ...)"}, {"kind": "function", "line": 9, "name": "vga_putc", "signature": "vga_putc(c);"}, {"kind": "function", "line": 15, "name": "kfputc", "signature": "kfputc(c, f);"}, {"kind": "function", "line": 72, "name": "emit", "signature": "emit(c, ctx, written);"}, {"kind": "function", "line": 151, "name": "__builtin_va_start", "signature": "__builtin_va_start(ap, fmt);"}, {"kind": "function", "line": 153, "name": "__builtin_va_end", "signature": "__builtin_va_end(ap);"}]}, {"doc": "Docstring: kernel/rcu.c -- Epoch grace periods over scheduler ticks.", "id": "kernel/rcu.c", "kind": "module", "label": "rcu.c", "language": "c", "sha256": "51dbcf67fe66eae8", "symbol_count": 21, "symbols": [{"kind": "struct", "line": 22, "name": "rcu_slot_t"}, {"kind": "struct", "line": 28, "name": "rcu_state_t"}, {"kind": "function", "line": 13, "name": "rcu_me", "signature": "static cpu_t *rcu_me(void)"}, {"doc": "else", "kind": "function", "line": 17, "name": "rcu_me", "signature": "static cpu_t *rcu_me(void)"}, {"kind": "function", "line": 39, "name": "rcu_cpu_valid", "signature": "static int rcu_cpu_valid(int cpu)"}, {"doc": "unsigned long qs[MAX_CPUS]; unsigned long depth[MAX_CPUS]; rcu_slot_t pending[RCU_CB_MAX]; int pending_count; unsigned long completed; } rcu_state_t; static rcu_state_t rcu_state; static int rcu_cpu_valid(int cpu) { return cpu >= 0 && cpu < MAX_CPUS && cpu < cpu_count; } /** Docstring: Reset epoch, quiescent marks, depths and callbacks.", "kind": "function", "line": 45, "name": "rcu_init", "signature": "void rcu_init(void)"}, {"doc": "for (i = 0; i < MAX_CPUS; i++) { rcu_state.qs[i] = 0; rcu_state.depth[i] = 0; } for (i = 0; i < RCU_CB_MAX; i++) { rcu_state.pending[i].fn = 0; rcu_state.pending[i].arg = 0; rcu_state.pending[i].epoch = 0; } rcu_state.pending_count = 0; rcu_state.completed = 0; } /** Docstring: Enter a read section on the current CPU. Nests.", "kind": "function", "line": 63, "name": "rcu_read_lock", "signature": "void rcu_read_lock(void)"}, {"doc": "/** Docstring: Enter a read section on the current CPU. Nests. void rcu_read_lock(void) { cpu_t *me = rcu_me(); int cpu = me->cpu_id; irqflags_t flags; if (!rcu_cpu_valid(cpu)) return; spin_lock_irqsave(&rcu_state.lock, &flags); rcu_state.depth[cpu]++; spin_unlock_irqrestore(&rcu_state.lock, flags); } /** Docstring: Leave a read section. Underflow is clamped, never wraps.", "kind": "function", "line": 75, "name": "rcu_read_unlock", "signature": "void rcu_read_unlock(void)"}, {"doc": "/** Docstring: Leave a read section. Underflow is clamped, never wraps. void rcu_read_unlock(void) { cpu_t *me = rcu_me(); int cpu = me->cpu_id; irqflags_t flags; if (!rcu_cpu_valid(cpu)) return; spin_lock_irqsave(&rcu_state.lock, &flags); if (rcu_state.depth[cpu] > 0) rcu_state.depth[cpu]--; spin_unlock_irqrestore(&rcu_state.lock, flags); } /** Docstring: Load a published pointer inside a read section.", "kind": "function", "line": 88, "name": "rcu_deref", "signature": "void *rcu_deref(void *volatile *pp)"}, {"doc": "return; spin_lock_irqsave(&rcu_state.lock, &flags); if (rcu_state.depth[cpu] > 0) rcu_state.depth[cpu]--; spin_unlock_irqrestore(&rcu_state.lock, flags); } /** Docstring: Load a published pointer inside a read section. void *rcu_deref(void *volatile *pp) { __sync_synchronize(); return *pp; } /** Docstring: Publish a new pointer value with release ordering.", "kind": "function", "line": 94, "name": "rcu_publish", "signature": "void rcu_publish(void *volatile *pp, void *v)"}, {"doc": "if (rcu_state.pending_count >= RCU_CB_MAX) { r = RCU_ERR_FULL; } else { rcu_slot_t *s = &rcu_state.pending[rcu_state.pending_count]; s->fn = fn; s->arg = arg; s->epoch = rcu_state.epoch; rcu_state.pending_count++; } spin_unlock_irqrestore(&rcu_state.lock, flags); return r; } /** Docstring: Record a quiescent state for cpu at the current epoch.", "kind": "function", "line": 126, "name": "rcu_note_tick", "signature": "void rcu_note_tick(int cpu)"}, {"doc": "} /** Docstring: Record a quiescent state for cpu at the current epoch. void rcu_note_tick(int cpu) { irqflags_t flags; if (!rcu_cpu_valid(cpu)) return; spin_lock_irqsave(&rcu_state.lock, &flags); if (rcu_state.depth[cpu] == 0) rcu_state.qs[cpu] = rcu_state.epoch; spin_unlock_irqrestore(&rcu_state.lock, flags); } /** Docstring: Idle CPUs are always quiescent.", "kind": "function", "line": 137, "name": "rcu_note_idle", "signature": "void rcu_note_idle(int cpu)"}, {"doc": "Docstring: Advance the epoch and run due callbacks. A grace period closes when every online CPU reported quiescence at the current epoch. Callbacks stamped with an older epoch then run inline and the epoch advances. Runs from the timer tick; never blocks.", "kind": "function", "line": 152, "name": "rcu_poll", "signature": "void rcu_poll(void)"}, {"kind": "function", "line": 193, "name": "expires", "signature": "* expires (ticks stalled, never a hang). No completion assert is\n * possible here by design: a re..."}, {"kind": "function", "line": 14, "name": "rcu_host_cpu", "signature": "return rcu_host_cpu();"}, {"kind": "function", "line": 18, "name": "this_cpu", "signature": "return this_cpu();"}, {"kind": "function", "line": 47, "name": "spin_init", "signature": "spin_init(&rcu_state.lock);"}, {"kind": "function", "line": 69, "name": "spin_lock_irqsave", "signature": "spin_lock_irqsave(&rcu_state.lock, &flags);"}, {"kind": "function", "line": 71, "name": "spin_unlock_irqrestore", "signature": "spin_unlock_irqrestore(&rcu_state.lock, flags);"}, {"kind": "function", "line": 89, "name": "__sync_synchronize", "signature": "__sync_synchronize();"}, {"kind": "function", "line": 178, "name": "fn", "signature": "fn(arg);"}]}, {"doc": "include \"kernel.h\" ================================================================", "id": "kernel/redirect.c", "kind": "module", "label": "redirect.c", "language": "c", "sha256": "93b0c1c9a99f7650", "symbol_count": 7, "symbols": [{"doc": "================================================================ Console output capture for shell redirection The hot-path redirect_putc() lives in kernel.c (inlined into vga_putc) and accesses the state directly. This file owns the lifecycle functions: begin, commit, suspend, resume, report. * ================================================================", "kind": "function", "line": 10, "name": "shell_report_exit", "signature": "void shell_report_exit(int code)"}, {"kind": "function", "line": 16, "name": "shell_report", "signature": "void shell_report(const char *what, const char *detail)"}, {"kind": "function", "line": 24, "name": "shell_take_redirect", "signature": "int shell_take_redirect(int *argc, char **argv, char **path, int *append_mode)"}, {"kind": "function", "line": 13, "name": "kprintf", "signature": "kprintf(\"exit code: %d\\n\", code);"}, {"kind": "function", "line": 14, "name": "redirect_resume", "signature": "redirect_resume(was);"}, {"kind": "function", "line": 19, "name": "vga_puts", "signature": "vga_puts(what);"}, {"kind": "function", "line": 21, "name": "vga_putc", "signature": "vga_putc('\\n');"}]}, {"id": "kernel/sched.c", "kind": "module", "label": "sched.c", "language": "c", "sha256": "6234bd1bdf9f3fb8", "symbol_count": 135, "symbols": [{"doc": "kprintf(\" pid=%d (%s) used=%lu/%u%s\\n\", i, procs[i].name, used, size, rc != 0 ? \" OVERFLOW\" : \"\"); } { unsigned long used = 0; int rc = kstack_usage(SYS_KSTK_TOP, leg_sz, &used); if (rc != 0) bad = 1; kprintf(\" legacy used=%lu/%u%s\\n\", used, leg_sz, rc != 0 ? \" OVERFLOW\" : \"\"); } kprintf(\"kstack: %s\\n\", bad ? \"OVERFLOW\" : \"ok\"); } /* ---- Trap frame (must match isr_stubs.S) ----", "kind": "struct", "line": 281, "name": "trap_frame_t"}, {"doc": "--- TSS (one per CPU) ---- Every CPU that runs ring-3 code needs a private TSS: a timer tick that preempts ring 3 switches to TSS.rsp0, so two CPUs sharing one TSS would run their ISRs on the same stack. The runtime GDT grows from 7 entries (5 from stage 2 + 1 TSS descriptor of 2 slots) to 5 + 2*MAX_CPUS entries; CPU 0 keeps selector 0x28 exactly as before. The GDT lives at 0x8000 with 4 KB reserved up to stage 2 at 0x9000, so 21 entries * (168 bytes) fit with room to spare.", "kind": "type_alias", "line": 78, "name": "res0", "signature": "typedef struct __attribute__((packed)) { uint32_t res0;"}, {"doc": "Per-CPU idle stacks: a park into the idle context re-enters * smp_ap_idle_loop here (idle_proc ctx.rsp points at the top). static char ap_idle_stack[MAX_CPUS][4096] __attribute__((aligned(16))); proc_t ap_idle_proc[MAX_CPUS]; volatile unsigned long smp_dispatches[MAX_CPUS]; volatile unsigned long smp_idle_polls[MAX_CPUS]; static volatile int ser_e_reported; /* ---- IDT ----", "kind": "type_alias", "line": 99, "name": "off_lo", "signature": "typedef struct __attribute__((packed)) { uint16_t off_lo;"}, {"doc": "#include \"sched.h\" #include \"smp.h\" #include \"sync.h\" #include \"futex.h\" #include \"percpu_rq.h\" #include \"rcu.h\" #include \"bootdefs.h\" #include \"vga_fb.h\" #include \"sb16.h\" #include \"tick.h\" #include \"arch/x86/hal_io.h\" #include \"arch/x86/msr.h\" /** Docstring: Audio tick adapter, forwards the bus dispatch to sb16_poll.", "kind": "function", "line": 19, "name": "sched_tick_audio", "signature": "static void sched_tick_audio(void *ctx)"}, {"doc": "#include \"bootdefs.h\" #include \"vga_fb.h\" #include \"sb16.h\" #include \"tick.h\" #include \"arch/x86/hal_io.h\" #include \"arch/x86/msr.h\" /** Docstring: Audio tick adapter, forwards the bus dispatch to sb16_poll. static void sched_tick_audio(void *ctx) { (void)ctx; sb16_poll(); } /** Docstring: Desktop tick adapter, forwards the bus dispatch to the compositor tick.", "kind": "function", "line": 25, "name": "sched_tick_desktop", "signature": "static void sched_tick_desktop(void *ctx)"}, {"kind": "function", "line": 49, "name": "read_cr3", "signature": "static inline unsigned long read_cr3(void)"}, {"doc": "--- TSS (one per CPU) ---- Every CPU that runs ring-3 code needs a private TSS: a timer tick that preempts ring 3 switches to TSS.rsp0, so two CPUs sharing one TSS would run their ISRs on the same stack. The runtime GDT grows from 7 entries (5 from stage 2 + 1 TSS descriptor of 2 slots) to 5 + 2*MAX_CPUS entries; CPU 0 keeps selector 0x28 exactly as before. The GDT lives at 0x8000 with 4 KB reserved up to stage 2 at 0x9000, so 21 entries * (168 bytes) fit with room to spare.", "kind": "function", "line": 78, "name": "__attribute__", "signature": "typedef struct __attribute__((packed))"}, {"doc": "Per-CPU idle stacks: a park into the idle context re-enters * smp_ap_idle_loop here (idle_proc ctx.rsp points at the top). static char ap_idle_stack[MAX_CPUS][4096] __attribute__((aligned(16))); proc_t ap_idle_proc[MAX_CPUS]; volatile unsigned long smp_dispatches[MAX_CPUS]; volatile unsigned long smp_idle_polls[MAX_CPUS]; static volatile int ser_e_reported; /* ---- IDT ----", "kind": "function", "line": 99, "name": "__attribute__", "signature": "typedef struct __attribute__((packed))"}, {"doc": "--- Kernel-stack canary + high-water diagnostic ---- A slot is painted with KSTACK_PAINT at claim time with a KSTACK_CANARY word at its very bottom. kstack_report() scans for the deepest clobbered word: the high-water mark shows how close a stack came to overflowing, and a dead canary proves an overflow already happened (a stack that overruns writes into its neighbour's slot, the classic \"address touched by someone else\" corruption). Paint cost is at allocation rate only, never in the ISR path; the report is fail-closed * (a dead canary prints OVERFLOW, never a forged number). define KSTACK_PAINT 0xA5A5A5A5A5A5A5A5ULL define KSTACK_CANARY 0x4B535441434B3735ULL", "kind": "function", "line": 126, "name": "kstack_paint", "signature": "static void kstack_paint(uint64_t top, unsigned long size)"}, {"doc": "allocation rate only, never in the ISR path; the report is fail-closed * (a dead canary prints OVERFLOW, never a forged number). #define KSTACK_PAINT 0xA5A5A5A5A5A5A5A5ULL #define KSTACK_CANARY 0x4B535441434B3735ULL static void kstack_paint(uint64_t top, unsigned long size) { unsigned long long *p = (unsigned long long *)(top - size); unsigned long n = size / 8; unsigned long i; for (i = 1; i < n; i++) p[i] = (unsigned long long)KSTACK_PAINT; p[0] = (unsigned long long)KSTACK_CANARY; } /* 0 = intact (used_out = high-water bytes), -1 = canary dead.", "kind": "function", "line": 136, "name": "kstack_usage", "signature": "static int kstack_usage(uint64_t top, unsigned long size,\n unsigned long *..."}, {"kind": "function", "line": 150, "name": "alloc_kstack", "signature": "static uint64_t alloc_kstack(void)"}, {"kind": "function", "line": 162, "name": "free_kstack", "signature": "static void free_kstack(uint64_t top)"}, {"kind": "function", "line": 174, "name": "MXCSR", "signature": "* A fresh image is explicit zeros plus the default MXCSR (0x1F80, all\n * exceptions masked): fxsa..."}, {"kind": "function", "line": 181, "name": "fpu_restore_from", "signature": "static inline void fpu_restore_from(void *area)"}, {"kind": "function", "line": 185, "name": "fpu_alloc_clean", "signature": "static void *fpu_alloc_clean(void)"}, {"kind": "function", "line": 203, "name": "fpu_free_proc", "signature": "static void fpu_free_proc(proc_t *p)"}, {"doc": "Per-process VMA contexts (vma.h contract; defined here so vma.c stays * host-testable). A private pool is VMA_MAX nodes from the kernel heap.", "kind": "function", "line": 210, "name": "vma_ctx_alloc", "signature": "vma_ctx_t *vma_ctx_alloc(void)"}, {"kind": "function", "line": 219, "name": "vma_ctx_free", "signature": "void vma_ctx_free(vma_ctx_t *c)"}, {"kind": "function", "line": 225, "name": "vma_owned", "signature": "static int vma_owned(proc_t *p)"}, {"doc": "Rebind the global VMA view alongside the brk/mmap view. Callers already hold sched_lock (+mm_lock at the swap sites); the bind itself is a few * stores. Shared (VM/legacy) contexts make this a semantic no-op.", "kind": "function", "line": 234, "name": "vma_save_proc", "signature": "static void vma_save_proc(proc_t *p)"}, {"kind": "function", "line": 237, "name": "vma_load_proc", "signature": "static void vma_load_proc(proc_t *p)"}, {"doc": "Serial-observable stack health: per-proc high-water marks plus the legacy 32 KB syscall stack, ending in `kstack: ok` or * `kstack: OVERFLOW`. The shell `kstack` builtin calls this.", "kind": "function", "line": 245, "name": "kstack_report", "signature": "void kstack_report(void)"}, {"doc": "Parked trap frames for preempted ring-3 contexts, one slot per pid. The ISR copies the preempted frame here (never onto a live stack: the TSS stack is reused by the next tick and a thread's own kstack may be mid-syscall), points ctx at the copy and resumes it later through resume_iretq + iretq. Dedicated slots mean parking can never clobber * live kernel state. static trap_frame_t isr_park[MAX_PROCS]; /* ---- IDT init ----", "kind": "function", "line": 297, "name": "idt_set", "signature": "static void idt_set(int vec, void (*h)(void))"}, {"kind": "function", "line": 307, "name": "idt_init", "signature": "static void idt_init(void)"}, {"doc": "} static void idt_init(void) { kmemset(idt, 0, sizeof(idt)); int i; for (i = 0; i < 256; i++) if (isr_stub_table[i]) idt_set(i, (void(*)(void))isr_stub_table[i]); bsp_idtr.limit = sizeof(idt) - 1; bsp_idtr.base = (uint64_t)&idt; __asm__ volatile(\"lidt %0\" :: \"m\"(bsp_idtr)); } /* ---- PIC ----", "kind": "function", "line": 320, "name": "pic_init", "signature": "static void pic_init(void)"}, {"doc": "Master: unmask IRQ0 (timer) + IRQ1 (keyboard) + IRQ2 (cascade) + IRQ4 (COM1, UART IER stays 0 so it never fires) + IRQ5 (Sound Blaster 16 DMA done). In the mask register a bit set means masked, so 0xC8 masks only IRQ3, IRQ6 and IRQ7. Masking IRQ5 here starves the SB16 completion interrupt and leaves audio on the * timer watchdog alone (audible as jitter); keep it unmasked. hal_outb(HAL_PIC1_DATA, 0xC8); /* Slave: unmask IRQ12 (mouse) only. 0xEF = ~bit4. hal_outb(HAL_PIC2_DATA, 0xEF); } /* ---- PIT channel 0: 100 Hz ----", "kind": "function", "line": 355, "name": "pit_init", "signature": "static void pit_init(void)"}, {"kind": "function", "line": 361, "name": "pic_eoi", "signature": "static void pic_eoi(int irq)"}, {"kind": "function", "line": 368, "name": "tss_write_desc", "signature": "static void tss_write_desc(int cpu)"}, {"kind": "function", "line": 385, "name": "tss_init", "signature": "static void tss_init(void)"}, {"doc": "Load this AP's task register. The BSP wrote every descriptor in tss_init before the APs were woken, so the AP only points its TR at its own slot; its ring-3 preempts then land on its private rsp0 * stack instead of the BSP's.", "kind": "function", "line": 417, "name": "tss_init_ap", "signature": "void tss_init_ap(int cpu)"}, {"kind": "function", "line": 435, "name": "context", "signature": "* context (anything entered via k_exec_user) is inside a syscall\n * (entry swapped 0 in), and a c..."}, {"kind": "function", "line": 448, "name": "point", "signature": "* return address as the resume point (\"continue the ISR\"), which\n * required the stranded ISR fra..."}, {"doc": "Fair-share scan with sched_lock HELD. Returns a claimed (PROC_RUNNING) pid or -1. vm_only restricts the pick to CLONE_VM threads, which is what APs run: same CR3, no brk/mmap view switch, no TLB work. Boyscout fix for static round-robin starvation: every READY candidate is compared by vruntime (plus nice bias), the minimum wins, and the winner is charged one quantum weighted by its nice. A CPU-bound nice-0 task can no longer starve an interactive nice--10 task; equal nice degrades to * round-robin order via the rotating start.", "kind": "function", "line": 473, "name": "sched_next_locked", "signature": "static int sched_next_locked(int start, int vm_only)"}, {"doc": "for (t = 0; t < MAX_PROCS; t++) { int cand = (start + 1 + t) % MAX_PROCS; unsigned long key; if (procs[cand].state != PROC_READY) continue; if (vm_only && !(procs[cand].clone_flags & CLONE_VM)) continue; key = procs[cand].vruntime + (unsigned long)(procs[cand].nice + 20) * 8u; if (best < 0 || key < best_key) { best = cand; best_key = key; } } if (best < 0) return -1; procs[best].state = PROC_RUNNING; procs[best].vruntime += 64u + (unsigned long)(procs[best].nice + 20) * 4u; return best; } /* Set scheduling niceness for pid (-20..19, clamped). Returns 0 or -1.", "kind": "function", "line": 491, "name": "sched_set_nice", "signature": "int sched_set_nice(int pid, int nice)"}, {"doc": "procs[best].state = PROC_RUNNING; procs[best].vruntime += 64u + (unsigned long)(procs[best].nice + 20) * 4u; return best; } /* Set scheduling niceness for pid (-20..19, clamped). Returns 0 or -1. int sched_set_nice(int pid, int nice) { if (pid < 0 || pid >= MAX_PROCS) return -1; if (procs[pid].state == PROC_FREE) return -1; if (nice < -20) nice = -20; if (nice > 19) nice = 19; procs[pid].nice = nice; return 0; } /* Seccomp-basic helpers: deny/allow one MiniOS syscall for pid.", "kind": "function", "line": 500, "name": "seccomp_deny_one", "signature": "int seccomp_deny_one(int pid, int n)"}, {"kind": "function", "line": 507, "name": "seccomp_allow_one", "signature": "int seccomp_allow_one(int pid, int n)"}, {"kind": "function", "line": 514, "name": "seccomp_denied", "signature": "int seccomp_denied(int pid, int n)"}, {"doc": "Claim one READY thread for this CPU's idle loop (the AP only claims CLONE_VM threads): marks it RUNNING under lock and installs it as the * CPU's current pid. Returns the pid, or -1 when nothing is ready.", "kind": "function", "line": 523, "name": "smp_try_claim_hint", "signature": "static int smp_try_claim_hint(int pid, int vm_only)"}, {"kind": "function", "line": 538, "name": "smp_claim_thread_v", "signature": "static int smp_claim_thread_v(int vm_only)"}, {"doc": "AP idle loop: hlt until a CLONE_VM thread is ready, run it, repeat. Entered once from smp_ap_entry on the AP stub stack; the first switch_to out of here saves these registers into ap_idle_proc[cpu], so every return to idle resumes this loop. Interrupts stay OFF from the claim through the switch: a LAPIC tick landing in between would park this half-switched state over the incoming thread's ctx. Threads enter with their own rflags (IF=1); a resume back to idle restores IF=0, so sti runs after every * switch_to return. The hlt itself needs IF=1 to wake.", "kind": "function", "line": 578, "name": "smp_ap_idle_loop", "signature": "void smp_ap_idle_loop(void)"}, {"doc": "AP timer preemption: time-slice the AP's current CLONE_VM thread with the next READY one. An idle AP (cur_pid -1) needs nothing: its idle loop polls. The park/unclaim discipline is the same as the BSP tick: park the trap frame (complete ctx), publish READY, claim the next, switch NOTRAP (load-only) so a stealing CPU always resumes a valid context. A non-VM proc can never run here by construction; if one is * ever observed, leave it alone (fail safe, never migrate it).", "kind": "function", "line": 612, "name": "sched_ap_preempt", "signature": "static void sched_ap_preempt(trap_frame_t *frame)"}, {"doc": "True when some AP is idle. The BSP tick uses this to leave freshly parked CLONE_VM threads unclaimed: the idle AP's next poll (IPI wake) picks them up, which keeps thread execution biased to the APs * instead of the BSP winning every claim race.", "kind": "function", "line": 682, "name": "smp_any_ap_idle", "signature": "static int smp_any_ap_idle(void)"}, {"kind": "function", "line": 708, "name": "rlimit_cpu_exceeded", "signature": "int rlimit_cpu_exceeded(int pid)"}, {"kind": "function", "line": 729, "name": "isr_dispatch", "signature": "void isr_dispatch(int vector, trap_frame_t *frame)"}, {"kind": "function", "line": 1032, "name": "BSP", "signature": "* CPU believe it is the BSP (wrong per-CPU identity, two CPUs\n * running the shell contex..."}, {"doc": "serial_puts(\" [recovering: ring-3 user fault, returning EFAULT]\\n\"); k_user_fault_return(); __builtin_unreachable(); } serial_puts(\" [thread faulted: killing]\\n\"); do_exit(EFAULT); __builtin_unreachable(); } serial_puts(\" [no recovery]\\n\"); for(;;) __asm__(\"hlt\"); } } /* ---- Process management ----", "kind": "function", "line": 1052, "name": "proc_get", "signature": "proc_t *proc_get(int pid)"}, {"kind": "function", "line": 1058, "name": "proc_create", "signature": "int proc_create(const char *name, int parent_pid)"}, {"doc": "proc_spawn_elf(name, data, size, argc, argv) - multitask spawn. A non-CLONE_VM process with a FRESH user window (pt_clone_user_empty): its pages are heap-owned, so two spawned ELFs never alias each other the way the legacy shared-window loader does. The image loads via load_exec_elf_into, the stack is built under the child's CR3, and the process starts at the ELF entry through user_trampoline + iretq with IF=1. The BSP time-slices it with the existing preempt path (brk view save/restore included); APs never claim it (vm_only). Exit flows through do_proc_exit -> do_exit -> ZOMBIE, reaped by do_waitpid which frees the isolated tables. Fail closed (-1) with * nothing published: OOM at any step releases what was claimed.", "kind": "function", "line": 1155, "name": "proc_spawn_elf", "signature": "int proc_spawn_elf(const char *name, void *data, unsigned size,\n int argc, char..."}, {"kind": "function", "line": 1275, "name": "schedule", "signature": "* that keeps schedule()'s own rbp runs the caller's frame accesses\n * (locals, leave/ret) on the ..."}, {"kind": "function", "line": 1285, "name": "schedule", "signature": "void schedule(void)"}, {"kind": "function", "line": 1367, "name": "yield", "signature": "void yield(void)"}, {"kind": "function", "line": 1382, "name": "do_exit", "signature": "void do_exit(int code)"}, {"doc": "frame is ambiguous, this one starts cleanly at fn(arg) on the given stack: child RIP = fn, child RSP = stack, child RDI = arg (SysV first arg), entered through the same user_trampoline + iretq path as proc_create. The caller (pthread-like user code) owns the stack: it must be allocated before the call (8 KB each per the roadmap) with its TOP passed here, and must stay alive until the thread is joined. fn and stack must lie in the user window (checked by the syscall wrapper). The thread shares CR3, the file table and (by the schedule() CLONE_VM rule) the live brk/mmap view with its parent; the parent joins it with do_waitpid, which reaps the exit code without freeing the shared page tables. * Returns the child PID, or -1 when no slot or stack is usable.", "kind": "function", "line": 1422, "name": "do_thread_spawn", "signature": "long do_thread_spawn(unsigned long fn, unsigned long stack,\n unsigned long arg)"}, {"kind": "function", "line": 1615, "name": "do_waitpid", "signature": "int do_waitpid(int pid)"}, {"doc": "Reap one zombie child for `jobs`/auto-reap messages: returns 1 with * pid+code, or 0 when none is ready. Never blocks.", "kind": "function", "line": 1632, "name": "shell_reap_nb", "signature": "int shell_reap_nb(int *pid_out, int *code_out)"}, {"doc": "Reap one specific zombie child (foreground wait). Returns 1 with the * code, or 0 when that pid is not a reaped zombie right now.", "kind": "function", "line": 1646, "name": "shell_reap_one", "signature": "int shell_reap_one(int pid, int *code_out)"}, {"doc": "Reap one specific zombie child (foreground wait). Returns 1 with the * code, or 0 when that pid is not a reaped zombie right now. int shell_reap_one(int pid, int *code_out) { int code, found = -1; if (!proc_get(current_pid)) return 0; spin_lock(&sched_lock); code = waitpid_scan(pid, &found); spin_unlock(&sched_lock); if (code == WAITPID_NONE) return 0; if (code_out) *code_out = code; return 1; } /* Live non-free children of the caller (shell job table size).", "kind": "function", "line": 1658, "name": "shell_nchildren", "signature": "int shell_nchildren(void)"}, {"doc": "True kill: the TARGET becomes a zombie for its parent to reap (its stack/tables free in do_waitpid, never here). Killing self keeps the old do_exit path. A zombie on an AP is abandoned by the AP preempt * path, so a kill never leaves a corpse running.", "kind": "function", "line": 1684, "name": "do_kill", "signature": "int do_kill(int pid)"}, {"kind": "function", "line": 1708, "name": "timer_tick", "signature": "void timer_tick(void)"}, {"doc": "tgt->state = PROC_ZOMBIE; tgt->exited = 1; if (tgt->parent_pid >= 0) { proc_t *par = proc_get(tgt->parent_pid); if (par && par->state == PROC_BLOCKED) par->state = PROC_READY; } spin_unlock(&sched_lock); return 0; } void timer_tick(void) { __sync_fetch_and_add(&sys_ticks, 1); } /* ---- PS/2 mouse hardware init ----", "kind": "function", "line": 1712, "name": "mouse_wait_cmd", "signature": "static void mouse_wait_cmd(void)"}, {"kind": "function", "line": 1718, "name": "mouse_wait_data", "signature": "static void mouse_wait_data(void)"}, {"kind": "function", "line": 1725, "name": "mouse_write", "signature": "static void mouse_write(unsigned char data)"}, {"kind": "function", "line": 1732, "name": "mouse_read", "signature": "static unsigned char mouse_read(void)"}, {"kind": "function", "line": 1737, "name": "mouse_hw_init", "signature": "static void mouse_hw_init(void)"}, {"kind": "function", "line": 1788, "name": "mouse_disable", "signature": "void mouse_disable(void)"}, {"kind": "function", "line": 1790, "name": "mouse_enable", "signature": "void mouse_enable(void)"}, {"kind": "function", "line": 1791, "name": "sched_init", "signature": "void sched_init(void)"}, {"kind": "function", "line": 21, "name": "sb16_poll", "signature": "sb16_poll();"}, {"kind": "function", "line": 27, "name": "vga_fb_mouse_tick", "signature": "vga_fb_mouse_tick();"}, {"kind": "function", "line": 47, "name": "user_trampoline", "signature": "extern void user_trampoline(void);"}, {"kind": "function", "line": 52, "name": "volatile", "signature": "__asm__ volatile(\"mov %%cr3, %0\" : \"=r\"(v));"}, {"kind": "function", "line": 58, "name": "PROC_KSTACK_OFF", "signature": "* PROC_KSTACK_OFF (it cannot use C here). The asm derives both immediates * from the sched.h macros via STR(), so this assert is the single check: * if it fires, the struct changed and the macros in s"}, {"kind": "function", "line": 66, "name": "descriptor", "signature": "* descriptor (two slots) per CPU past the 5 stage-2 entries. */ _Static_assert((5 + 2 * MAX_CPUS) * 8 == GDT64_SMP_BYTES, \"GDT SMP size\");"}, {"kind": "function", "line": 91, "name": "here", "signature": "* smp_ap_idle_loop here (idle_proc ctx.rsp points at the top). */ static char ap_idle_stack[MAX_CPUS][4096] __attribute__((aligned(16)));"}, {"kind": "function", "line": 216, "name": "vma_ctx_init", "signature": "vma_ctx_init(c, pool);"}, {"kind": "function", "line": 223, "name": "kfree", "signature": "kfree(c);"}, {"kind": "function", "line": 232, "name": "sched_lock", "signature": "* hold sched_lock (+mm_lock at the swap sites);"}, {"kind": "function", "line": 261, "name": "kprintf", "signature": "kprintf(\" pid=%d (%s) stack foreign top=0x%lx\\n\", i, procs[i].name, (unsigned long)top);"}, {"kind": "function", "line": 309, "name": "kmemset", "signature": "kmemset(idt, 0, sizeof(idt));"}, {"kind": "function", "line": 339, "name": "hal_outb", "signature": "hal_outb(HAL_PIC1_CMD, 0x11);"}, {"kind": "function", "line": 344, "name": "IRQ4", "signature": "* IRQ4 (COM1, UART IER stays 0 so it never fires) + * IRQ5 (Sound Blaster 16 DMA done). In the mask register a bit set * means masked, so 0xC8 masks only IRQ3, IRQ6 and IRQ7. Masking IRQ5 * here starv"}, {"kind": "function", "line": 363, "name": "hal_pic_eoi", "signature": "hal_pic_eoi(irq);"}, {"kind": "function", "line": 439, "name": "wrmsr", "signature": "wrmsr(MSR_KERNEL_GS_BASE, (unsigned long)this_cpu());"}, {"kind": "function", "line": 456, "name": "kmemcpy", "signature": "kmemcpy(dst, frame, sizeof(trap_frame_t));"}, {"kind": "function", "line": 528, "name": "spin_lock_irqsave", "signature": "spin_lock_irqsave(&sched_lock, &flags);"}, {"kind": "function", "line": 535, "name": "spin_unlock_irqrestore", "signature": "spin_unlock_irqrestore(&sched_lock, flags);"}, {"kind": "function", "line": 556, "name": "rq_note_poll", "signature": "rq_note_poll(me);"}, {"kind": "function", "line": 587, "name": "__sync_fetch_and_add", "signature": "__sync_fetch_and_add(&smp_idle_polls[cpu], 1);"}, {"kind": "function", "line": 599, "name": "sched_rearm_kgs", "signature": "sched_rearm_kgs();"}, {"kind": "function", "line": 600, "name": "switch_to", "signature": "switch_to(&ap_idle_proc[cpu], next);"}, {"kind": "function", "line": 628, "name": "switch_to_notrap", "signature": "switch_to_notrap(cur, &ap_idle_proc[me]);"}, {"kind": "function", "line": 633, "name": "rlimit_cpu_tick", "signature": "rlimit_cpu_tick(current_pid);"}, {"kind": "function", "line": 634, "name": "sched_save_preempt", "signature": "sched_save_preempt(cur, frame, 0);"}, {"kind": "function", "line": 751, "name": "tick_run_audio", "signature": "tick_run_audio();"}, {"kind": "function", "line": 752, "name": "rcu_note_tick", "signature": "rcu_note_tick(cpu->cpu_id);"}, {"kind": "function", "line": 753, "name": "rcu_poll", "signature": "rcu_poll();"}, {"doc": "AP: LAPIC EOI (LAPIC_EOI_OFF 0x0B0, named in smp.c) * instead of PIC EOI; also count it for the `smp` builtin.", "kind": "function", "line": 763, "name": "hal_lapic_eoi", "signature": "hal_lapic_eoi();"}, {"kind": "function", "line": 847, "name": "syscall", "signature": "* outgoing syscall (see sched_rearm_kgs). Without * this the next entry swapgs puts garbage under GS * and the pid math faults. */ sched_rearm_kgs();"}, {"doc": "mouse_phase = 0; mouse_state.buttons = mouse_packet[0] & HAL_MOUSE_BUTTON_MASK; int dx = (int)(signed char)mouse_packet[1]; int dy = (int)(signed char)mouse_packet[2]; mouse_state.x += dx * HAL_MOUSE_SCALE; mouse_state.y -= dy * HAL_MOUSE_SCALE; int wheel = (int)(signed char)(mouse_packet[3] << 4) >> 4; mouse_state.wheel += wheel; mouse_state.present = 1; } pic_eoi(12); return; } if (vector == 37) { /* IRQ5: Sound Blaster 16 DMA buffer complete", "kind": "function", "line": 933, "name": "sb16_irq", "signature": "sb16_irq();"}, {"kind": "function", "line": 949, "name": "serial_puts", "signature": "serial_puts(\"EXCEPTION \");"}, {"kind": "function", "line": 1039, "name": "k_user_fault_return", "signature": "k_user_fault_return();"}, {"kind": "function", "line": 1040, "name": "__builtin_unreachable", "signature": "__builtin_unreachable();"}, {"kind": "function", "line": 1060, "name": "spin_lock", "signature": "spin_lock(&sched_lock);"}, {"kind": "function", "line": 1085, "name": "kstrncpy", "signature": "kstrncpy(p->name, name, sizeof(p->name) - 1);"}, {"kind": "function", "line": 1107, "name": "spin_unlock", "signature": "spin_unlock(&sched_lock);"}, {"kind": "function", "line": 1175, "name": "pt_free_user", "signature": "pt_free_user(new_cr3);"}, {"kind": "function", "line": 1312, "name": "PROC_SWITCHING", "signature": "* while the thread is still PROC_SWITCHING (never claimable), * then set the resume point and publish. A BLOCKED/ZOMBIE * thread keeps its state (no one claims it until a wake). */ switch_save_only(cu"}, {"kind": "function", "line": 1316, "name": "sched_park_as_returned", "signature": "sched_park_as_returned(cur);"}, {"kind": "function", "line": 1319, "name": "spin_unlock_keep_irq", "signature": "spin_unlock_keep_irq(&sched_lock);"}, {"doc": "Capture the continuation while the thread is still PROC_SWITCHING (never claimable), publish it as READY only once the ctx is complete, then switch load-only: whichever CPU claims the thread * later resumes a valid context.", "kind": "function", "line": 1360, "name": "switch_save_only", "signature": "switch_save_only(cur);"}, {"kind": "function", "line": 1376, "name": "returns", "signature": "* that returns (and the resumed thread returns with IF=1). */ __asm__ volatile(\"cli\");"}, {"kind": "function", "line": 1454, "name": "registers", "signature": "* registers (float args would need XMM inheritance, which the * arg-passing contract does not carry: fn takes one integer arg). */ child->fpu_save = fpu_alloc_clean();"}, {"kind": "function", "line": 1494, "name": "rq_enqueue", "signature": "rq_enqueue(home, pid);"}, {"kind": "function", "line": 1728, "name": "outb", "signature": "outb(0x64, 0xD4);"}, {"kind": "function", "line": 1735, "name": "inb", "signature": "return inb(0x60);"}, {"kind": "function", "line": 1760, "name": "wrong", "signature": "* later packet is framed wrong (a left press reads back as bit 1, * motion warps), permanently. */ mouse_write(0xFF);"}, {"kind": "function", "line": 1800, "name": "it", "signature": "* it (SPAWN/exec point proc 0 here transiently);"}, {"kind": "function", "line": 1843, "name": "kstrcpy", "signature": "kstrcpy(procs[0].name, \"kernel\");"}, {"kind": "function", "line": 1850, "name": "park", "signature": "* an image its live FPU registers would be dropped by the preempt * park (the save path skips a null area). */ procs[0].fpu_save = fpu_alloc_clean();"}, {"kind": "function", "line": 1856, "name": "vma_ctx_bind", "signature": "vma_ctx_bind(&vma_legacy);"}, {"kind": "function", "line": 1861, "name": "zeroed", "signature": "* still zeroed (kmemset happens inside idt_init) faults through a * null gate. Handlers for 32/33/44 are safe pre-mouse-init. */ idt_init();"}, {"kind": "function", "line": 1865, "name": "futex_init", "signature": "futex_init();"}, {"kind": "function", "line": 1866, "name": "rq_init", "signature": "rq_init();"}, {"kind": "function", "line": 1867, "name": "rcu_init", "signature": "rcu_init();"}, {"kind": "function", "line": 1868, "name": "tick_reset", "signature": "tick_reset();"}, {"kind": "function", "line": 1869, "name": "tick_register_audio", "signature": "tick_register_audio(sched_tick_audio, 0);"}, {"kind": "function", "line": 1870, "name": "tick_register_desktop", "signature": "tick_register_desktop(sched_tick_desktop, 0);"}, {"kind": "variable", "line": 107, "name": "isr_stub_table", "signature": "extern void *isr_stub_table[];"}, {"doc": "Guards the shared g_brk/g_brk_limit/user_mmap_cur view and the VMA trees against concurrent brk/mmap/munmap syscalls from threads on different CPUs. Defined in kernel/syscalls.c; always taken INSIDE sched_lock (lock order: sched_lock -> mm_lock), never alone in the * scheduler paths.", "kind": "variable", "line": 429, "name": "mm_lock", "signature": "extern spinlock_t mm_lock;"}, {"kind": "macro", "line": 35, "name": "MY_SYS_KSTK_TOP", "signature": "#define MY_SYS_KSTK_TOP"}, {"kind": "macro", "line": 36, "name": "MY_USER_STACK_TOP", "signature": "#define MY_USER_STACK_TOP"}, {"kind": "macro", "line": 37, "name": "MY_USER_LOAD_BASE", "signature": "#define MY_USER_LOAD_BASE"}, {"kind": "macro", "line": 111, "name": "KSTACK_SZ", "signature": "#define KSTACK_SZ"}, {"kind": "macro", "line": 124, "name": "KSTACK_PAINT", "signature": "#define KSTACK_PAINT"}, {"kind": "macro", "line": 125, "name": "KSTACK_CANARY", "signature": "#define KSTACK_CANARY"}]}, {"doc": "scrollback.c - Console scrollback ring buffer.", "id": "kernel/scrollback.c", "kind": "module", "label": "scrollback.c", "language": "c", "sha256": "295e83c120a155dd", "symbol_count": 8, "symbols": [{"kind": "function", "line": 16, "name": "sb_init", "signature": "void sb_init(void)"}, {"kind": "function", "line": 22, "name": "sb_capture_row0", "signature": "void sb_capture_row0(void)"}, {"kind": "function", "line": 33, "name": "sb_reset", "signature": "void sb_reset(void)"}, {"kind": "function", "line": 37, "name": "sb_get_count", "signature": "int sb_get_count(void)"}, {"kind": "function", "line": 39, "name": "sb_get_head", "signature": "int sb_get_head(void)"}, {"kind": "function", "line": 40, "name": "sb_get_char", "signature": "char sb_get_char(int row, int col)"}, {"kind": "function", "line": 4, "name": "vga_scroll", "signature": "* Captured lazily from vga_scroll();"}, {"kind": "macro", "line": 11, "name": "SCROLLBACK_ROWS", "signature": "#define SCROLLBACK_ROWS"}]}, {"doc": "include \"kernel.h\" include \"sched.h\" serial.c -- COM1 16550 UART driver.", "id": "kernel/serial.c", "kind": "module", "label": "serial.c", "language": "c", "sha256": "3f6fc98ed2ef3526", "symbol_count": 10, "symbols": [{"doc": "define COM1 0x3F8", "kind": "function", "line": 19, "name": "serial_init", "signature": "void serial_init(void)"}, {"kind": "function", "line": 29, "name": "serial_tx_ready", "signature": "static int serial_tx_ready(void)"}, {"kind": "function", "line": 31, "name": "serial_rx_ready", "signature": "static int serial_rx_ready(void)"}, {"kind": "function", "line": 32, "name": "serial_putc", "signature": "void serial_putc(char c)"}, {"kind": "function", "line": 37, "name": "serial_e_count", "signature": "unsigned long serial_e_count(void)"}, {"kind": "function", "line": 39, "name": "serial_puts", "signature": "void serial_puts(const char *s)"}, {"kind": "function", "line": 41, "name": "serial_available", "signature": "int serial_available(void)"}, {"kind": "function", "line": 43, "name": "serial_getc", "signature": "int serial_getc(void)"}, {"kind": "function", "line": 21, "name": "outb", "signature": "outb(COM1 + 1, 0x00);"}, {"kind": "macro", "line": 17, "name": "COM1", "signature": "#define COM1"}]}, {"doc": "include \"kernel.h\" include \"net.h\" include \"minifs.h\" include \"sched.h\" include \"smp.h\" include \"percpu_rq.h\" include \"vga_fb.h\" include \"pcspk.h\" include \"sb16.h\" include \"rtc.h\" include \"drivers/kbd.h\" define XXH_STATIC_LINKING_ONLY include \"xxhash.h\" include \"zip.h\" include \"shell.h\" include \"editor.h\" ================================================================", "id": "kernel/shell.c", "kind": "module", "label": "shell.c", "language": "c", "sha256": "ca5e10ff55e428f5", "symbol_count": 130, "symbols": [{"doc": "Runnable-file lookup: a bare name is mapped to a toolchain directory by its suffix, so `ld.o` finds objects/ld.o, `fib.elf` finds bin/fib.elf and `w1.cvm` finds cvm/w1.cvm. A bare name with no recognised suffix (cp, freedom, ...) resolves through bin/, the command path. Every candidate is checked for existence before it is run, so a name can never be truncated * into a path it does not own.", "kind": "struct", "line": 43, "name": "ShellRunDir"}, {"doc": "Queue a desktop-icon command to run after the current user program exits. Overwrites any earlier pending launch; safe to call from the ISR (it only * copies into a kernel buffer).", "kind": "function", "line": 67, "name": "shell_queue_launch", "signature": "void shell_queue_launch(const char *cmd)"}, {"kind": "function", "line": 95, "name": "shell_readline_active", "signature": "int shell_readline_active(void)"}, {"kind": "function", "line": 96, "name": "shell_focus_park", "signature": "void shell_focus_park(void)"}, {"kind": "function", "line": 101, "name": "shell_focus_restore", "signature": "void shell_focus_restore(void)"}, {"kind": "function", "line": 127, "name": "shell_prompt", "signature": "static void shell_prompt(void)"}, {"doc": "Strict decimal parse for the `vol` builtin: the whole argument must be an optional sign followed by at least one digit, and the value is clamped to * the speaker's valid range. Garbage is rejected, never silently zero.", "kind": "function", "line": 136, "name": "shell_parse_vol", "signature": "static int shell_parse_vol(const char *s, unsigned *out)"}, {"kind": "function", "line": 169, "name": "pb_empty", "signature": "static int pb_empty(void)"}, {"kind": "function", "line": 171, "name": "pb_count", "signature": "static int pb_count(void)"}, {"kind": "function", "line": 172, "name": "pb_push_back", "signature": "static void pb_push_back(unsigned char c)"}, {"kind": "function", "line": 177, "name": "pb_push_front", "signature": "static void pb_push_front(unsigned char c)"}, {"kind": "function", "line": 182, "name": "pb_pop", "signature": "static int pb_pop(void)"}, {"kind": "function", "line": 188, "name": "pb_peek", "signature": "static int pb_peek(void)"}, {"doc": "Next raw byte (kbd queue, then serial, then PS/2) without touching the * pushback FIFO; blocks until one is available.", "kind": "function", "line": 195, "name": "raw_blocking_getc", "signature": "static int raw_blocking_getc(void)"}, {"doc": "int c = serial_getc(); if (c >= 0) return c; } if (kbd_available()) { int c = kbd_read(); if (c >= 0) return c; } if (vga_fb_active && (++mouse_tick_cnt & 0xFF) == 0) vga_fb_mouse_tick(); __asm__ volatile(\"pause\"); } } /* Non-blocking variant of the above for sequence lookahead.", "kind": "function", "line": 214, "name": "raw_try_getc", "signature": "static int raw_try_getc(void)"}, {"doc": "Called after an ESC byte has been read. Pulls the remainder of the sequence non-blocking and classifies it. Returns 1 (PageUp), 2 (PageDown), or 0 for \"not a page key\" — in which case every byte pulled EXCEPT the leading ESC is re-injected into the pushback FIFO so the caller can hand them back to * the readline layer exactly as it would a raw escape.", "kind": "function", "line": 249, "name": "consume_page_after_esc", "signature": "static int consume_page_after_esc(void)"}, {"kind": "function", "line": 274, "name": "console_getc", "signature": "* returns console_getc() simply serves the FIFO again. */\nint console_getc(void)"}, {"doc": "Next buffered byte without consuming it, or -1 when nothing is available right now. Used to tell an ESC prefix from a complete escape sequence, * which always arrives in one burst.", "kind": "function", "line": 296, "name": "console_peek", "signature": "static int console_peek(void)"}, {"doc": "Raw console multiplexer for the GETC_RAW syscall (declared in shell.h). The same serial + PS/2 sources console_getc funnels, but without the line buffering, echo or scrollback detour: a ring-3 fullscreen program reads keystrokes byte by byte. Blocking spins with a pause (and the desktop tick, as the shell idle loop does); the try variant returns -1 * when nothing is available so user space can implement its own timeout.", "kind": "function", "line": 309, "name": "console_raw_try", "signature": "int console_raw_try(void)"}, {"kind": "function", "line": 312, "name": "console_raw_get", "signature": "int console_raw_get(void)"}, {"doc": "--- Scrollback view ---- Renders a 25-row window over (scrollback ring + live screen) into the VGA framebuffer and to the serial console, hides the cursor, and lets the user page up/down through history. PageDown at the bottom, or any other key, exits; the exit key is re-injected into the pushback FIFO so the readline * that was waiting for input receives it as if scrollback never happened. define SB_LEN (VGA_ROWS * VGA_COLS * 2)", "kind": "function", "line": 325, "name": "scrollback_render", "signature": "static void scrollback_render(int voff, int total, const unsigned char *saved)"}, {"kind": "function", "line": 362, "name": "scrollback_view", "signature": "static void scrollback_view(int initial_dir)"}, {"doc": "Read one line into buf (at most size-1 chars). Echoes input and * honours backspace. Shared by the shell prompt and the editor.", "kind": "function", "line": 407, "name": "shell_readline_buf", "signature": "void shell_readline_buf(char *buf, int size)"}, {"doc": "The component of a ramdisk path after the last '/', or the whole path when * there is no '/'. Used to match a bare command word against a file's name.", "kind": "function", "line": 436, "name": "shell_name_base", "signature": "static const char *shell_name_base(const char *path)"}, {"doc": "Runnable tier of a file name for first-word TAB completion: 0=.elf, 1=.cvm, 2=.o, 3=anything else. A bare command word completes toward the highest-priority non-empty tier, so `poke` offers the game binary instead * of its icon PNG.", "kind": "function", "line": 447, "name": "shell_complete_tier", "signature": "static int shell_complete_tier(const char *nm)"}, {"doc": "Replace the current word [word_start, word_start+wlen) in `buf` with `text` and move the cursor to the end of the completed line. Bounds checked: a * completion that would overflow `size` is refused, never truncated.", "kind": "function", "line": 458, "name": "shell_complete_replace", "signature": "static void shell_complete_replace(char *buf, int size, int *pos,\n ..."}, {"kind": "function", "line": 475, "name": "shell_readline", "signature": "static void shell_readline(void)"}, {"doc": "Redraw the edit line: erase what is shown, then write `text` into buf and onto the console, leaving the text cursor at `*pos`. The cursor is drawn on the framebuffer terminal; on the serial console the text is rewritten * and the reader's position is implied by the console cursor.", "kind": "function", "line": 484, "name": "shell_hist_show", "signature": "static void shell_hist_show(char *buf, int size, int *pos, const char *text)"}, {"doc": "Repaint the edit line after a cursor move or mid-line edit: erase the whole visible line, rewrite buf, then back the console cursor up to `pos` and redraw the framebuffer text cursor there. `shell_cur` holds the on-screen cursor column, so the erase backs up to the line start before blanking it * (a serial backspace alone does not clear a character).", "kind": "function", "line": 506, "name": "shell_line_repaint", "signature": "static void shell_line_repaint(char *buf, int size, int pos)"}, {"doc": "Insert character c into buf at `pos`, shifting the tail right. Bounds * checked; the caller repaints afterwards.", "kind": "function", "line": 519, "name": "shell_line_insert", "signature": "static void shell_line_insert(char *buf, int size, int *pos, char c)"}, {"doc": "Insert character c into buf at `pos`, shifting the tail right. Bounds * checked; the caller repaints afterwards. static void shell_line_insert(char *buf, int size, int *pos, char c) { int len = (int)kstrlen(buf); if (len >= size - 1) return; kmemmove(buf + *pos + 1, buf + *pos, (unsigned long)(len - *pos + 1)); buf[*pos] = c; (*pos)++; } /* Delete the character before the cursor (backspace).", "kind": "function", "line": 528, "name": "shell_line_backspace", "signature": "static void shell_line_backspace(char *buf, int size, int *pos)"}, {"doc": "kmemmove(buf + *pos + 1, buf + *pos, (unsigned long)(len - *pos + 1)); buf[*pos] = c; (*pos)++; } /* Delete the character before the cursor (backspace). static void shell_line_backspace(char *buf, int size, int *pos) { int len = (int)kstrlen(buf); if (*pos <= 0) return; kmemmove(buf + *pos - 1, buf + *pos, (unsigned long)(len - *pos + 1)); (*pos)--; } /* Delete the character at the cursor (Delete key).", "kind": "function", "line": 536, "name": "shell_line_delete", "signature": "static void shell_line_delete(char *buf, int size, int *pos)"}, {"doc": "int len = (int)kstrlen(buf); if (*pos <= 0) return; kmemmove(buf + *pos - 1, buf + *pos, (unsigned long)(len - *pos + 1)); (*pos)--; } /* Delete the character at the cursor (Delete key). static void shell_line_delete(char *buf, int size, int *pos) { int len = (int)kstrlen(buf); if (*pos >= len) return; kmemmove(buf + *pos, buf + *pos + 1, (unsigned long)(len - *pos)); } /* Delete from the cursor to the start of the line (Ctrl+U).", "kind": "function", "line": 543, "name": "shell_line_kill_front", "signature": "static void shell_line_kill_front(char *buf, int size, int *pos)"}, {"doc": "static void shell_line_delete(char *buf, int size, int *pos) { int len = (int)kstrlen(buf); if (*pos >= len) return; kmemmove(buf + *pos, buf + *pos + 1, (unsigned long)(len - *pos)); } /* Delete from the cursor to the start of the line (Ctrl+U). static void shell_line_kill_front(char *buf, int size, int *pos) { int len = (int)kstrlen(buf); kmemmove(buf, buf + *pos, (unsigned long)(len - *pos + 1)); pos = 0; } /* Delete from the cursor to the end of the line (Ctrl+K).", "kind": "function", "line": 550, "name": "shell_line_kill_tail", "signature": "static void shell_line_kill_tail(char *buf, int size, int *pos)"}, {"doc": "/* Delete from the cursor to the start of the line (Ctrl+U). static void shell_line_kill_front(char *buf, int size, int *pos) { int len = (int)kstrlen(buf); kmemmove(buf, buf + *pos, (unsigned long)(len - *pos + 1)); pos = 0; } /* Delete from the cursor to the end of the line (Ctrl+K). static void shell_line_kill_tail(char *buf, int size, int *pos) { buf[*pos] = '\\0'; } /* Delete the word before the cursor (Ctrl+W): skip spaces, then non-spaces.", "kind": "function", "line": 555, "name": "shell_line_kill_word", "signature": "static void shell_line_kill_word(char *buf, int size, int *pos)"}, {"doc": "Most recent history entry starting with `prefix` (of length plen) that is strictly longer than the prefix, or -1 when there is none. The suggestion * for a typed prefix is always the newest match, zsh-style.", "kind": "function", "line": 567, "name": "shell_hist_newest_match", "signature": "static int shell_hist_newest_match(const char *prefix, unsigned long plen)"}, {"kind": "function", "line": 584, "name": "line", "signature": "* to the live line (handled by the caller resetting shell_hist_idx). */\nstatic void shell_hist_na..."}, {"doc": "Shell prompt readline: like shell_readline_buf plus command history. Up arrow (ESC [ A) recalls the previous command starting with the typed prefix (empty prefix recalls everything), down arrow moves forward. Right arrow at end of line accepts the newest history match for the prefix; TAB completes programs, files and recent history words. Any * editing key while scrolling returns to the live line.", "kind": "function", "line": 629, "name": "shell_readline_hist", "signature": "static void shell_readline_hist(char *buf, int size)"}, {"kind": "function", "line": 925, "name": "shell_parse", "signature": "int shell_parse(char *line, char **argv, int max_args)"}, {"kind": "function", "line": 946, "name": "shell_run", "signature": "void shell_run(void)"}, {"doc": "Load an ELF file from the ramdisk and register it under its filename stem. Returns 1 for an ET_REL program, 2 for an ET_EXEC/ET_DYN Linux process, * 0 on failure. progname_out must hold at least 32 bytes.", "kind": "function", "line": 1006, "name": "shell_load", "signature": "static int shell_load(const char *fname, char *progname_out, void **entry_out)"}, {"kind": "function", "line": 1068, "name": "outw_port", "signature": "static inline void outw_port(unsigned short port, unsigned short val)"}, {"doc": "define QEMU_PM_PORT 0x604", "kind": "function", "line": 1074, "name": "shell_cmd_poweroff", "signature": "static void shell_cmd_poweroff(void)"}, {"doc": "The toolchain directory that owns `name`, chosen by suffix. Bare names with * no recognised suffix fall through to the command path bin/.", "kind": "function", "line": 1091, "name": "shell_run_dir_for", "signature": "static const ShellRunDir *shell_run_dir_for(const char *name)"}, {"doc": "Is `resolved` (already normalised against the cwd) a real ramdisk file? A * directory name or a non-existent path is rejected, never run.", "kind": "function", "line": 1109, "name": "shell_file_is_real", "signature": "static int shell_file_is_real(const char *resolved)"}, {"doc": "Resolve `name` to a full ramdisk path suitable for running. A bare name is tried first against the cwd, then through the suffix-picked toolchain directory, then through the remaining directories as fallback. Returns 1 and fills `out` (cap bytes) on success, 0 when no candidate is a real file. A candidate that cannot fit `cap` is skipped like a missing file, never * truncated.", "kind": "function", "line": 1121, "name": "shell_resolve_run", "signature": "static int shell_resolve_run(const char *name, char *out, unsigned cap)"}, {"doc": "ET_REL trust gate (boyscout fix for ring-0 .o without validation): relocatables execute as kernel extensions, so only the toolchain directory (ETREL_TRUSTED_DIR in kernel.h) owns them. `full` is already normalised by fs_resolve (\"..\"/\".\"/\"//\" collapsed, no symlinks on MiniFS), so a prefix match is a containment proof, not a string hope. TOCTOU note: the bytes are snapshotted into a kernel buffer at open time and the gate checks the same resolved path the bytes were read from; swapping the file between resolve and open only changes WHICH bytes load, and hostile bytes still face the ELF/reloc validators plus * the ETREL_IMAGE_MAX cap. ET_EXEC/ET_DYN/CVM are unaffected.", "kind": "function", "line": 1163, "name": "etrel_path_trusted", "signature": "static int etrel_path_trusted(const char *full)"}, {"doc": "Run a raw ELF image (ET_REL, ET_EXEC or ET_DYN) already read into `data`. argv[0] is the program name the program sees. Returns the exit code, or -1 when the buffer is not a loadable ELF. The image is not registered; it is * relocated and executed fresh, then dropped.", "kind": "function", "line": 1177, "name": "shell_run_elf_buf_path", "signature": "static int shell_run_elf_buf_path(const char *data, unsigned size, int argc,\n ..."}, {"doc": "Load the ramdisk file at `full` and run it as an ELF. Returns the exit * code, or -1 when the file cannot be read or loaded.", "kind": "function", "line": 1202, "name": "shell_run_elf_file", "signature": "static int shell_run_elf_file(const char *full, int argc, char **argv)"}, {"doc": "Load a Linux ELF from the MiniFS disk and run it (preserves the historical * `run` fallback when a name is not on the ramdisk).", "kind": "function", "line": 1215, "name": "shell_run_elf_minifs", "signature": "static int shell_run_elf_minifs(const char *name, int argc, char **argv)"}, {"doc": "Run a `.cvm` module at the resolved path `full`. The interpreter is loaded from the ramdisk on first use and cached. argv[0] is the module name the module sees; the interpreter passes it and the remaining words through as * a Linux-style argv.", "kind": "function", "line": 1265, "name": "shell_run_cvm", "signature": "static int shell_run_cvm(const char *full, int argc, char **argv)"}, {"doc": "Run `name` as a ramdisk/MiniFS file: `.cvm` modules through the interpreter, ELF files by content through the matching loader. Returns the * exit code, or -1 when the name resolves to nothing runnable.", "kind": "function", "line": 1301, "name": "shell_run_file", "signature": "static int shell_run_file(const char *name, int argc, char **argv)"}, {"doc": "--- Multitask run (mrun): concurrent isolated ELFs ---- `mrun a.elf b.elf ...` loads each ET_EXEC/ET_DYN into its own user window (proc_spawn_elf) and waits for all of them. The 100 Hz timer preempts the BSP across the READY set, so small programs overlap in time instead of running one after another. ET_REL is refused (ring-0 extensions are not multitask-safe); `.cvm` keeps the `run` path. Best-effort limits of this revision: no mmap/VMA isolation between the children (programs that mmap concurrently share the global VMA * tree) and one shared fd table; exit codes print per program.", "kind": "function", "line": 1345, "name": "shell_read_elf_bytes", "signature": "static int shell_read_elf_bytes(const char *name, unsigned char **out,\n ..."}, {"kind": "function", "line": 1411, "name": "code", "signature": "* the last exit code (130 when interrupted). */\nstatic int shell_wait_fg(int *pids, int n, int ki..."}, {"kind": "function", "line": 1444, "name": "shell_cmd_mrun", "signature": "static void shell_cmd_mrun(int argc, char **argv)"}, {"doc": "`run &`: background a single isolated ELF (same spawn path as mrun). ET_REL and .cvm stay foreground-only: ring-0 extensions and the * single cached interpreter cannot run detached.", "kind": "function", "line": 1493, "name": "shell_run_bg", "signature": "static void shell_run_bg(const char *name, int argc, char **argv)"}, {"doc": "Unified dispatcher used by `run` and by bare commands: a registered program wins, then the runnable-file resolver. argv[0] is the command/program name * as typed. Returns the exit code, or -1 when the name cannot be run.", "kind": "function", "line": 1521, "name": "shell_run_any", "signature": "int shell_run_any(const char *name, int argc, char **argv)"}, {"doc": "--- Graphics debugging (`gfx` builtin) ---- The serial console is the observability surface the BDD suite drives, but a framebuffer program's output never reaches it. `gfx` lifts the graphics side onto the console: state, single-pixel sampling, region statistics and a PPM screenshot are all reported as text, so the desktop and the windowed graphics programs are testable from the shell exactly like `date`/`vol` are. Every coordinate is clamped to the framebuffer and every parse is * strict, so a malformed invocation is a usage diagnostic, never a crash.", "kind": "function", "line": 1584, "name": "gfx_parse_int", "signature": "static int gfx_parse_int(const char *s, int *out)"}, {"doc": "Read the current 256-entry VGA DAC palette (3x6-bit per entry, read at 8-bit precision by the kernel's normalisation). Used by `gfx shot` to turn the * indexed framebuffer into an RGB PPM.", "kind": "function", "line": 1604, "name": "gfx_read_palette", "signature": "static void gfx_read_palette(unsigned char pal[768])"}, {"kind": "function", "line": 1610, "name": "shell_cmd_gfx", "signature": "static void shell_cmd_gfx(int argc, char **argv)"}, {"doc": "`wm ` — window-manager operations, exposed as a shell builtin so the tiling-WM behaviour is observable and testable over the serial console exactly like `date`/`vol`. The operations are the same functions the title-bar buttons, the Alt/Super shortcuts and the mouse tick call, so * the framebuffer and the shell can never disagree.", "kind": "function", "line": 1763, "name": "shell_cmd_wm", "signature": "static void shell_cmd_wm(int argc, char **argv)"}, {"kind": "function", "line": 1838, "name": "tree", "signature": "* tree (mmap-heavy jobs stay best-effort), legacy blocking `run` ignores\n * Ctrl+C (it never poll..."}, {"kind": "function", "line": 1849, "name": "shell_cmd_jobs", "signature": "static void shell_cmd_jobs(void)"}, {"kind": "function", "line": 1863, "name": "shell_cmd_wait", "signature": "static void shell_cmd_wait(int argc, char **argv)"}, {"kind": "function", "line": 1887, "name": "shell_cmd_kill", "signature": "static void shell_cmd_kill(int argc, char **argv)"}, {"doc": "`hash ` — XXH64 (64-bit, seed 0) of a ramdisk/MiniFS file, streamed in bounded chunks so a large MiniFS file never needs a whole-file buffer. This is the integrity tool for CVM modules and any ramdisk payload: an image built from source is compared against a recorded hash, and a module * that drifted is detected before it is trusted.", "kind": "function", "line": 1909, "name": "shell_cmd_hash", "signature": "static void shell_cmd_hash(int argc, char **argv)"}, {"kind": "function", "line": 1923, "name": "shell_exec_builtin", "signature": "void shell_exec_builtin(int argc, char **argv)"}, {"kind": "function", "line": 98, "name": "vga_fb_park_line", "signature": "vga_fb_park_line(cmd_buf, shell_edit_pos);"}, {"kind": "function", "line": 106, "name": "kmemcpy", "signature": "kmemcpy(cmd_buf, tmp, (unsigned long)CMD_BUF_SZ);"}, {"kind": "function", "line": 119, "name": "vga_puts", "signature": "else vga_puts(\"\\nminiOS> \");"}, {"kind": "function", "line": 125, "name": "vga_fb_text_cursor", "signature": "vga_fb_text_cursor(shell_edit_pos);"}, {"kind": "function", "line": 209, "name": "volatile", "signature": "__asm__ volatile(\"pause\");"}, {"kind": "function", "line": 341, "name": "serial_putc", "signature": "serial_putc(ch);"}, {"kind": "function", "line": 364, "name": "sb_init", "signature": "sb_init();"}, {"kind": "function", "line": 371, "name": "vga_cursor_enable", "signature": "vga_cursor_enable(0);"}, {"kind": "function", "line": 400, "name": "vga_set_xy", "signature": "vga_set_xy(saved_x, saved_y);"}, {"kind": "function", "line": 401, "name": "vga_set_cursor", "signature": "vga_set_cursor(saved_x, saved_y);"}, {"kind": "function", "line": 409, "name": "kmemset", "signature": "kmemset(buf, 0, (unsigned long)size);"}, {"kind": "function", "line": 414, "name": "vga_putc", "signature": "vga_putc('\\n');"}, {"kind": "function", "line": 522, "name": "kmemmove", "signature": "kmemmove(buf + *pos + 1, buf + *pos, (unsigned long)(len - *pos + 1));"}, {"kind": "function", "line": 662, "name": "vga_fb_hide_text_cursor", "signature": "vga_fb_hide_text_cursor();"}, {"kind": "function", "line": 687, "name": "shell_hist_nav", "signature": "shell_hist_nav(buf, size, &pos, b == KEY_ARR_UP);"}, {"kind": "function", "line": 773, "name": "root", "signature": "* MiniFS root (where the big ELFs live under bare names), * and only the highest-priority non-empty tier is kept. An * explicit path or an argument word keeps every match, so * navigating to data file"}, {"doc": "An empty submit (Enter / Ctrl+D on a blank line) consumed the live prompt too: clear it before looping, or every refocus * stacks another `miniOS> ` on the window.", "kind": "function", "line": 972, "name": "vga_fb_clear_prompt", "signature": "vga_fb_clear_prompt();"}, {"kind": "function", "line": 1017, "name": "ramdisk_read", "signature": "ramdisk_read(f, data, 0, data_size);"}, {"kind": "function", "line": 1033, "name": "minifs_read", "signature": "minifs_read(ino, data, 0, data_size);"}, {"kind": "function", "line": 1054, "name": "kprintf", "signature": "kprintf(\"load: refusing untrusted ET_REL '%s'\", resolved);"}, {"kind": "function", "line": 1065, "name": "kfree", "signature": "kfree(data);"}, {"kind": "function", "line": 1190, "name": "k_run_rel", "signature": "return k_run_rel(entry, argc, argv);"}, {"kind": "function", "line": 1195, "name": "k_exec_user", "signature": "return k_exec_user(entry, argc, argv);"}, {"kind": "function", "line": 1338, "name": "window", "signature": "* window (proc_spawn_elf) and waits for all of them. The 100 Hz timer * preempts the BSP across the READY set, so small programs overlap in * time instead of running one after another. ET_REL is refus"}, {"kind": "function", "line": 1441, "name": "yield", "signature": "yield();"}, {"doc": "Record the launch name for the taskbar button: if this program goes * graphics, the button resolves its icon through etc/shortcuts.", "kind": "function", "line": 1525, "name": "vga_fb_set_gfx_program", "signature": "vga_fb_set_gfx_program(name);"}, {"kind": "function", "line": 1547, "name": "context", "signature": "* from ISR context (which corrupts the running program's state). */ shell_queue_launch(cmd);"}, {"kind": "function", "line": 1606, "name": "outb", "signature": "outb(0x3C7, 0);"}, {"kind": "function", "line": 1720, "name": "kfwrite", "signature": "kfwrite(hdr, 1, (unsigned long)n, f);"}, {"kind": "function", "line": 1739, "name": "kfclose", "signature": "kfclose(f);"}, {"kind": "function", "line": 1780, "name": "vga_fb_tile_all", "signature": "vga_fb_tile_all();"}, {"kind": "function", "line": 1796, "name": "vga_fb_snap_window", "signature": "vga_fb_snap_window(z);"}, {"kind": "function", "line": 1811, "name": "vga_fb_focus_next", "signature": "vga_fb_focus_next();"}, {"kind": "function", "line": 1852, "name": "spin_lock", "signature": "spin_lock(&sched_lock);"}, {"kind": "function", "line": 1860, "name": "spin_unlock", "signature": "spin_unlock(&sched_lock);"}, {"kind": "function", "line": 1917, "name": "XXH64_reset", "signature": "XXH64_reset(&h, 0);"}, {"kind": "function", "line": 1971, "name": "vga_clear", "signature": "vga_clear();"}, {"kind": "function", "line": 1977, "name": "shell_cmd_edit", "signature": "shell_cmd_edit(argc, argv);"}, {"kind": "function", "line": 1983, "name": "shell_report", "signature": "shell_report(\"ls: name too long: \", argv[1]);"}, {"kind": "function", "line": 2093, "name": "minifs_stat", "signature": "minifs_stat(de.inode, &st);"}, {"kind": "function", "line": 2133, "name": "ramdisk_delete", "signature": "ramdisk_delete(f);"}, {"kind": "function", "line": 2254, "name": "net_cmd_status", "signature": "net_cmd_status();"}, {"kind": "function", "line": 2257, "name": "net_cmd_ping", "signature": "net_cmd_ping(argv[2]);"}, {"kind": "function", "line": 2260, "name": "net_cmd_dns", "signature": "net_cmd_dns(argv[2]);"}, {"kind": "function", "line": 2282, "name": "rq_stats", "signature": "rq_stats(c, &hits, &steals, &drops);"}, {"kind": "function", "line": 2346, "name": "pcspk_set_volume", "signature": "pcspk_set_volume(v);"}, {"kind": "function", "line": 2383, "name": "kstack_report", "signature": "kstack_report();"}, {"kind": "function", "line": 2387, "name": "sb16_counters", "signature": "sb16_counters(&c);"}, {"kind": "function", "line": 2406, "name": "shell_cmd_unzip", "signature": "shell_cmd_unzip(argc, argv);"}, {"kind": "function", "line": 2409, "name": "shell_cmd_zip", "signature": "shell_cmd_zip(argc, argv);"}, {"kind": "function", "line": 2431, "name": "shell_report_exit", "signature": "else shell_report_exit(ret);"}, {"kind": "function", "line": 2462, "name": "shell_cmd_sh", "signature": "shell_cmd_sh(argc, argv);"}, {"kind": "macro", "line": 12, "name": "XXH_STATIC_LINKING_ONLY", "signature": "#define XXH_STATIC_LINKING_ONLY"}, {"kind": "macro", "line": 35, "name": "SHELL_CVM_INTERP", "signature": "#define SHELL_CVM_INTERP"}, {"kind": "macro", "line": 54, "name": "SHELL_RUN_DIRS", "signature": "#define SHELL_RUN_DIRS"}, {"kind": "macro", "line": 77, "name": "SHELL_HIST_MAX", "signature": "#define SHELL_HIST_MAX"}, {"kind": "macro", "line": 165, "name": "PB_LEN", "signature": "#define PB_LEN"}, {"kind": "macro", "line": 231, "name": "MAX_SEQ_POLL", "signature": "#define MAX_SEQ_POLL"}, {"kind": "macro", "line": 324, "name": "SB_LEN", "signature": "#define SB_LEN"}, {"kind": "macro", "line": 346, "name": "SB_PGUP", "signature": "#define SB_PGUP"}, {"kind": "macro", "line": 348, "name": "SB_PGDN", "signature": "#define SB_PGDN"}, {"kind": "macro", "line": 349, "name": "SB_EXIT", "signature": "#define SB_EXIT"}, {"kind": "macro", "line": 1072, "name": "QEMU_PM_PORT", "signature": "#define QEMU_PM_PORT"}]}, {"doc": "include \"kernel.h\" string.c -- Kernel string and memory functions.", "id": "kernel/string.c", "kind": "module", "label": "string.c", "language": "c", "sha256": "ac33d742651efcd0", "symbol_count": 13, "symbols": [{"doc": "string.c -- Kernel string and memory functions. Pure functions with no dependencies beyond their own prototypes in kernel.h. These replace the libc equivalents for the freestanding kernel and are also registered as kernel symbols for ET_REL programs. Contract: All functions handle NUL-terminated strings or fixed-size buffers. kmemmove handles overlapping regions correctly (copy forward when dst < src, backward when dst > src). kstrncpy does NOT NUL-pad; the caller must ensure the destination is already zeroed if NUL-termination is required.", "kind": "function", "line": 16, "name": "kstrlen", "signature": "unsigned long kstrlen(const char *s)"}, {"kind": "function", "line": 22, "name": "kstrcpy", "signature": "char *kstrcpy(char *dst, const char *src)"}, {"kind": "function", "line": 28, "name": "kstrncpy", "signature": "char *kstrncpy(char *dst, const char *src, unsigned long n)"}, {"kind": "function", "line": 34, "name": "kstrncat", "signature": "char *kstrncat(char *dst, const char *src, unsigned long n)"}, {"kind": "function", "line": 42, "name": "kstrcmp", "signature": "int kstrcmp(const char *a, const char *b)"}, {"kind": "function", "line": 47, "name": "kstrncmp", "signature": "int kstrncmp(const char *a, const char *b, unsigned long n)"}, {"kind": "function", "line": 52, "name": "kstrchr", "signature": "char *kstrchr(const char *s, int c)"}, {"kind": "function", "line": 57, "name": "kstrstr", "signature": "char *kstrstr(const char *hay, const char *ndl)"}, {"kind": "function", "line": 67, "name": "kmemcpy", "signature": "void *kmemcpy(void *dst, const void *src, unsigned long n)"}, {"kind": "function", "line": 74, "name": "kmemset", "signature": "void *kmemset(void *dst, int c, unsigned long n)"}, {"kind": "function", "line": 80, "name": "kmemcmp", "signature": "int kmemcmp(const void *a, const void *b, unsigned long n)"}, {"kind": "function", "line": 86, "name": "kmemmove", "signature": "void *kmemmove(void *dst, const void *src, unsigned long n)"}, {"kind": "function", "line": 94, "name": "katol", "signature": "long katol(const char *s)"}]}, {"doc": "include \"kernel.h\" ================================================================", "id": "kernel/symtab.c", "kind": "module", "label": "symtab.c", "language": "c", "sha256": "1ed29fa121f5461c", "symbol_count": 9, "symbols": [{"kind": "function", "line": 9, "name": "k_register_symbol", "signature": "void k_register_symbol(const char *name, void *addr)"}, {"kind": "function", "line": 17, "name": "ksym_resolve", "signature": "void *ksym_resolve(const char *name)"}, {"kind": "function", "line": 33, "name": "kprog_slot", "signature": "KProg *kprog_slot(const char *name)"}, {"kind": "function", "line": 41, "name": "kprog_lookup", "signature": "KProg *kprog_lookup(const char *name)"}, {"kind": "function", "line": 48, "name": "k_register_program", "signature": "void k_register_program(const char *name, prog_entry_t entry)"}, {"kind": "function", "line": 56, "name": "k_register_process", "signature": "void k_register_process(const char *name, void *proc_entry)"}, {"kind": "function", "line": 64, "name": "k_spawn", "signature": "int k_spawn(const char *name, int argc, char **argv)"}, {"kind": "function", "line": 52, "name": "kstrncpy", "signature": "kstrncpy(p->name, name, sizeof(p->name) - 1);"}, {"kind": "function", "line": 71, "name": "k_run_rel", "signature": "return k_run_rel(kprog_table[i].entry, argc, argv);"}]}, {"doc": "sync.c -- Blocking synchronization primitives (roadmap Phase 3.1).", "id": "kernel/sync.c", "kind": "module", "label": "sync.c", "language": "c", "sha256": "6b2b2118135b7c30", "symbol_count": 31, "symbols": [{"doc": "endif", "kind": "function", "line": 26, "name": "wq_init", "signature": "void wq_init(wait_queue_t *q)"}, {"kind": "function", "line": 32, "name": "sleep_on", "signature": "void sleep_on(wait_queue_t *q)"}, {"kind": "function", "line": 53, "name": "wake_up", "signature": "int wake_up(wait_queue_t *q)"}, {"kind": "function", "line": 69, "name": "wake_up_all", "signature": "int wake_up_all(wait_queue_t *q)"}, {"kind": "function", "line": 75, "name": "mutex_init", "signature": "void mutex_init(mutex_t *m)"}, {"kind": "function", "line": 92, "name": "pi_valid", "signature": "static int pi_valid(int pid)"}, {"kind": "function", "line": 98, "name": "pi_set_base", "signature": "void pi_set_base(int pid, int prio)"}, {"kind": "function", "line": 107, "name": "pi_get_eff", "signature": "int pi_get_eff(int pid)"}, {"kind": "function", "line": 112, "name": "pi_recompute", "signature": "static void pi_recompute(int pid)"}, {"kind": "function", "line": 123, "name": "pi_boost", "signature": "static void pi_boost(int waiter, int owner)"}, {"kind": "function", "line": 149, "name": "mutex_lock", "signature": "void mutex_lock(mutex_t *m)"}, {"kind": "function", "line": 169, "name": "mutex_trylock", "signature": "int mutex_trylock(mutex_t *m)"}, {"kind": "function", "line": 185, "name": "mutex_unlock", "signature": "void mutex_unlock(mutex_t *m)"}, {"kind": "function", "line": 206, "name": "sem_init", "signature": "void sem_init(sem_t *s, int value)"}, {"kind": "function", "line": 212, "name": "sem_wait", "signature": "void sem_wait(sem_t *s)"}, {"kind": "function", "line": 226, "name": "sem_post", "signature": "void sem_post(sem_t *s)"}, {"kind": "function", "line": 234, "name": "cond_init", "signature": "void cond_init(cond_t *c)"}, {"kind": "function", "line": 238, "name": "cond_wait", "signature": "void cond_wait(cond_t *c, mutex_t *m)"}, {"kind": "function", "line": 244, "name": "cond_signal", "signature": "void cond_signal(cond_t *c)"}, {"kind": "function", "line": 248, "name": "cond_broadcast", "signature": "void cond_broadcast(cond_t *c)"}, {"kind": "function", "line": 252, "name": "rwlock_init", "signature": "void rwlock_init(rwlock_t *rw)"}, {"kind": "function", "line": 259, "name": "rwlock_read_lock", "signature": "void rwlock_read_lock(rwlock_t *rw)"}, {"kind": "function", "line": 273, "name": "rwlock_read_unlock", "signature": "void rwlock_read_unlock(rwlock_t *rw)"}, {"kind": "function", "line": 282, "name": "rwlock_write_lock", "signature": "void rwlock_write_lock(rwlock_t *rw)"}, {"kind": "function", "line": 296, "name": "rwlock_write_unlock", "signature": "void rwlock_write_unlock(rwlock_t *rw)"}, {"kind": "function", "line": 28, "name": "spin_init", "signature": "spin_init(&q->lock);"}, {"kind": "function", "line": 35, "name": "spin_lock_irqsave", "signature": "spin_lock_irqsave(&q->lock, &flags);"}, {"kind": "function", "line": 38, "name": "spin_unlock_irqrestore", "signature": "spin_unlock_irqrestore(&q->lock, flags);"}, {"kind": "function", "line": 51, "name": "schedule", "signature": "schedule();"}, {"kind": "function", "line": 164, "name": "mutex_note_waiter", "signature": "mutex_note_waiter(m, me);"}, {"doc": "Host unit-test hook (tests/test_sync.c, `make test-sync`): current_pid * is mapped to this test global by -Dcurrent_pid=t_cur_pid.", "kind": "variable", "line": 24, "name": "t_cur_pid", "signature": "extern int t_cur_pid;"}]}, {"doc": "syscalls.c - Linux x86-64 syscall dispatcher and SYS_SPAWN.", "id": "kernel/syscalls.c", "kind": "module", "label": "syscalls.c", "language": "c", "sha256": "9b90570a3e9bd0f6", "symbol_count": 157, "symbols": [{"kind": "struct", "line": 554, "name": "kiovec"}, {"kind": "struct", "line": 64, "name": "minios_syscall_entry_t"}, {"doc": "wall_us_now: RTC-anchored wall clock in microseconds (Phase 0.2/0.3). The RTC gives whole seconds; the fraction is the free-running ktime_us rebased at every RTC second edge, so successive reads order correctly across the edge. Shared by gettimeofday (96), clock_gettime (228) and the shell `clock` builtin: one source, never three disagreeing clocks. On RTC failure the base stays 0 and time reads as small uptime-like * values; callers that need an epoch treat 0 as \"no clock\".", "kind": "function", "line": 82, "name": "wall_us_now", "signature": "unsigned long wall_us_now(void)"}, {"kind": "function", "line": 91, "name": "sys_minios_dns", "signature": "static long sys_minios_dns(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 97, "name": "sys_minios_tls_retired", "signature": "static long sys_minios_tls_retired(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 104, "name": "sys_linux_futex", "signature": "static long sys_linux_futex(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 133, "name": "sys_minios_time", "signature": "static long sys_minios_time(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 137, "name": "sys_minios_kbd", "signature": "static long sys_minios_kbd(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 157, "name": "sys_minios_palette", "signature": "static long sys_minios_palette(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 169, "name": "sys_minios_kbd_raw", "signature": "static long sys_minios_kbd_raw(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 175, "name": "sys_minios_vga_mode", "signature": "static long sys_minios_vga_mode(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 182, "name": "sys_minios_pcspk_init", "signature": "static long sys_minios_pcspk_init(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 186, "name": "sys_minios_pcspk_tone", "signature": "static long sys_minios_pcspk_tone(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 200, "name": "sys_minios_doom_frame", "signature": "static long sys_minios_doom_frame(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 205, "name": "sys_minios_rtc", "signature": "static long sys_minios_rtc(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 219, "name": "sys_minios_fb_info", "signature": "static long sys_minios_fb_info(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 231, "name": "sys_minios_pcspk_vol", "signature": "static long sys_minios_pcspk_vol(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 239, "name": "sys_minios_spawn", "signature": "static long sys_minios_spawn(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 250, "name": "sys_minios_lz4_compress", "signature": "static long sys_minios_lz4_compress(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 263, "name": "sys_minios_lz4_decompress", "signature": "static long sys_minios_lz4_decompress(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 277, "name": "sys_minios_mouse", "signature": "static long sys_minios_mouse(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 286, "name": "sys_minios_nk_frame", "signature": "static long sys_minios_nk_frame(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 297, "name": "sys_minios_sb16_open", "signature": "static long sys_minios_sb16_open(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 302, "name": "sys_minios_sb16_submit", "signature": "static long sys_minios_sb16_submit(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 310, "name": "sys_minios_gfx_title", "signature": "static long sys_minios_gfx_title(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 324, "name": "sys_minios_sb16_pump", "signature": "static long sys_minios_sb16_pump(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 328, "name": "sys_minios_sb16_stream_open", "signature": "static long sys_minios_sb16_stream_open(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 332, "name": "sys_minios_sb16_stream_close", "signature": "static long sys_minios_sb16_stream_close(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 336, "name": "sys_minios_sb16_stream_submit", "signature": "static long sys_minios_sb16_stream_submit(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 344, "name": "sys_minios_sb16_stream_vol", "signature": "static long sys_minios_sb16_stream_vol(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 354, "name": "sys_minios_clone", "signature": "static long sys_minios_clone(long flags, long newsp, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 362, "name": "sys_minios_thread_spawn", "signature": "static long sys_minios_thread_spawn(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 372, "name": "sys_minios_futex_wait", "signature": "static long sys_minios_futex_wait(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 378, "name": "sys_minios_futex_wake", "signature": "static long sys_minios_futex_wake(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 387, "name": "batch_kdispatch", "signature": "static long batch_kdispatch(uint32_t opcode)"}, {"kind": "function", "line": 402, "name": "DOOM_FRAME", "signature": "* DOOM_FRAME (211) and NK_FRAME (220) stay as compat aliases. */\nstatic long sys_minios_gfx_prese..."}, {"doc": "Seccomp-basic (238): a1 = op (1 deny-one, 2 allow-one, 3 deny-all), a2 = syscall number (ops 1-2). Applies to current_pid only; the * 200..231 window is filterable, Linux numbers never are.", "kind": "function", "line": 420, "name": "sys_minios_seccomp", "signature": "static long sys_minios_seccomp(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"doc": "int pid = current_pid; if (a1 == SECCOMP_OP_DENY_ONE) return seccomp_deny_one(pid, (int)a2); if (a1 == SECCOMP_OP_ALLOW_ONE) return seccomp_allow_one(pid, (int)a2); if (a1 == SECCOMP_OP_DENY_ALL) { int n; if (pid < 0 || pid >= MAX_PROCS) return -1; if (procs[pid].state == PROC_FREE) return -1; for (n = SECCOMP_MIN; n <= SECCOMP_MAX; n++) procs[pid].seccomp_deny |= SECCOMP_BIT(n); procs[pid].seccomp_deny &= ~SECCOMP_BIT(MINIOS_SYS_TIME); return 0; } return -22; } /* Nice (239): a1 = new nice when a2 != 0, else query. Clamped -20..19.", "kind": "function", "line": 436, "name": "sys_minios_nice", "signature": "static long sys_minios_nice(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"doc": "Raw keystroke read for fullscreen ring-3 programs (vedit): one byte from the serial + PS/2 multiplexer with no line buffering, no echo and no scrollback detour. a1 == 0 polls (-1 when idle, so user space can bound its own escape-sequence timeout); otherwise blocks until a byte. * Bytes are the same CSI form both consoles carry, PS/2 included.", "kind": "function", "line": 453, "name": "sys_minios_getc_raw", "signature": "static long sys_minios_getc_raw(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 458, "name": "sys_minios_submit_batch", "signature": "static long sys_minios_submit_batch(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"doc": "RLIMIT/cgroups-lite (240): a1 = op (SET/GET), a2 = resource (AS/CPU/NOFILE), a3 = value for SET. Values are bytes, ticks, count; 0 clears (unlimited). Only lowers... no: any non-negative value sets (raising allowed; the threat model is cooperative containment, not * privilege). Returns the old value on SET, current on GET.", "kind": "function", "line": 482, "name": "sys_minios_rlimit", "signature": "static long sys_minios_rlimit(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 559, "name": "syscall_trace_enabled", "signature": "long syscall_trace_enabled(void)"}, {"kind": "function", "line": 561, "name": "syscall_trace_set", "signature": "void syscall_trace_set(int on)"}, {"kind": "function", "line": 606, "name": "sys_linux_write", "signature": "static long sys_linux_write(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 616, "name": "sys_linux_writev", "signature": "static long sys_linux_writev(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"doc": "return EFAULT; for (k = 0; k < cnt; k++) { unsigned long j; if (iov[k].iov_len > 0 && !user_range_ok((unsigned long)iov[k].iov_base, iov[k].iov_len)) return EFAULT; if (a1 == 1 || a1 == 2) for (j = 0; j < iov[k].iov_len; j++) vga_putc(iov[k].iov_base[j]); total += (long)iov[k].iov_len; } return total; } /* Shared by sys_linux_open (2) and the openat fall-through (257).", "kind": "function", "line": 637, "name": "do_open_path", "signature": "static long do_open_path(const char *path, long flags)"}, {"kind": "function", "line": 661, "name": "sys_linux_open", "signature": "static long sys_linux_open(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 666, "name": "sys_linux_close", "signature": "static long sys_linux_close(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 677, "name": "sys_linux_lseek", "signature": "static long sys_linux_lseek(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"doc": "Back isolated user windows (mrun/proc_spawn_elf): their page tables start with only segments + stack mapped, so heap/mmap growth must materialize pages. Shared-window PTEs are already present and the call * below is a no-op there: zero behavior change on the legacy path.", "kind": "function", "line": 692, "name": "mm_ensure_cur", "signature": "static int mm_ensure_cur(unsigned long start, unsigned long end)"}, {"kind": "function", "line": 700, "name": "sys_linux_brk", "signature": "static long sys_linux_brk(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 729, "name": "sys_linux_mmap", "signature": "static long sys_linux_mmap(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 784, "name": "sys_linux_munmap", "signature": "static long sys_linux_munmap(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 802, "name": "sys_linux_mprotect", "signature": "static long sys_linux_mprotect(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 807, "name": "sys_linux_sigaction", "signature": "static long sys_linux_sigaction(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 812, "name": "sys_linux_sigprocmask", "signature": "static long sys_linux_sigprocmask(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 817, "name": "sys_linux_ioctl", "signature": "static long sys_linux_ioctl(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 822, "name": "sys_linux_access", "signature": "static long sys_linux_access(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 844, "name": "sys_linux_yield", "signature": "static long sys_linux_yield(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 849, "name": "sys_linux_getpid", "signature": "static long sys_linux_getpid(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 854, "name": "sys_linux_socket", "signature": "static long sys_linux_socket(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 859, "name": "sys_linux_connect", "signature": "static long sys_linux_connect(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 865, "name": "sys_linux_sendto", "signature": "static long sys_linux_sendto(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 870, "name": "sys_linux_recvfrom", "signature": "static long sys_linux_recvfrom(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 875, "name": "sys_linux_shutdown", "signature": "static long sys_linux_shutdown(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 880, "name": "sys_linux_poll", "signature": "static long sys_linux_poll(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 887, "name": "sys_linux_fork", "signature": "static long sys_linux_fork(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 892, "name": "sys_linux_vfork", "signature": "static long sys_linux_vfork(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 897, "name": "sys_linux_execve", "signature": "static long sys_linux_execve(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 919, "name": "sys_linux_exit", "signature": "static long sys_linux_exit(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 928, "name": "code", "signature": "* exit code (no WEXITSTATUS encoding: MiniOS reports codes directly). */\nstatic long sys_linux_wa..."}, {"kind": "function", "line": 946, "name": "sys_linux_kill", "signature": "static long sys_linux_kill(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 951, "name": "sys_linux_flock", "signature": "static long sys_linux_flock(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"doc": "fsync/fdatasync: the ramdisk is memory (always durable) and MiniFS persists through kfclose/minifs_sync, so there is nothing to flush that close would not already flush. Success is truthful here, not a * lie: no write-back cache sits between the caller and the medium.", "kind": "function", "line": 961, "name": "sys_linux_fsync", "signature": "static long sys_linux_fsync(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 965, "name": "sys_linux_fdatasync", "signature": "static long sys_linux_fdatasync(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 970, "name": "sys_linux_getcwd", "signature": "static long sys_linux_getcwd(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 982, "name": "sys_linux_unlink", "signature": "static long sys_linux_unlink(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 995, "name": "sys_linux_readlink", "signature": "static long sys_linux_readlink(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 1000, "name": "sys_linux_fstat", "signature": "static long sys_linux_fstat(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 1020, "name": "sys_linux_gettimeofday", "signature": "static long sys_linux_gettimeofday(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 1043, "name": "sys_linux_arch_prctl", "signature": "static long sys_linux_arch_prctl(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 1055, "name": "sys_linux_gettid", "signature": "static long sys_linux_gettid(long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 1108, "name": "trace_is_noisy", "signature": "static int trace_is_noisy(long n)"}, {"kind": "function", "line": 1113, "name": "ksyscall", "signature": "long ksyscall(long n, long a1, long a2, long a3, long a4, long a5, long a6)"}, {"doc": "--- User-pointer validation --------------------------------------------- The syscall boundary is the hardened edge between ring 3 and ring 0. Every pointer a Linux ABI program hands the kernel must lie inside the user window [USER_LOAD_BASE, USER_LOAD_END), because that is the only memory the page tables marked user-accessible. Anything else — kernel heap, kernel image, page tables, MMIO — must be rejected before a single * dereference. All arithmetic is overflow checked.", "kind": "function", "line": 1135, "name": "user_range_ok", "signature": "int user_range_ok(unsigned long p, unsigned long len)"}, {"kind": "function", "line": 1153, "name": "products", "signature": "* products (writev cnt*sizeof, poll a2*8, spawn (argc+1)*sizeof) are\n * pre-bounded against (END-..."}, {"kind": "function", "line": 1165, "name": "ksyscall_dispatch", "signature": "static long ksyscall_dispatch(long n, long a1, long a2, long a3, long a4, long a5, long a6)"}, {"kind": "function", "line": 1371, "name": "tools", "signature": "* ET_EXEC tools (lzss/lz4/aes/json/freedom) are run by the shell, not from an\n * interpreter.\n */..."}, {"kind": "function", "line": 51, "name": "by", "signature": "* is indexed by (syscall_number - 200). New syscalls are added by: * 1. Adding a MINIOS_SYS_* constant to progs/minios_abi.h * 2. Implementing a static long sys_*(long a1, ..., long a6) function here "}, {"doc": "define MINIOS_SYSCALL_BASE 200 define MINIOS_SYSCALL_COUNT 128", "kind": "function", "line": 71, "name": "k_syscall_spawn", "signature": "static int k_syscall_spawn(const char *path, const char *redirect, int child_argc, const char **child_argv);"}, {"kind": "function", "line": 86, "name": "rtc_wall_seconds", "signature": "rtc_wall_seconds(&sec);"}, {"kind": "function", "line": 89, "name": "wall_us_from_parts", "signature": "return wall_us_from_parts(base_sec, base_ktime, now);"}, {"kind": "function", "line": 95, "name": "net_sys_dns", "signature": "return net_sys_dns(a1);"}, {"kind": "function", "line": 126, "name": "futex_wake", "signature": "return futex_wake(uaddr, (int)n);"}, {"kind": "function", "line": 148, "name": "volatile", "signature": "__asm__ volatile(\"inb $0x60, %0\" : \"=a\"(sc));"}, {"kind": "function", "line": 155, "name": "kbd_q_pop", "signature": "return kbd_q_pop();"}, {"kind": "function", "line": 162, "name": "SANITIZE_RANGE", "signature": "SANITIZE_RANGE(a1, 768);"}, {"kind": "function", "line": 166, "name": "vga_fb_set_gfx_palette", "signature": "vga_fb_set_gfx_palette(tmp);"}, {"kind": "function", "line": 171, "name": "kbd_raw_mode_set", "signature": "kbd_raw_mode_set((int)a1);"}, {"kind": "function", "line": 172, "name": "kbd_flush_all", "signature": "kbd_flush_all();"}, {"kind": "function", "line": 177, "name": "vga_mode_set", "signature": "vga_mode_set((int)a1);"}, {"kind": "function", "line": 179, "name": "vga_fb_set_gfx_mode", "signature": "vga_fb_set_gfx_mode((int)a1);"}, {"kind": "function", "line": 184, "name": "pcspk_init", "signature": "pcspk_init();"}, {"kind": "function", "line": 188, "name": "pcspk_tone", "signature": "pcspk_tone((unsigned)a1);"}, {"kind": "function", "line": 202, "name": "gfx_note_compositor", "signature": "gfx_note_compositor();"}, {"kind": "function", "line": 203, "name": "vga_fb_blit_gfx_window", "signature": "vga_fb_blit_gfx_window();"}, {"kind": "function", "line": 236, "name": "pcspk_set_volume", "signature": "pcspk_set_volume((unsigned)v);"}, {"kind": "function", "line": 294, "name": "vga_fb_blit_nk_window", "signature": "vga_fb_blit_nk_window();"}, {"kind": "function", "line": 306, "name": "SANITIZE_LEN_NEG", "signature": "SANITIZE_LEN_NEG(len);"}, {"kind": "function", "line": 308, "name": "sb16_pcm_submit", "signature": "return sb16_pcm_submit(pcm, (unsigned)len);"}, {"kind": "function", "line": 326, "name": "sb16_pump", "signature": "sb16_pump();"}, {"kind": "function", "line": 330, "name": "sb16_stream_open", "signature": "return sb16_stream_open();"}, {"kind": "function", "line": 334, "name": "sb16_stream_close", "signature": "sb16_stream_close((int)a1);"}, {"kind": "function", "line": 342, "name": "sb16_stream_submit", "signature": "return sb16_stream_submit((int)a1, pcm, (unsigned)len);"}, {"kind": "function", "line": 346, "name": "sb16_stream_volume", "signature": "sb16_stream_volume((int)a1, (unsigned char)a2);"}, {"kind": "function", "line": 350, "name": "space", "signature": "* CLONE_VM: share address space (same CR3). * CLONE_FILES: share fd table. * Returns child PID to parent, 0 to child. */ extern long do_clone(long flags, long newsp);"}, {"kind": "function", "line": 357, "name": "do_clone", "signature": "return do_clone(flags, newsp);"}, {"kind": "function", "line": 359, "name": "do_thread_spawn", "signature": "extern long do_thread_spawn(unsigned long fn, unsigned long stack, unsigned long arg);"}, {"kind": "function", "line": 376, "name": "futex_wait", "signature": "return futex_wait((unsigned long)a1, (int)a2);"}, {"kind": "function", "line": 391, "name": "yield", "signature": "yield();"}, {"kind": "function", "line": 468, "name": "SANITIZE_COPY_IN", "signature": "SANITIZE_COPY_IN(kops, a1, count, sizeof(batch_op_t));"}, {"kind": "function", "line": 586, "name": "kprintf", "signature": "kprintf(\"READ: EFAULT fd=%ld buf=%lx cnt=%ld\\n\", a1, a2, a3);"}, {"kind": "function", "line": 594, "name": "vga_putc", "signature": "vga_putc((char)c);"}, {"kind": "function", "line": 672, "name": "kfclose", "signature": "kfclose(kfd_table[a1]);"}, {"kind": "function", "line": 681, "name": "kfseek", "signature": "kfseek(kfd_table[a1], a2, (int)a3);"}, {"kind": "function", "line": 706, "name": "spin_lock_irqsave", "signature": "spin_lock_irqsave(&mm_lock, &flags);"}, {"kind": "function", "line": 712, "name": "spin_unlock_irqrestore", "signature": "spin_unlock_irqrestore(&mm_lock, flags);"}, {"kind": "function", "line": 763, "name": "vma_tree_delete", "signature": "vma_tree_delete(&vma_free_root, best->base);"}, {"kind": "function", "line": 766, "name": "vma_tree_insert", "signature": "vma_tree_insert(&vma_live_root, addr, n);"}, {"kind": "function", "line": 857, "name": "net_sys_socket", "signature": "return net_sys_socket(a1, a2, a3);"}, {"kind": "function", "line": 863, "name": "net_sys_connect", "signature": "return net_sys_connect(a1, a2, a3);"}, {"kind": "function", "line": 868, "name": "net_sys_sendto", "signature": "return net_sys_sendto(a1, a2, a3, a4, a5, a6);"}, {"kind": "function", "line": 873, "name": "net_sys_recvfrom", "signature": "return net_sys_recvfrom(a1, a2, a3, a4, a5, a6);"}, {"kind": "function", "line": 878, "name": "net_sys_shutdown", "signature": "return net_sys_shutdown(a1, a2);"}, {"kind": "function", "line": 885, "name": "net_sys_poll", "signature": "return net_sys_poll(a1, a2, a3);"}, {"kind": "function", "line": 912, "name": "do_exit", "signature": "do_exit((int)code);"}, {"kind": "function", "line": 916, "name": "klongjmp", "signature": "klongjmp(&exec_return, 1);"}, {"kind": "function", "line": 922, "name": "do_proc_exit", "signature": "return do_proc_exit(a1);"}, {"kind": "function", "line": 949, "name": "do_kill", "signature": "return do_kill((int)a1);"}, {"kind": "function", "line": 1050, "name": "wrmsr", "signature": "wrmsr(a1 == 0x1002 ? MSR_FSBASE : MSR_GSBASE, v);"}, {"kind": "function", "line": 1148, "name": "Discipline", "signature": "* * Discipline (audit 2026-09, kept as comment, not a deprecation: both * primitives are legitimate): user_range_ok is ONLY for exact-size * buffers (sizeof(int), 144-byte stat, fixed PCM length);"}, {"kind": "function", "line": 1168, "name": "wm_clear_close", "signature": "wm_clear_close();"}, {"kind": "function", "line": 1363, "name": "LIMITATION", "signature": "* * KNOWN LIMITATION (pre-existing): SYS_SPAWN of an ET_EXEC/ET_DYN child from * a ring-3 interpreter (lua/micropython) must save the parent's user window, * whose full span cannot fit in the kernel h"}, {"kind": "function", "line": 1402, "name": "kmemcpy", "signature": "kmemcpy(kargv[i], child_argv[i], slen);"}, {"kind": "function", "line": 1423, "name": "ramdisk_read", "signature": "ramdisk_read(f, data, 0, f->size);"}, {"kind": "function", "line": 1449, "name": "kfree", "signature": "kfree(data);"}, {"kind": "function", "line": 1537, "name": "swap_in", "signature": "swap_in();"}, {"kind": "variable", "line": 315, "name": "gfx_win_title", "signature": "extern const char *gfx_win_title;"}, {"kind": "macro", "line": 37, "name": "KFD_MAX", "signature": "#define KFD_MAX"}, {"kind": "macro", "line": 68, "name": "MINIOS_SYSCALL_BASE", "signature": "#define MINIOS_SYSCALL_BASE"}, {"kind": "macro", "line": 70, "name": "MINIOS_SYSCALL_COUNT", "signature": "#define MINIOS_SYSCALL_COUNT"}, {"kind": "macro", "line": 555, "name": "SYSCALL_TRACE", "signature": "#define SYSCALL_TRACE"}, {"kind": "macro", "line": 567, "name": "SYS_NOISY_TIME", "signature": "#define SYS_NOISY_TIME"}, {"kind": "macro", "line": 568, "name": "SYS_NOISY_KBD", "signature": "#define SYS_NOISY_KBD"}, {"kind": "macro", "line": 569, "name": "SYS_NOISY_MOUSE", "signature": "#define SYS_NOISY_MOUSE"}, {"kind": "macro", "line": 570, "name": "SYS_NOISY_GETC_RAW", "signature": "#define SYS_NOISY_GETC_RAW"}, {"kind": "macro", "line": 1063, "name": "LINUX_SYSCALL_COUNT", "signature": "#define LINUX_SYSCALL_COUNT"}]}, {"doc": "Docstring: Tick listener bus implementation.", "id": "kernel/tick.c", "kind": "module", "label": "tick.c", "language": "c", "sha256": "2427efe9dea833d0", "symbol_count": 9, "symbols": [{"doc": "Docstring: Tick listener bus implementation. Owns two fixed listener tables behind the tick.h contract. Tables are static storage, cleared by tick_reset, appended by the register calls and read by the run calls. No allocation, no locks, no user pointers. Registration is boot-time only; dispatch is ISR-safe because it only reads entries written before sti. #include \"tick.h\" #include /** Docstring: Single registered listener slot.", "kind": "struct", "line": 15, "name": "tick_slot_t"}, {"doc": "tick_fn_t fn; void *ctx; } tick_slot_t; /** Docstring: Audio listener table. static tick_slot_t tick_audio_slots[TICK_MAX_AUDIO_LISTENERS]; /** Docstring: Desktop listener table. static tick_slot_t tick_desktop_slots[TICK_MAX_DESKTOP_LISTENERS]; /** Docstring: Active audio listener count. static int tick_audio_used; /** Docstring: Active desktop listener count. static int tick_desktop_used; /** Docstring: Reset both listener lists to empty.", "kind": "function", "line": 30, "name": "tick_reset", "signature": "void tick_reset(void)"}, {"doc": "Docstring: Register an unconditional BSP audio effect. Returns 0 on success, -1 when the handler is null or the audio table is full. A refusal changes nothing.", "kind": "function", "line": 49, "name": "tick_register_audio", "signature": "int tick_register_audio(tick_fn_t fn, void *ctx)"}, {"doc": "Docstring: Register a gated desktop effect. Returns 0 on success, -1 when the handler is null or the desktop table is full. A refusal changes nothing.", "kind": "function", "line": 67, "name": "tick_register_desktop", "signature": "int tick_register_desktop(tick_fn_t fn, void *ctx)"}, {"doc": "int tick_register_desktop(tick_fn_t fn, void *ctx) { if (fn == NULL) { return -1; } if (tick_desktop_used < 0 || tick_desktop_used >= TICK_MAX_DESKTOP_LISTENERS) { return -1; } tick_desktop_slots[tick_desktop_used].fn = fn; tick_desktop_slots[tick_desktop_used].ctx = ctx; tick_desktop_used++; return 0; } /** Docstring: Run audio listeners in registration order.", "kind": "function", "line": 81, "name": "tick_run_audio", "signature": "void tick_run_audio(void)"}, {"doc": "return 0; } /** Docstring: Run audio listeners in registration order. void tick_run_audio(void) { int i; for (i = 0; i < tick_audio_used; i++) { if (tick_audio_slots[i].fn != NULL) { tick_audio_slots[i].fn(tick_audio_slots[i].ctx); } } } /** Docstring: Run desktop listeners in registration order.", "kind": "function", "line": 91, "name": "tick_run_desktop", "signature": "void tick_run_desktop(void)"}, {"doc": "} } /** Docstring: Run desktop listeners in registration order. void tick_run_desktop(void) { int i; for (i = 0; i < tick_desktop_used; i++) { if (tick_desktop_slots[i].fn != NULL) { tick_desktop_slots[i].fn(tick_desktop_slots[i].ctx); } } } /** Docstring: Count registered audio listeners.", "kind": "function", "line": 101, "name": "tick_audio_count", "signature": "int tick_audio_count(void)"}, {"doc": "} /** Docstring: Count registered audio listeners. int tick_audio_count(void) { if (tick_audio_used < 0) { return 0; } if (tick_audio_used > TICK_MAX_AUDIO_LISTENERS) { return TICK_MAX_AUDIO_LISTENERS; } return tick_audio_used; } /** Docstring: Count registered desktop listeners.", "kind": "function", "line": 112, "name": "tick_desktop_count", "signature": "int tick_desktop_count(void)"}, {"doc": "Docstring: Pure desktop gating predicate. Returns nonzero when the given tick count falls on a desktop tick for the given interval. A non-positive interval never fires. Holds for every tick value including zero.", "kind": "function", "line": 128, "name": "tick_desktop_due", "signature": "int tick_desktop_due(unsigned long long ticks, unsigned interval)"}]}, {"doc": "include \"kernel.h\" include \"ktime.h\" ================================================================", "id": "kernel/time.c", "kind": "module", "label": "time.c", "language": "c", "sha256": "c2ba986afe50d1cc", "symbol_count": 7, "symbols": [{"kind": "function", "line": 12, "name": "ktime_rdtsc", "signature": "static unsigned long ktime_rdtsc(void)"}, {"kind": "function", "line": 18, "name": "ktime_init", "signature": "static void ktime_init(void)"}, {"kind": "function", "line": 32, "name": "ktime_ms", "signature": "unsigned long ktime_ms(void)"}, {"doc": "Microsecond resolution over the same calibrated ratio (Phase 0.2/0.3: clock_gettime nsec and gettimeofday usec both derive from here, so the * two clocks share one source and never disagree about ordering).", "kind": "function", "line": 41, "name": "ktime_us", "signature": "unsigned long ktime_us(void)"}, {"kind": "function", "line": 15, "name": "volatile", "signature": "__asm__ volatile(\"rdtsc\" : \"=a\"(lo), \"=d\"(hi));"}, {"kind": "function", "line": 21, "name": "outb", "signature": "outb(0x61, (unsigned char)((inb(0x61) & 0x0F) | 0x01));"}, {"kind": "function", "line": 43, "name": "ktime_us_from_delta", "signature": "return ktime_us_from_delta(ktime_rdtsc() - tsc_base_ms, tsc_per_ms);"}]}, {"id": "kernel/vga_fb.c", "kind": "module", "label": "vga_fb.c", "language": "c", "sha256": "7406552bb831999e", "symbol_count": 148, "symbols": [{"kind": "struct", "line": 627, "name": "termwin_t"}, {"kind": "function", "line": 27, "name": "vga_fb_boot_config", "signature": "void vga_fb_boot_config(void)"}, {"kind": "function", "line": 54, "name": "fb_bytes_per_pixel", "signature": "int fb_bytes_per_pixel(void)"}, {"doc": "There is deliberately no \"scroll the screen up\" operation. A completed logical line is pushed to the ring exactly once, when it ends with '\\n'; that eliminates the duplicated/partial scrollback entries the old two-buffer * scheme produced, which were the source of the pixel artifacts. static char lg[SB_MAX_LINES][SB_LINE_MAX]; /* completed logical lines static int lg_head, lg_tail, lg_count; static char act[SB_LINE_MAX]; /* in-progress line static int act_len; static int disp_off; /* scrollback rows above the bottom static int term_cursor_col = -1; /* text cursor column (-1 = hidden) static int csi_state; /* ANSI CSI drop: 1 after ESC, 2 in params /* Ring accessor: logical line at age i (0 = oldest, count-1 = newest).", "kind": "function", "line": 113, "name": "lg_get", "signature": "static const char *lg_get(int i)"}, {"doc": "Append a completed logical line to the ring. The line is stored whole (no * width-dependent wrap), so it can be re-wrapped on any future resize.", "kind": "function", "line": 119, "name": "lg_push", "signature": "static void lg_push(const char *line, int len)"}, {"doc": "Append a completed logical line to the ring. The line is stored whole (no * width-dependent wrap), so it can be re-wrapped on any future resize. static void lg_push(const char *line, int len) { int k, idx; if (len >= SB_LINE_MAX) len = SB_LINE_MAX - 1; idx = lg_tail; for (k = 0; k < len; k++) lg[idx][k] = line[k]; lg[idx][len] = '\\0'; lg_tail = (lg_tail + 1) % SB_MAX_LINES; if (lg_count < SB_MAX_LINES) lg_count++; else lg_head = (lg_head + 1) % SB_MAX_LINES; } /* Display rows a logical line of `len` characters occupies at term_cols.", "kind": "function", "line": 131, "name": "line_nrows", "signature": "static int line_nrows(int len)"}, {"kind": "function", "line": 137, "name": "act_nrows", "signature": "static int act_nrows(void)"}, {"doc": "else lg_head = (lg_head + 1) % SB_MAX_LINES; } /* Display rows a logical line of `len` characters occupies at term_cols. static int line_nrows(int len) { int w = term_cols > 0 ? term_cols : 1; int n = len / w + (len % w ? 1 : 0); if (n < 1) n = 1; /* an empty line still shows as one row return n; } static int act_nrows(void) { return line_nrows(act_len); } /* Total display rows of the whole history (completed lines + active line).", "kind": "function", "line": 141, "name": "total_rows", "signature": "static int total_rows(void)"}, {"doc": "return n; } static int act_nrows(void) { return line_nrows(act_len); } /* Total display rows of the whole history (completed lines + active line). static int total_rows(void) { int t = 0, i; for (i = 0; i < lg_count; i++) t += line_nrows((int)kstrlen(lg_get(i))); return t + act_nrows(); } /* Clamp disp_off to a legal scroll range.", "kind": "function", "line": 149, "name": "disp_clamp", "signature": "static void disp_clamp(void)"}, {"doc": "Locate the logical line contributing the display row `abs`, and set *off to the character offset where that display row starts. Returns the line text, * or 0 when abs is beyond the history.", "kind": "function", "line": 167, "name": "line_at", "signature": "static const char *line_at(int abs, int *off)"}, {"doc": "The cursor is drawn with its top-left corner at (mx, my), so the sprite spans down-right of the pointer. The caller clamps mx/my so the position stays inside the framebuffer; pixels outside the screen are clipped by the packed helpers, and the snapshot holds packed RGB so a restore is exact in * any color depth.", "kind": "function", "line": 211, "name": "cursor_save_bg", "signature": "static void cursor_save_bg(int mx, int my)"}, {"kind": "function", "line": 219, "name": "cursor_draw", "signature": "static void cursor_draw(int mx, int my)"}, {"kind": "function", "line": 230, "name": "cursor_restore", "signature": "static void cursor_restore(int mx, int my)"}, {"doc": "True when the cursor sprite overlaps the given screen rectangle. Used to decide whether a partial repaint (taskbar, terminal content) overwrote the cursor, in which case its saved background must be refreshed; otherwise the cursor keeps its saved background and moves without leaving a trail. The * sprite is CURSOR_W x CURSOR_H with its top-left corner at (mx, my).", "kind": "function", "line": 245, "name": "cursor_over", "signature": "static int cursor_over(int x0, int y0, int w, int h)"}, {"kind": "function", "line": 292, "name": "gfx_keep_save", "signature": "static void gfx_keep_save(int x, int y, int w, int h)"}, {"kind": "function", "line": 323, "name": "gfx_keep_restore", "signature": "static void gfx_keep_restore(void)"}, {"kind": "function", "line": 361, "name": "vga_fb_set_gfx_program", "signature": "void vga_fb_set_gfx_program(const char *name)"}, {"doc": "Basename of a shortcut command's program: first token after an optional `run`, then past the last '/'. \"run quake2generic.elf +set basedir .\" -> * \"quake2generic.elf\"; \"nuklear\" -> \"nuklear\".", "kind": "function", "line": 381, "name": "shcmd_base", "signature": "static void shcmd_base(const char *cmd, char *out, unsigned long cap)"}, {"kind": "function", "line": 397, "name": "ci_eq", "signature": "static int ci_eq(const char *a, const char *b)"}, {"doc": "Icon of the running program via the shortcuts config: whoever composited * last, resolved through its launch command. Zero hardcoded names.", "kind": "function", "line": 411, "name": "gfx_prog_icon", "signature": "static const uint8_t *gfx_prog_icon(void)"}, {"kind": "function", "line": 422, "name": "vga_fb_set_gfx_mode", "signature": "void vga_fb_set_gfx_mode(int on)"}, {"doc": "Centered origin of a w×h graphics window, plus the WM offset, clamped on screen. Every blit positions through here, so move/snap/tile/drag * govern graphics windows exactly like terminals.", "kind": "function", "line": 442, "name": "gfx_place", "signature": "static void gfx_place(int w, int h, int *ox, int *oy)"}, {"doc": "Restore the last composite's pointer before the new frame covers it. Only meaningful in graphics mode; the desktop path (vga_fb_mouse_tick) manages * its own cursor with the same functions.", "kind": "function", "line": 458, "name": "vga_fb_gfx_cursor_erase", "signature": "static void vga_fb_gfx_cursor_erase(void)"}, {"doc": "Clamp the mouse into the framebuffer (the idle loop that normally clamps * never runs in graphics mode) and draw the pointer at the current position.", "kind": "function", "line": 466, "name": "vga_fb_gfx_cursor_draw", "signature": "static void vga_fb_gfx_cursor_draw(void)"}, {"kind": "function", "line": 645, "name": "tw_park", "signature": "static void tw_park(int i)"}, {"kind": "function", "line": 675, "name": "tw_unpark", "signature": "static void tw_unpark(int i)"}, {"kind": "function", "line": 707, "name": "wm_init_once", "signature": "static void wm_init_once(void)"}, {"doc": "Select window i as the focused one (globals mirror it). Parked shell input travels with the window, so a half-typed line waits on the * window it was typed in. No-op when i is not a present terminal.", "kind": "function", "line": 730, "name": "tw_select", "signature": "static void tw_select(int i)"}, {"kind": "function", "line": 740, "name": "vga_fb_focus_get", "signature": "int vga_fb_focus_get(void)"}, {"kind": "function", "line": 742, "name": "vga_fb_nterms_get", "signature": "int vga_fb_nterms_get(void)"}, {"doc": "Cycle focus across present terminals plus the graphics window when a program owns the display. Same function the Alt-Tab key and `wm focus` * call, so key and shell can never disagree.", "kind": "function", "line": 747, "name": "vga_fb_focus_next", "signature": "void vga_fb_focus_next(void)"}, {"doc": "} nx = ids[(at + 1) % n]; if (nx == WM_FOCUS_GFX) { if (shell_readline_active()) shell_focus_park(); tw_park(wm_term); wm_focus = WM_FOCUS_GFX; kbd_raw_flush(); } else { tw_select(nx); } vga_fb_draw_desktop(); } /* Focus window id directly (0/1 terminal, 2 graphics). Fail closed.", "kind": "function", "line": 778, "name": "vga_fb_focus_id", "signature": "int vga_fb_focus_id(int id)"}, {"kind": "function", "line": 800, "name": "content", "signature": "* windows would share content (same prompt/output on both) and a park\n * would alias src == dst. ..."}, {"doc": "Park the graphics window in the right half when it fits, else right-aligned: DOOM (320px) side-tiles beside the terminal(s) with no overlap, while a full-size window (Nuklear/vedit 800px) cannot shrink * and covers the least terminal area there.", "kind": "function", "line": 927, "name": "gfx_tile_right", "signature": "static void gfx_tile_right(void)"}, {"doc": "Serial-observable window list for `wm list` (BDD surface). Parked state is read from the slots, never by disturbing the live globals: the focused window's live values sit in the globals, the rest in twins. A parked slot's derived cols/rows lag resizes (tile/snap write x/y/sz only), so they are derived from the authoritative size here; the live * window reports its globals.", "kind": "function", "line": 947, "name": "vga_fb_list_windows", "signature": "void vga_fb_list_windows(void)"}, {"doc": "int gx, gy; gfx_target(&gx, &gy); ksprintf(b, \"win gfx %c %s x=%d y=%d w=%d h=%d\\n\", (wm_focus == WM_FOCUS_GFX) ? '*' : ' ', gfx_win_title, gx, gy, gfx_win_w, gfx_win_h); serial_puts(b); taskbar_layout(); ksprintf(b, \"win gfxbtn x=%d w=%d %s\\n\", tb_gfx_x, tb_gfx_w, gfx_task_icon() ? \"icon\" : \"text\"); serial_puts(b); } } /* 1 when the focused window's active line is empty (fresh prompt spot).", "kind": "function", "line": 990, "name": "vga_fb_act_empty", "signature": "int vga_fb_act_empty(void)"}, {"doc": "The shell loop calls note after printing a prompt (it is live in the * focused window) and clear once the line is submitted for execution.", "kind": "function", "line": 994, "name": "vga_fb_note_prompt", "signature": "void vga_fb_note_prompt(void)"}, {"kind": "function", "line": 999, "name": "vga_fb_clear_prompt", "signature": "void vga_fb_clear_prompt(void)"}, {"kind": "function", "line": 1004, "name": "vga_fb_prompted", "signature": "int vga_fb_prompted(void)"}, {"doc": "1 when the active line is empty or holds exactly a fresh prompt, so printing another one would stack duplicate `miniOS> ` lines on every * refocus. Compares the whole line, not a prefix.", "kind": "function", "line": 1013, "name": "vga_fb_prompt_live", "signature": "int vga_fb_prompt_live(void)"}, {"doc": "1 when the active line is empty or holds exactly a fresh prompt, so printing another one would stack duplicate `miniOS> ` lines on every * refocus. Compares the whole line, not a prefix. int vga_fb_prompt_live(void) { if (act_len == 0) return 1; if (kstrcmp(act, \"miniOS> \") == 0) return 1; return 0; } /* Park the shell's half-typed line into the focused window slot.", "kind": "function", "line": 1020, "name": "vga_fb_park_line", "signature": "void vga_fb_park_line(const char *b, int p)"}, {"doc": "A fresh prompt parks empty: record no line, so `wm list` does not * claim a half-typed command that never existed. t->has_line = (b[0] != '\\0' || p > 0) ? 1 : 0; } /* Restore the focused window's parked line. Returns 1 when one existed.", "kind": "function", "line": 1035, "name": "vga_fb_unpark_line", "signature": "int vga_fb_unpark_line(char *b, int *p)"}, {"doc": "int vga_fb_unpark_line(char *b, int *p) { termwin_t *t; int k; wm_init_once(); if (wm_focus < 0 || wm_focus >= WM_MAX_TERMS) return 0; t = &twins[wm_focus]; if (!t->has_line) return 0; for (k = 0; k < WM_ELINE_SZ - 1 && t->eline[k]; k++) b[k] = t->eline[k]; b[k] = '\\0'; p = t->epos; return 1; } /* Hit-test: is (mx,my) inside terminal i's rectangle (title + content)?", "kind": "function", "line": 1049, "name": "tw_hit", "signature": "static int tw_hit(int i, int mx, int my)"}, {"kind": "function", "line": 1130, "name": "vga_fb_set_gfx_palette", "signature": "void vga_fb_set_gfx_palette(const unsigned char *pal)"}, {"doc": "--- True-color pixel layer ---- VBE true-color framebuffers store pixels natively as B,G,R(,X) bytes, so the DAC is bypassed entirely. Every index the desktop draws with resolves here: UI 0-14 through desk_pal, wallpaper 16-231 through the websafe cube, icons 240-255 through icon_pal. Indices with no owner (15, 232-239) are black. Graphics back-buffers never pass through this table; they expand * through gfx_pal at blit time.", "kind": "function", "line": 1146, "name": "fb_pack_idx", "signature": "static unsigned long fb_pack_idx(unsigned idx)"}, {"kind": "function", "line": 1161, "name": "fb_write_packed", "signature": "static void fb_write_packed(int x, int y, unsigned long rgb)"}, {"kind": "function", "line": 1181, "name": "fb_read_packed", "signature": "static unsigned long fb_read_packed(int x, int y)"}, {"kind": "function", "line": 1205, "name": "vga_fb_read_rgb", "signature": "unsigned long vga_fb_read_rgb(int x, int y)"}, {"doc": "8-bit: return the raw palette index, not its resolved RGB. The cursor save/restore round-trips through fb_write_packed, which in 8-bit writes the low byte straight back into the framebuffer; resolving to RGB here (and thus restoring only the blue channel as an index) is what smeared * the pointer into a trail. return p[x]; } unsigned long vga_fb_read_rgb(int x, int y) { return fb_read_packed(x, y); } /* Nearest cube level for one 0-255 channel (boundaries at 25/76/127/178/229).", "kind": "function", "line": 1209, "name": "wall_level", "signature": "static int wall_level(int v)"}, {"kind": "function", "line": 1217, "name": "vga_fb_set_palette", "signature": "static void vga_fb_set_palette(void)"}, {"doc": "Resolve one byte to its 8-row glyph: ASCII through font8x8, Spanish Latin-1 through the table above, anything else (including control codes) as a blank. Takes an unsigned value so Latin-1 bytes above 127 survive a * signed-char parameter.", "kind": "function", "line": 1271, "name": "fb_glyph", "signature": "static const uint8_t *fb_glyph(unsigned char c)"}, {"doc": "case 0xAC: return glyph_notsign; case 0xB4: return glyph_acute; case 0xB7: return glyph_middot; case 0xBA: return glyph_ord_masc; case 0xBF: return glyph_inv_quest; case 0xC7: return glyph_Ccedil; case 0xD1: return glyph_Ntilde; case 0xE7: return glyph_ccedil; case 0xF1: return glyph_ntilde; default: return font8x8[0]; } } /* ---- Drawing primitives ----", "kind": "function", "line": 1292, "name": "vga_fb_pixel", "signature": "void vga_fb_pixel(int x, int y, uint8_t color)"}, {"kind": "function", "line": 1300, "name": "vga_fb_rect", "signature": "void vga_fb_rect(int x, int y, int w, int h, uint8_t color)"}, {"kind": "function", "line": 1307, "name": "vga_fb_char", "signature": "void vga_fb_char(int col, int row, char c, uint8_t fg, uint8_t bg)"}, {"kind": "function", "line": 1321, "name": "vga_fb_str", "signature": "void vga_fb_str(int col, int row, const char *s, uint8_t fg, uint8_t bg)"}, {"doc": "Blit a text string at an absolute pixel position. Used for window chrome (title bar, taskbar) which lives outside the content-relative coordinate * space that vga_fb_char/str operate in.", "kind": "function", "line": 1333, "name": "text_px", "signature": "static void text_px(int px, int py, const char *s, uint8_t fg, uint8_t bg)"}, {"doc": "--- Window controls ---- Three glyph buttons at the right end of a window's title bar: minimize (_), maximize (square) and close (X). They are shared by the terminal window and the composited graphics windows (DOOM/Nuklear), so hit-testing must work on * any titled window. Each button is FONT_W x FONT_H, separated by WM_BTN_PAD. static int wm_buttons_x0(int win_x, int win_w) { return win_x + win_w - 3 * (WM_BTN_W + WM_BTN_PAD); } /* Draw the three window-control glyphs at (px,py), the title bar's top-left.", "kind": "function", "line": 1359, "name": "wm_draw_buttons", "signature": "static void wm_draw_buttons(int px, int py, int win_w, uint8_t fg, uint8_t bg)"}, {"doc": "} for (i = 1; i < WM_BTN_H - 1; i++) { vga_fb_pixel(bx + 1, by + i, fg); vga_fb_pixel(bx + WM_BTN_W - 2, by + i, fg); } bx += WM_BTN_W + WM_BTN_PAD; /* close: two crossing diagonals. for (i = 1; i < WM_BTN_W - 1; i++) { vga_fb_pixel(bx + i, by + i, fg); vga_fb_pixel(bx + WM_BTN_W - 1 - i, by + i, fg); } } /* Return which window-control button is under (mx,my), or 0 for none.", "kind": "function", "line": 1385, "name": "wm_buttons_hit", "signature": "static int wm_buttons_hit(int mx, int my, int win_x, int win_y, int win_w)"}, {"doc": "Close request bridge: the syscall dispatcher polls this so a graphics * program's next syscall exits it on the child's own stack.", "kind": "function", "line": 1400, "name": "wm_close_pending", "signature": "int wm_close_pending(void)"}, {"kind": "function", "line": 1401, "name": "wm_clear_close", "signature": "void wm_clear_close(void)"}, {"kind": "function", "line": 1402, "name": "wm_gfx_mode_active", "signature": "int wm_gfx_mode_active(void)"}, {"doc": "PS/2 ownership for pid (see vga_fb.h): the focused window owns the one keyboard. Needs user_program_active (fg legacy run blocks the shell, so the runner keeps everything) and current pid (bg jobs read through * syscalls as themselves, the shell as pid 0).", "kind": "function", "line": 1408, "name": "vga_fb_ps2_owner", "signature": "int vga_fb_ps2_owner(int pid)"}, {"doc": "Hit-test and dispatch a click on a titled window's controls. The active window is the graphics window when one is composited, else the terminal. * Returns 1 when the click was consumed by a window control.", "kind": "function", "line": 1419, "name": "wm_button_click", "signature": "static int wm_button_click(int mx, int my)"}, {"kind": "function", "line": 1467, "name": "USER_LOAD_BASE", "signature": "* table: the kernel image must end below USER_LOAD_BASE (mm guard) and it\n * fits with ~1 KB to s..."}, {"kind": "function", "line": 1508, "name": "vga_fb_blit_gfx_window", "signature": "void vga_fb_blit_gfx_window(void)"}, {"kind": "function", "line": 1542, "name": "vga_fb_clear", "signature": "void vga_fb_clear(void)"}, {"doc": "Composite the Nuklear UI back-buffer onto the desktop as a titled window, mirroring the DOOM window: the back-buffer is a kernel-heap region mapped into the user window that the ring-3 app renders into, and the kernel blits it to the framebuffer on SYS_NK_FRAME. The window is centered and the shell * window stays visible around it.", "kind": "function", "line": 1558, "name": "vga_fb_blit_nk_window", "signature": "void vga_fb_blit_nk_window(void)"}, {"kind": "function", "line": 1596, "name": "term_recalc", "signature": "static void term_recalc(void)"}, {"doc": "Preserve the current window position, clamping it into range so a * drag or Ctrl+arrow move is not undone by the next layout pass. if (term_x < 0) term_x = 0; if (term_y < 0) term_y = 0; if (term_x > max_cols - term_cols) term_x = max_cols - term_cols; if (term_y > max_rows - term_rows) term_y = max_rows - term_rows; } term_px_x = term_x * FONT_W; term_px_y = term_y * FONT_H; term_px_w = term_cols * FONT_W; term_px_h = term_rows * FONT_H; } /* ---- Desktop ----", "kind": "function", "line": 1623, "name": "draw_title_win", "signature": "static void draw_title_win(int idx, int focused)"}, {"doc": "Title chars shown on the running-app taskbar button (icon + text must * stay small: the taskbar is a single 8px row). define TB_GFX_TITLE_MAX 10", "kind": "function", "line": 1652, "name": "taskbar_layout", "signature": "static void taskbar_layout(void)"}, {"doc": "Running-app button right after it: mini icon + title while a graphics program owns the display. Clicking it focuses the app (brings it to * the front), so a window buried by Alt+Tab/tile is always reachable. tb_gfx_x = tb_restore_x + tb_restore_w + TASKBAR_PAD; tb_gfx_w = 0; if (vga_fb_gfx_mode) { int tl = (int)kstrlen(gfx_win_title); if (tl > TB_GFX_TITLE_MAX) tl = TB_GFX_TITLE_MAX; tb_gfx_w = FONT_W + 2 + tl * FONT_W; } } /* 8x8 speaker glyph: body on the left, two sound arcs to the right.", "kind": "function", "line": 1682, "name": "draw_speaker_icon", "signature": "static void draw_speaker_icon(int x, int y, uint8_t color)"}, {"kind": "function", "line": 1690, "name": "taskbar_render", "signature": "static void taskbar_render(void)"}, {"doc": "Redraw the clock only when the wall-clock second changes. Only the taskbar strip is repainted, so the cursor must be re-saved (cursor_visible = 0) only when it actually sat over the taskbar; otherwise it keeps its saved * background and moves normally, which is what prevents pointer trails.", "kind": "function", "line": 1760, "name": "taskbar_tick", "signature": "static void taskbar_tick(void)"}, {"doc": "Click handling for the keyboard widget, the speaker icon and -/+ buttons, plus the restore button that reappears while the terminal window is minimized. A click on \"EN\" switches to Spanish and a click on \"ES\" * switches back to English.", "kind": "function", "line": 1776, "name": "taskbar_handle_click", "signature": "static void taskbar_handle_click(int mx, int my)"}, {"doc": "return; } if (mx >= tb_minus_x && mx < tb_minus_x + TASKBAR_BTN_W) { v = pcspk_get_volume(); pcspk_set_volume(v > TASKBAR_VOL_STEP ? v - TASKBAR_VOL_STEP : 0); return; } if (mx >= tb_plus_x && mx < tb_plus_x + TASKBAR_BTN_W) { pcspk_set_volume(pcspk_get_volume() + TASKBAR_VOL_STEP); return; } } /* ---- Scrollbar (attached to the window's right edge) ----", "kind": "function", "line": 1825, "name": "draw_scrollbar", "signature": "static void draw_scrollbar(void)"}, {"doc": "Blank one viewport row: every cell is repainted with the terminal background. vga_fb_str with an empty string would draw nothing and leave * whatever pixels the previous content left behind, so blanking is explicit.", "kind": "function", "line": 1860, "name": "render_blank_row", "signature": "static void render_blank_row(int vrow)"}, {"doc": "Render one display row at viewport row `vrow` for the absolute display row `abs`. Rows outside the history (above the oldest line, or below the active line) are blanked. When this is a row of the active line and a text cursor * is shown, the cursor cell is drawn inverted (COL_TERM_CUR background).", "kind": "function", "line": 1870, "name": "render_row", "signature": "static void render_row(int vrow, int abs)"}, {"doc": "Full repaint of the terminal window from the logical history, honouring the current scroll position. Used on desktop redraws, resize, wrap, scroll and * any structural change.", "kind": "function", "line": 1898, "name": "term_render", "signature": "static void term_render(void)"}, {"doc": "Repaint only the bottom region that a live edit touches: from the active line's first visible display row to the bottom of the window. Used for a character append/backspace that does not change the number of display rows, * so typing stays cheap while remaining correct.", "kind": "function", "line": 1911, "name": "term_render_active", "signature": "static void term_render_active(void)"}, {"kind": "function", "line": 1952, "name": "line", "signature": "* display stale bytes left over from a longer previous line (e.g. the prompt\n * would show the ta..."}, {"kind": "function", "line": 1961, "name": "escapes", "signature": "* swallowing them here keeps the escapes (which the serial side needs)\n * from printing as li..."}, {"kind": "function", "line": 2017, "name": "vga_fb_puts_term", "signature": "void vga_fb_puts_term(const char *s)"}, {"doc": "Show the text cursor at character column `col` of the active line, or hide * it with a negative column. The cursor is a block rendered by render_row.", "kind": "function", "line": 2024, "name": "vga_fb_text_cursor", "signature": "void vga_fb_text_cursor(int col)"}, {"doc": "Show the text cursor at character column `col` of the active line, or hide * it with a negative column. The cursor is a block rendered by render_row. void vga_fb_text_cursor(int col) { if (col < 0) { term_cursor_col = -1; } else { term_cursor_col = col; } disp_clamp(); term_render(); } /* Hide the text cursor (used when a live edit starts or the window redraws).", "kind": "function", "line": 2032, "name": "vga_fb_hide_text_cursor", "signature": "void vga_fb_hide_text_cursor(void)"}, {"kind": "function", "line": 2035, "name": "vga_fb_draw_desktop", "signature": "void vga_fb_draw_desktop(void)"}, {"doc": "Any redraw changed the pixels under the cursor; force a fresh save so a * stale snapshot never leaves pointer trails behind. cursor_visible = 0; } /* ---- Keyboard shortcuts ----", "kind": "function", "line": 2088, "name": "vga_fb_toggle_fullscreen", "signature": "void vga_fb_toggle_fullscreen(void)"}, {"doc": "Minimize/restore the terminal window. The content is not touched; the window is merely hidden and repainted on restore. Fullscreen and minimize * are mutually exclusive: entering fullscreen un-minimizes.", "kind": "function", "line": 2098, "name": "vga_fb_toggle_minimize", "signature": "void vga_fb_toggle_minimize(void)"}, {"kind": "function", "line": 2104, "name": "vga_fb_is_minimized", "signature": "int vga_fb_is_minimized(void)"}, {"kind": "function", "line": 2106, "name": "vga_fb_is_fullscreen", "signature": "int vga_fb_is_fullscreen(void)"}, {"doc": "Target origin of the graphics window under the current offsets (same * math as the blits, for hit-testing and `wm list` without a frame).", "kind": "function", "line": 2110, "name": "gfx_target", "signature": "static void gfx_target(int *x, int *y)"}, {"doc": "Snap the focused graphics window into a screen region (halves place it against that edge, quadrants into that corner). Takes effect on the * program's next composited frame.", "kind": "function", "line": 2117, "name": "gfx_snap", "signature": "static void gfx_snap(int zone)"}, {"doc": "Close the focused window. For the graphics window (focused) this arms the close request that the syscall dispatcher honours on the child's next syscall; for a terminal it restores the default position (the shell cannot be closed). Returns 1 when a close was armed, 0 * otherwise.", "kind": "function", "line": 2141, "name": "vga_fb_close_active", "signature": "int vga_fb_close_active(void)"}, {"kind": "function", "line": 2161, "name": "vga_fb_move_terminal", "signature": "void vga_fb_move_terminal(int dx, int dy)"}, {"doc": "--- Tiling window operations (Alt = WM modifier) ---- Snap places the window in a screen half or quadrant and sizes it to that region; resize grows/shrinks the persisted size. Both exit fullscreen and * preserve the new size across redraws.", "kind": "function", "line": 2198, "name": "term_max_cols", "signature": "static int term_max_cols(void)"}, {"kind": "function", "line": 2202, "name": "term_max_rows", "signature": "static int term_max_rows(void)"}, {"kind": "function", "line": 2206, "name": "term_finish_layout", "signature": "static void term_finish_layout(void)"}, {"kind": "function", "line": 2212, "name": "vga_fb_snap_window", "signature": "void vga_fb_snap_window(int zone)"}, {"kind": "function", "line": 2239, "name": "vga_fb_resize", "signature": "void vga_fb_resize(int dcols, int drows)"}, {"doc": "int ncol = term_sz_cols + dcols; int nrow = term_sz_rows + drows; if (ncol < 1) ncol = 1; if (nrow < 1) nrow = 1; if (ncol > mc) ncol = mc; if (nrow > mr) nrow = mr; if (ncol == term_sz_cols && nrow == term_sz_rows && !term_fullscreen) return; term_fullscreen = 0; term_sz_cols = ncol; term_sz_rows = nrow; term_finish_layout(); } /* Alt+0: restore the default window position and size (not just position).", "kind": "function", "line": 2260, "name": "vga_fb_reset_default", "signature": "void vga_fb_reset_default(void)"}, {"kind": "function", "line": 2298, "name": "wallpaper_ensure", "signature": "static void wallpaper_ensure(void)"}, {"kind": "function", "line": 2333, "name": "wallpaper_draw", "signature": "static void wallpaper_draw(void)"}, {"doc": "--- Desktop shortcut icons ---- Shortcuts are defined in etc/shortcuts on the ramdisk, one per line: name|icon_path|command Icons are 32x32 PNG files decoded at boot via stbi_load_file and mapped to the icon palette (VGA DAC indices 240-255). The cached palette-indexed * pixels are redrawn on every desktop paint; mouse clicks launch the command. static struct desktop_shortcut shortcuts[MAX_SHORTCUTS]; static int shortcut_count; static int shortcuts_loaded; /* Find a pipe-delimited field by index (0-based).", "kind": "function", "line": 2367, "name": "pipe_field", "signature": "static const char *pipe_field(const char *line, int idx, char *buf, int buflen)"}, {"doc": "Nearest entry in the 16-colour icon palette (squared RGB distance, * integer-only: at most 3*255*255 per entry, far from overflow).", "kind": "function", "line": 2385, "name": "icon_nearest", "signature": "static int icon_nearest(int r, int g, int b)"}, {"doc": "for (i = 0; i < ICON_PAL_SIZE; i++) { int dr = r - icon_pal[i][0]; int dg = g - icon_pal[i][1]; int db = b - icon_pal[i][2]; int d = dr * dr + dg * dg + db * db; if (d < best_d) { best_d = d; best = i; } } return best; } /* Embedded fallback when the shortcut's PNG is missing or undecodable.", "kind": "function", "line": 2401, "name": "icon_embedded", "signature": "static const uint8_t *icon_embedded(const char *name)"}, {"doc": "Decode a shortcut's PNG to raw 32x32 RGBA pixels. Returns a heap buffer that lives until reboot, or 0 on any failure (missing file, undecodable image, exhausted heap); the caller then uses icon_embedded. Keeping the PNG's own colors (instead of mapping to the 16-entry icon palette) is what makes icons distinguishable on a true-color desktop; the 8-bit mode * quantizes back through icon_nearest at draw time.", "kind": "function", "line": 2421, "name": "icon_decode", "signature": "static const uint8_t *icon_decode(const char *path)"}, {"doc": "Expand an embedded index icon (desktop_icons.h, transparent 0) to RGBA through the icon palette, so fallback art follows the same draw path as * decoded PNGs. Returns a heap buffer or 0 when exhausted.", "kind": "function", "line": 2455, "name": "icon_embedded_rgba", "signature": "static const uint8_t *icon_embedded_rgba(const uint8_t *idx)"}, {"doc": "Width of the longest shortcut label in pixels (cached after load). Labels are centred under their icon and a dock column must be wide enough for one, * or neighbouring labels overlap. static int dock_cell_w; /* Width (px) one label occupies (FONT_W per character).", "kind": "function", "line": 2483, "name": "dock_label_px", "signature": "static int dock_label_px(const struct desktop_shortcut *sc)"}, {"doc": "Dock layout: one centred row just above the taskbar. Every shortcut owns a column `dock_cell_w` wide (enough for its label), the icon is centred in the column and the label centred beneath it, so long names never collide with a neighbour. Recomputed on every draw/hit-test from fb_width/fb_height so a * resolution change never leaves stale coordinates behind.", "kind": "function", "line": 2492, "name": "shortcuts_layout", "signature": "static void shortcuts_layout(void)"}, {"doc": "dock_h = ICON_H + DOCK_LABEL_GAP + ICON_LABEL_H + 2 * DOCK_PAD_Y; x0 = (fb_width - dock_w) / 2; if (x0 < 0) x0 = 0; y0 = fb_height - TASKBAR_H - DOCK_GAP - dock_h; if (y0 < 0) y0 = 0; cell_left = x0 + DOCK_PAD_X; for (i = 0; i < shortcut_count; i++) { shortcuts[i].x = cell_left + (dock_cell_w - ICON_W) / 2; shortcuts[i].y = y0 + DOCK_PAD_Y; cell_left += dock_cell_w; } } /* Left edge of shortcut i's column (used to centre its label under the icon).", "kind": "function", "line": 2510, "name": "shortcut_cell_left", "signature": "static int shortcut_cell_left(int i)"}, {"kind": "function", "line": 2516, "name": "desktop_shortcuts_load", "signature": "void desktop_shortcuts_load(void)"}, {"kind": "function", "line": 2569, "name": "desktop_shortcuts_draw", "signature": "void desktop_shortcuts_draw(void)"}, {"doc": "Icon for the taskbar running-app button. First the running program via its launch command (config-driven, covers apps that never set a window title); then the window title against the shortcut name as fallback (case-insensitive, \"*\" suffix ignored). Text-only button when nothing matches. Load is idempotent, so a click before the first desktop paint * still resolves.", "kind": "function", "line": 2630, "name": "gfx_task_icon", "signature": "static const uint8_t *gfx_task_icon(void)"}, {"kind": "function", "line": 2650, "name": "desktop_shortcuts_hit_test", "signature": "const char *desktop_shortcuts_hit_test(int mx, int my)"}, {"doc": "const char *desktop_shortcuts_hit_test(int mx, int my) { shortcuts_layout(); for (int i = 0; i < shortcut_count; i++) { struct desktop_shortcut *sc = &shortcuts[i]; int cl = shortcut_cell_left(i); if (mx >= cl && mx < cl + dock_cell_w && my >= sc->y && my < sc->y + ICON_H + ICON_LABEL_H) { return sc->cmd; } } return 0; } /* ---- Mouse ----", "kind": "function", "line": 2665, "name": "vga_fb_mouse_tick", "signature": "void vga_fb_mouse_tick(void)"}, {"kind": "function", "line": 2851, "name": "vga_fb_mouse_init", "signature": "void vga_fb_mouse_init(void)"}, {"kind": "function", "line": 2870, "name": "vga_fb_init", "signature": "void vga_fb_init(void)"}, {"kind": "function", "line": 770, "name": "kbd_raw_flush", "signature": "kbd_raw_flush();"}, {"kind": "function", "line": 839, "name": "vga_fb_tile_all", "signature": "vga_fb_tile_all();"}, {"kind": "function", "line": 967, "name": "ksprintf", "signature": "ksprintf(b, \"win term%d %c cols=%d rows=%d x=%d y=%d min=%d fs=%d%s\\n\", i, (i == wm_focus) ? '*' : ' ', dc, dr, (i == cur) ? term_x : t->x, (i == cur) ? term_y : t->y, t->minimized, t->fullscreen, t->"}, {"kind": "function", "line": 972, "name": "serial_puts", "signature": "serial_puts(b);"}, {"kind": "function", "line": 1135, "name": "outb", "signature": "outb(0x3C8, 0);"}, {"kind": "function", "line": 1537, "name": "blit_indexed_truecolor", "signature": "blit_indexed_truecolor(bb, DOOM_W, DOOM_H, dst_x, dst_y + FONT_H);"}, {"kind": "function", "line": 1544, "name": "kmemset", "signature": "kmemset((void *)FB_ADDR, 0, (unsigned long)fb_pitch * (unsigned long)fb_height);"}, {"kind": "function", "line": 1701, "name": "title", "signature": "* 8px row plus its title (bright when focused). The hint line * starts after it instead of underneath. */ const uint8_t *ipx = gfx_task_icon();"}, {"kind": "function", "line": 1796, "name": "kbd_toggle_layout", "signature": "kbd_toggle_layout();"}, {"kind": "function", "line": 1805, "name": "pcspk_set_volume", "signature": "pcspk_set_volume(spk_saved_valid ? spk_saved_vol : v);"}, {"kind": "function", "line": 2012, "name": "term_draw_cell", "signature": "term_draw_cell(act_len - 1);"}, {"kind": "function", "line": 2044, "name": "geometry", "signature": "* the final unpark restores over the recalculated geometry (leaving * term_cols = 0, which divides by zero in term_draw_cell). */ term_recalc();"}, {"kind": "function", "line": 2310, "name": "stbi_image_free", "signature": "stbi_image_free(img);"}, {"kind": "function", "line": 2557, "name": "kfclose", "signature": "kfclose(f);"}, {"kind": "function", "line": 2625, "name": "command", "signature": "* its launch command (config-driven, covers apps that never set a window * title);"}, {"kind": "function", "line": 2797, "name": "vga_fb_drag_terminal", "signature": "vga_fb_drag_terminal(mx, my, grab_cx);"}, {"kind": "variable", "line": 1409, "name": "user_program_active", "signature": "extern volatile int user_program_active;"}, {"kind": "macro", "line": 197, "name": "CURSOR_TIP_X", "signature": "#define CURSOR_TIP_X"}, {"kind": "macro", "line": 198, "name": "CURSOR_TIP_Y", "signature": "#define CURSOR_TIP_Y"}, {"kind": "macro", "line": 199, "name": "CURSOR_W", "signature": "#define CURSOR_W"}, {"kind": "macro", "line": 200, "name": "CURSOR_H", "signature": "#define CURSOR_H"}, {"kind": "macro", "line": 287, "name": "GFX_KEEP_W", "signature": "#define GFX_KEEP_W"}, {"kind": "macro", "line": 288, "name": "GFX_KEEP_H", "signature": "#define GFX_KEEP_H"}, {"kind": "macro", "line": 359, "name": "GFX_PROG_LEN", "signature": "#define GFX_PROG_LEN"}, {"kind": "macro", "line": 588, "name": "WIN_DEF_COLS", "signature": "#define WIN_DEF_COLS"}, {"kind": "macro", "line": 589, "name": "WIN_DEF_ROWS", "signature": "#define WIN_DEF_ROWS"}, {"kind": "macro", "line": 590, "name": "WIN_DEF_X", "signature": "#define WIN_DEF_X"}, {"kind": "macro", "line": 591, "name": "WIN_DEF_Y", "signature": "#define WIN_DEF_Y"}, {"kind": "macro", "line": 619, "name": "WM_MAX_TERMS", "signature": "#define WM_MAX_TERMS"}, {"kind": "macro", "line": 620, "name": "WM_ELINE_SZ", "signature": "#define WM_ELINE_SZ"}, {"kind": "macro", "line": 1067, "name": "FB_OFFSET", "signature": "#define FB_OFFSET(x,y)"}, {"kind": "macro", "line": 1651, "name": "TB_GFX_TITLE_MAX", "signature": "#define TB_GFX_TITLE_MAX"}]}, {"doc": "kernel.c -- Mediator: boot orchestration and the syscall trampoline.", "id": "kernel.c", "kind": "module", "label": "kernel.c", "language": "c", "sha256": "cc8f63fb6dce8c6c", "symbol_count": 37, "symbols": [{"kind": "function", "line": 106, "name": "syscall_init", "signature": "void syscall_init(void)"}, {"doc": "================================================================ Kernel entry point * ================================================================ extern char ramdisk_start[]; extern char ramdisk_end[]; /* ramdisk_size decl + ramdisk_image_size() wrapper live in kernel.h.", "kind": "function", "line": 358, "name": "__attribute__", "signature": "__attribute__((section(\".init.text\")))\nvoid kmain(void)"}, {"kind": "function", "line": 94, "name": "table", "signature": "* Symbol table (for resolving program references) * ================================================================ */ #define KSYM_MAX 256 /* ---- SYSCALL/SYSRET setup ------------------------------"}, {"doc": "SYSCALL loads CS=0x08, SS=0x10 from STAR[47:32]. SYSRET derives its selectors from STAR[63:48]: CS = n + 16 = 0x20 (user code), SS = * n + 8 = 0x18 (user data), the Linux layout.", "kind": "function", "line": 111, "name": "wrmsr", "signature": "wrmsr(MSR_STAR, ((unsigned long)GDT64_DATA_SEL << 48) | ((unsigned long)GDT64_CODE_SEL << 32));"}, {"doc": "SYSCALL loads CS=0x08, SS=0x10 from STAR[47:32]. SYSRET derives its selectors from STAR[63:48]: CS = n + 16 = 0x20 (user code), SS = * n + 8 = 0x18 (user data), the Linux layout. wrmsr(MSR_STAR, ((unsigned long)GDT64_DATA_SEL << 48) | ((unsigned long)GDT64_CODE_SEL << 32)); wrmsr(MSR_LSTAR, (unsigned long)syscall_entry); wrmsr(MSR_SFMASK, 0x600); /* clear DF and IF on entry wrmsr(MSR_EFER, rdmsr(MSR_EFER) | 1); /* SCE: enable SYSCALL } /* ---- Syscall dispatcher moved to kernel/syscalls.c --------------------", "kind": "function", "line": 119, "name": "ksyscall", "signature": "extern long ksyscall(long n, long a1, long a2, long a3, long a4, long a5, long a6);"}, {"kind": "function", "line": 143, "name": "global", "signature": "* The kstack top likewise cannot live in a global (a thread preempted * mid-syscall would have its top overwritten by the next thread's * entry): it is saved per-pid in sc_top_save[], written at entry"}, {"kind": "function", "line": 158, "name": "kstack", "signature": "* kstack (0 on the BSP, 1 on APs): harmless while a single process * runs, fatal as soon as two threads syscall concurrently. */ _Static_assert(__builtin_offsetof(cpu_t, cur_pid) == 12, \"cpu cur_pid o"}, {"kind": "function", "line": 361, "name": "volatile", "signature": "__asm__ volatile( \"mov $0x10, %%ax\\n\" \"mov %%ax, %%ds\\n\" \"mov %%ax, %%es\\n\" \"mov %%ax, %%fs\\n\" \"mov %%ax, %%gs\\n\" \"mov %%ax, %%ss\\n\" \"mov $0x90000, %%rsp\\n\" ::: \"ax\" );"}, {"kind": "function", "line": 373, "name": "EM", "signature": "* CR0: clear EM (bit 2), set MP (bit 1);"}, {"kind": "function", "line": 384, "name": "serial_init", "signature": "serial_init();"}, {"kind": "function", "line": 386, "name": "vga_clear", "signature": "vga_clear();"}, {"doc": "Mask every PIC line immediately: until sched_init's pic_init remaps the 8259s and installs the IDT, the power-on vector base (0x70 for the slave) delivers hardware IRQs (e.g. IDE IRQ14 during the pre-IDT disk probe) into the real-mode IVT, whose * garbage gates triple-fault the machine.", "kind": "function", "line": 392, "name": "outb", "signature": "outb(0x21, 0xFF);"}, {"kind": "function", "line": 394, "name": "vga_puts", "signature": "vga_puts(\"MiniOS Kernel v0.3\\n====================\\n\");"}, {"kind": "function", "line": 395, "name": "kallocator_init", "signature": "kallocator_init();"}, {"kind": "function", "line": 397, "name": "ramdisk_init", "signature": "ramdisk_init();"}, {"kind": "function", "line": 398, "name": "register_libc_symbols", "signature": "register_libc_symbols();"}, {"kind": "function", "line": 400, "name": "vga_fb_boot_config", "signature": "vga_fb_boot_config();"}, {"kind": "function", "line": 401, "name": "mm_setup_protections", "signature": "mm_setup_protections();"}, {"kind": "function", "line": 402, "name": "kprintf", "signature": "kprintf(\"fb: %dx%d pitch %d bpp %d base 0x%lx\\n\", fb_width, fb_height, fb_pitch, fb_bpp, fb_phys_base);"}, {"kind": "function", "line": 408, "name": "net_init", "signature": "net_init();"}, {"kind": "function", "line": 411, "name": "size", "signature": "* image size (see kernel.ld);"}, {"kind": "function", "line": 413, "name": "ramdisk_setup_from", "signature": "ramdisk_setup_from(ramdisk_start, (unsigned)ramdisk_image_size());"}, {"kind": "function", "line": 415, "name": "block_init", "signature": "block_init();"}, {"kind": "function", "line": 417, "name": "minifs_init", "signature": "minifs_init();"}, {"doc": "Register VFS drivers. Ramdisk is always available; MiniFS is * registered only when the IDE disk was found and mounted.", "kind": "function", "line": 426, "name": "vfs_register_builtins", "signature": "vfs_register_builtins();"}, {"doc": "Initialize the scheduler: IDT, TSS, PIC, PIT timer. * This enables interrupts and the 100 Hz timer tick.", "kind": "function", "line": 433, "name": "sched_init", "signature": "sched_init();"}, {"kind": "function", "line": 435, "name": "vga_fb_init", "signature": "vga_fb_init();"}, {"doc": "Probe the Sound Blaster 16 for real audio; fall back to the PC speaker * when none is present. if (sb16_init()) kprintf(\"sb16: DSP probed, 8-bit %d Hz DMA channel 1\\n\", 22050); else kprintf(\"sb16: not present, PC speaker stays the audio sink\\n\"); /* Wake the application processors; fail-safe, APs idle, system unchanged.", "kind": "function", "line": 446, "name": "smp_init", "signature": "smp_init();"}, {"kind": "function", "line": 447, "name": "shell_run", "signature": "shell_run();"}, {"kind": "variable", "line": 105, "name": "syscall_kstack", "signature": "extern unsigned long syscall_kstack;"}, {"doc": "================================================================ Kernel entry point * ================================================================", "kind": "variable", "line": 354, "name": "ramdisk_start", "signature": "extern char ramdisk_start[];"}, {"kind": "variable", "line": 356, "name": "ramdisk_end", "signature": "extern char ramdisk_end[];"}, {"kind": "macro", "line": 55, "name": "USER_WIN_LO", "signature": "#define USER_WIN_LO"}, {"kind": "macro", "line": 56, "name": "USER_WIN_HI", "signature": "#define USER_WIN_HI"}, {"kind": "macro", "line": 57, "name": "STR_", "signature": "#define STR_(x)"}, {"kind": "macro", "line": 58, "name": "STR", "signature": "#define STR(x)"}, {"kind": "macro", "line": 96, "name": "KSYM_MAX", "signature": "#define KSYM_MAX"}]}, {"doc": "ifndef KERNEL_H define KERNEL_H define EFAULT (-14) The user-window memory layout (load base, stack, brk cap, graphics", "id": "kernel.h", "kind": "module", "label": "kernel.h", "language": "h", "sha256": "7dfb8f602eed437d", "symbol_count": 302, "symbols": [{"doc": "close. Never modified after open. handle: driver-private state, valid between open and close. pos: current file position. Updated by read/write. Never exceeds the file's size after a read. mode: 0=read, 1=write, 2=append. Set by open, immutable after. is_console: 1 for stdin/stdout/stderr (console I/O path). Invariants: 1. vfs_open returns a vfs_file_t with ops != NULL on success. 2. Every successful open must be paired with exactly one close. 3. read/write on a closed handle is undefined (debug builds assert). 4. VFS_MAX_MOUNTS (8) limits concurrent registrations. 5. Prefix matching is longest-prefix-first. * =========================================================================", "kind": "struct", "line": 268, "name": "vfs_ops"}, {"kind": "struct", "line": 277, "name": "vfs_file"}, {"kind": "struct", "line": 186, "name": "RDFile"}, {"kind": "struct", "line": 335, "name": "KFILE"}, {"kind": "struct", "line": 433, "name": "KSym"}, {"kind": "struct", "line": 438, "name": "KProg"}, {"doc": "Libc name table for ET_REL programs (kernel/console.c). Called once * from kmain; the table itself lives in kernel/symtab.c. void register_libc_symbols(void); /* ========== Process execution (Linux ELF binaries) ========== int k_exec_user(void *entry, int argc, char **argv); int k_run_rel(prog_entry_t entry, int argc, char **argv); void kexit(int code); /* ========== Execution infrastructure (kernel/exec.c) ==========", "kind": "struct", "line": 468, "name": "kjmpbuf"}, {"kind": "struct", "line": 538, "name": "Elf64_Ehdr"}, {"doc": "Facade aliases (thesis correction 2B, 4.4BSD/Linux vnode model): vfs_ops_t IS the file_operations table, and vnode is the object it operates on. New code uses these names; vfs_ops_t/vfs_file_t remain as compat aliases. Open/Closed Principle: adding a filesystem means registering a new ops table, never editing a dispatch cascade. No caller branches on which filesystem backs a handle; vfs_read/write/close/fstat dispatch purely * through ops.", "kind": "type_alias", "line": 292, "name": "file_operations", "signature": "typedef vfs_ops_t file_operations;"}, {"kind": "type_alias", "line": 293, "name": "vnode_t", "signature": "typedef vfs_file_t vnode_t;"}, {"doc": "/* ========== Swap (kernel/mm/swap.c) ========== int swap_out(unsigned long window_sz); int swap_in(void); /* brk/mmap globals (loader.c) extern unsigned long g_brk; extern unsigned long g_brk_limit; extern unsigned long user_mmap_cur; /* ========== ELF loader (loader.c) ========== /* Minimal ELF64 definitions (used by shell_load, shell_run_elf_buf, SPAWN) define EI_NIDENT 16", "kind": "type_alias", "line": 531, "name": "Elf64_Addr", "signature": "typedef unsigned long long Elf64_Addr;"}, {"kind": "type_alias", "line": 532, "name": "Elf64_Off", "signature": "typedef unsigned long long Elf64_Off;"}, {"kind": "type_alias", "line": 533, "name": "Elf64_Word", "signature": "typedef unsigned int Elf64_Word;"}, {"kind": "type_alias", "line": 534, "name": "Elf64_Half", "signature": "typedef unsigned short Elf64_Half;"}, {"kind": "type_alias", "line": 535, "name": "Elf64_Xword", "signature": "typedef unsigned long long Elf64_Xword;"}, {"kind": "type_alias", "line": 536, "name": "Elf64_Sxword", "signature": "typedef long long Elf64_Sxword;"}, {"doc": "back-buffers, framebuffer, kernel heap) is defined ONCE in the ABI header shared with ring-3 programs. The kernel derives its own constants from it, so growing the window or moving a back-buffer cannot leave the two sides disagreeing -- that mismatch is what made the lua/MicroPython in-OS tests and DOOM's window go dark when the layout moved. Do not hardcode a layout * address in the kernel or in a ring-3 program; put it in minios_abi.h. #include \"minios_abi.h\" #include \"vma.h\" #include \"spinlock.h\" /* ========== Port I/O helpers ========== define ALIGN_UP(x, a) (((x) + (a) - 1) & ~((a) - 1)) ifndef PORT_IO_DEFINED define PORT_IO_DEFINED", "kind": "function", "line": 21, "name": "outb", "signature": "static inline void outb(unsigned short port, unsigned char val)"}, {"kind": "function", "line": 24, "name": "inb", "signature": "static inline unsigned char inb(unsigned short port)"}, {"kind": "function", "line": 29, "name": "outw", "signature": "static inline void outw(unsigned short port, unsigned short val)"}, {"kind": "function", "line": 32, "name": "inw", "signature": "static inline unsigned short inw(unsigned short port)"}, {"kind": "function", "line": 589, "name": "C", "signature": "* it with pointer subtraction in C (undefined behaviour). The value is\n * a link-time difference,..."}, {"kind": "function", "line": 22, "name": "volatile", "signature": "__asm__ volatile(\"outb %0, %1\" : : \"a\"(val), \"Nd\"(port));"}, {"doc": "static inline void outw(unsigned short port, unsigned short val) { __asm__ volatile(\"outw %0, %1\" : : \"a\"(val), \"Nd\"(port)); } static inline unsigned short inw(unsigned short port) { unsigned short r; __asm__ volatile(\"inw %1, %0\" : \"=a\"(r) : \"Nd\"(port)); return r; } #endif /* ========== VGA text mode ========== define VGA_BASE ((volatile char *)0xB8000) define VGA_COLS 80 define VGA_ROWS 25", "kind": "function", "line": 43, "name": "vga_clear", "signature": "void vga_clear(void);"}, {"kind": "function", "line": 45, "name": "vga_putc", "signature": "void vga_putc(char c);"}, {"kind": "function", "line": 46, "name": "vga_puts", "signature": "void vga_puts(const char *s);"}, {"kind": "function", "line": 47, "name": "vga_scroll", "signature": "void vga_scroll(void);"}, {"kind": "function", "line": 48, "name": "vga_set_cursor", "signature": "void vga_set_cursor(int x, int y);"}, {"kind": "function", "line": 49, "name": "vga_newline", "signature": "void vga_newline(void);"}, {"kind": "function", "line": 50, "name": "vga_cursor_enable", "signature": "void vga_cursor_enable(int on);"}, {"doc": "Console output lock (kernel/console.c): serializes SMP console output across CPUs. Held across the whole vga_putc body; try-or-race so an ISR * dump prints rather than deadlocks on a lock held by interrupted context. extern spinlock_t console_lock; /* VGA state getters (kernel/console.c, for scrollback renderer)", "kind": "function", "line": 58, "name": "vga_get_x", "signature": "int vga_get_x(void);"}, {"kind": "function", "line": 59, "name": "vga_get_y", "signature": "int vga_get_y(void);"}, {"kind": "function", "line": 60, "name": "vga_set_xy", "signature": "void vga_set_xy(int x, int y);"}, {"kind": "function", "line": 61, "name": "vga_get_color", "signature": "char vga_get_color(void);"}, {"doc": "Console output lock (kernel/console.c): serializes SMP console output across CPUs. Held across the whole vga_putc body; try-or-race so an ISR * dump prints rather than deadlocks on a lock held by interrupted context. extern spinlock_t console_lock; /* VGA state getters (kernel/console.c, for scrollback renderer) int vga_get_x(void); int vga_get_y(void); void vga_set_xy(int x, int y); char vga_get_color(void); /* ========== Scrollback ring (kernel/scrollback.c) ==========", "kind": "function", "line": 64, "name": "sb_init", "signature": "void sb_init(void);"}, {"kind": "function", "line": 65, "name": "sb_capture_row0", "signature": "void sb_capture_row0(void);"}, {"kind": "function", "line": 66, "name": "sb_reset", "signature": "void sb_reset(void);"}, {"kind": "function", "line": 67, "name": "sb_get_count", "signature": "int sb_get_count(void);"}, {"kind": "function", "line": 68, "name": "sb_get_head", "signature": "int sb_get_head(void);"}, {"kind": "function", "line": 69, "name": "sb_get_char", "signature": "char sb_get_char(int row, int col);"}, {"doc": "int vga_get_x(void); int vga_get_y(void); void vga_set_xy(int x, int y); char vga_get_color(void); /* ========== Scrollback ring (kernel/scrollback.c) ========== void sb_init(void); void sb_capture_row0(void); void sb_reset(void); int sb_get_count(void); int sb_get_head(void); char sb_get_char(int row, int col); /* ========== Serial console (COM1) ==========", "kind": "function", "line": 72, "name": "serial_init", "signature": "void serial_init(void);"}, {"kind": "function", "line": 73, "name": "serial_putc", "signature": "void serial_putc(char c);"}, {"kind": "function", "line": 74, "name": "serial_puts", "signature": "void serial_puts(const char *s);"}, {"kind": "function", "line": 75, "name": "serial_e_count", "signature": "unsigned long serial_e_count(void);"}, {"doc": "/* ========== Scrollback ring (kernel/scrollback.c) ========== void sb_init(void); void sb_capture_row0(void); void sb_reset(void); int sb_get_count(void); int sb_get_head(void); char sb_get_char(int row, int col); /* ========== Serial console (COM1) ========== void serial_init(void); void serial_putc(char c); void serial_puts(const char *s); unsigned long serial_e_count(void); /* E-flood tracer (serial.c) extern unsigned long ser_e_ra, ser_e_cpu; /* first 'E' writer's RA/CPU", "kind": "function", "line": 77, "name": "serial_available", "signature": "int serial_available(void);"}, {"kind": "function", "line": 78, "name": "serial_getc", "signature": "int serial_getc(void);"}, {"doc": "define KEY_PGDN_SEQ '6' define KEY_LEFT 0x4B define KEY_RIGHT 0x4D define KEY_LCTRL 0x1D define KEY_F5 0x3F define KEY_F11 0x57 define KEY_TILDE '~' define KEY_LALT 0x38 define KEY_RALT 0x38 define KEY_HOME 0x47 define KEY_END 0x4F define KEY_TAB 0x0F define KEY_SUPER_L 0x5B define KEY_SUPER_R 0x5C", "kind": "function", "line": 114, "name": "kbd_read", "signature": "int kbd_read(void);"}, {"kind": "function", "line": 116, "name": "kbd_available", "signature": "int kbd_available(void);"}, {"kind": "function", "line": 117, "name": "kbd_reset_for_shell", "signature": "void kbd_reset_for_shell(void);"}, {"kind": "function", "line": 118, "name": "mouse_disable", "signature": "void mouse_disable(void);"}, {"kind": "function", "line": 119, "name": "mouse_enable", "signature": "void mouse_enable(void);"}, {"doc": "define HEAP_BASE MINIOS_HEAP_BASE define HEAP_SIZE MINIOS_HEAP_SIZE", "kind": "function", "line": 144, "name": "kmalloc", "signature": "void *kmalloc(unsigned long size);"}, {"kind": "function", "line": 147, "name": "kfree", "signature": "void kfree(void *ptr);"}, {"kind": "function", "line": 148, "name": "kcalloc", "signature": "void *kcalloc(unsigned long nmemb, unsigned long size);"}, {"kind": "function", "line": 149, "name": "krealloc", "signature": "void *krealloc(void *ptr, unsigned long size);"}, {"kind": "function", "line": 150, "name": "kallocator_init", "signature": "void kallocator_init(void);"}, {"kind": "function", "line": 151, "name": "kmalloc_percpu", "signature": "void *kmalloc_percpu(unsigned long size, unsigned long align);"}, {"doc": "dlmalloc backend (third_party/dlmalloc): an mspace rooted over the fixed * kernel heap. The kernel's allocator delegates to these.", "kind": "function", "line": 155, "name": "dlmalloc_init", "signature": "void dlmalloc_init(void);"}, {"kind": "function", "line": 156, "name": "dlmalloc_malloc", "signature": "void *dlmalloc_malloc(unsigned long size);"}, {"kind": "function", "line": 157, "name": "dlmalloc_free", "signature": "void dlmalloc_free(void *ptr);"}, {"kind": "function", "line": 158, "name": "dlmalloc_calloc", "signature": "void *dlmalloc_calloc(unsigned long nmemb, unsigned long size);"}, {"kind": "function", "line": 159, "name": "dlmalloc_realloc", "signature": "void *dlmalloc_realloc(void *ptr, unsigned long size);"}, {"kind": "function", "line": 191, "name": "ramdisk_init", "signature": "void ramdisk_init(void);"}, {"kind": "function", "line": 193, "name": "ramdisk_open", "signature": "RDFile *ramdisk_open(const char *name);"}, {"kind": "function", "line": 194, "name": "ramdisk_read", "signature": "int ramdisk_read(RDFile *f, void *buf, unsigned offset, unsigned len);"}, {"kind": "function", "line": 195, "name": "ramdisk_write", "signature": "int ramdisk_write(RDFile *f, const void *buf, unsigned offset, unsigned len);"}, {"kind": "function", "line": 196, "name": "ramdisk_create", "signature": "RDFile *ramdisk_create(const char *name, unsigned size);"}, {"kind": "function", "line": 197, "name": "ramdisk_resize", "signature": "int ramdisk_resize(RDFile *f, unsigned newsize);"}, {"kind": "function", "line": 198, "name": "ramdisk_delete", "signature": "int ramdisk_delete(RDFile *f);"}, {"kind": "function", "line": 199, "name": "ramdisk_list", "signature": "int ramdisk_list(RDFile **out, int max);"}, {"kind": "function", "line": 200, "name": "ramdisk_setup_from", "signature": "void ramdisk_setup_from(void *data, unsigned size);"}, {"kind": "function", "line": 201, "name": "ramdisk_count", "signature": "int ramdisk_count(void);"}, {"kind": "function", "line": 202, "name": "ramdisk_file_name", "signature": "const char *ramdisk_file_name(int idx);"}, {"doc": "Path resolution choke point shared by the shell builtins and the zip builtins. fs_resolve resolves a path against the cwd into `out` (cap >= RAMDISK_FNAME_LEN); a name that does not fit is rejected like a * missing file, never truncated.", "kind": "function", "line": 210, "name": "fs_resolve", "signature": "int fs_resolve(const char *path, char *out, unsigned cap);"}, {"kind": "function", "line": 211, "name": "fs_dir_exists", "signature": "int fs_dir_exists(const char *dir);"}, {"kind": "function", "line": 212, "name": "fs_is_dir", "signature": "int fs_is_dir(const char *resolved);"}, {"kind": "function", "line": 269, "name": "int", "signature": "int (*open)(const char *path, int mode, void **handle);"}, {"kind": "function", "line": 294, "name": "vfs_register", "signature": "int vfs_register(const char *prefix, const vfs_ops_t *ops);"}, {"kind": "function", "line": 296, "name": "vfs_unregister", "signature": "int vfs_unregister(const char *prefix);"}, {"kind": "function", "line": 297, "name": "vfs_open", "signature": "int vfs_open(const char *path, int mode, vfs_file_t *f);"}, {"kind": "function", "line": 298, "name": "vfs_read", "signature": "int vfs_read(vfs_file_t *f, void *buf, unsigned long len);"}, {"kind": "function", "line": 299, "name": "vfs_write", "signature": "int vfs_write(vfs_file_t *f, const void *buf, unsigned long len);"}, {"kind": "function", "line": 300, "name": "vfs_close", "signature": "int vfs_close(vfs_file_t *f);"}, {"kind": "function", "line": 301, "name": "vfs_fstat", "signature": "int vfs_fstat(vfs_file_t *f, unsigned long *size_out);"}, {"kind": "function", "line": 302, "name": "vfs_init", "signature": "void vfs_init(void);"}, {"kind": "function", "line": 303, "name": "vfs_register_builtins", "signature": "void vfs_register_builtins(void);"}, {"kind": "function", "line": 304, "name": "minifs_mkdir_p", "signature": "int minifs_mkdir_p(const char *resolved);"}, {"kind": "function", "line": 347, "name": "kfopen", "signature": "KFILE *kfopen(const char *path, const char *mode);"}, {"kind": "function", "line": 349, "name": "kfclose", "signature": "int kfclose(KFILE *f);"}, {"kind": "function", "line": 350, "name": "kfgetc", "signature": "int kfgetc(KFILE *f);"}, {"kind": "function", "line": 351, "name": "kfgets", "signature": "char *kfgets(char *buf, int size, KFILE *f);"}, {"kind": "function", "line": 352, "name": "kfungetc", "signature": "int kfungetc(int c, KFILE *f);"}, {"kind": "function", "line": 353, "name": "kfread", "signature": "unsigned long kfread(void *ptr, unsigned long size, unsigned long nmemb, KFILE *f);"}, {"kind": "function", "line": 354, "name": "kfwrite", "signature": "unsigned long kfwrite(const void *ptr, unsigned long size, unsigned long nmemb, KFILE *f);"}, {"kind": "function", "line": 355, "name": "kfseek", "signature": "int kfseek(KFILE *f, long offset, int whence);"}, {"kind": "function", "line": 356, "name": "kftell", "signature": "long kftell(KFILE *f);"}, {"kind": "function", "line": 357, "name": "kfputs", "signature": "int kfputs(const char *s, KFILE *f);"}, {"kind": "function", "line": 358, "name": "kfputc", "signature": "int kfputc(int c, KFILE *f);"}, {"kind": "function", "line": 359, "name": "kfflush", "signature": "int kfflush(KFILE *f);"}, {"kind": "function", "line": 360, "name": "krewind", "signature": "void krewind(KFILE *f);"}, {"kind": "function", "line": 365, "name": "kfile_stdin", "signature": "KFILE *kfile_stdin(void);"}, {"kind": "function", "line": 366, "name": "kfile_stdout", "signature": "KFILE *kfile_stdout(void);"}, {"kind": "function", "line": 367, "name": "kfile_stderr", "signature": "KFILE *kfile_stderr(void);"}, {"doc": "long kftell(KFILE *f); int kfputs(const char *s, KFILE *f); int kfputc(int c, KFILE *f); int kfflush(KFILE *f); void krewind(KFILE *f); extern KFILE *kstdin; extern KFILE *kstdout; extern KFILE *kstderr; KFILE *kfile_stdin(void); KFILE *kfile_stdout(void); KFILE *kfile_stderr(void); /* ========== String functions ==========", "kind": "function", "line": 370, "name": "kstrlen", "signature": "unsigned long kstrlen(const char *s);"}, {"kind": "function", "line": 371, "name": "kstrcpy", "signature": "char *kstrcpy(char *dst, const char *src);"}, {"kind": "function", "line": 372, "name": "kstrncpy", "signature": "char *kstrncpy(char *dst, const char *src, unsigned long n);"}, {"kind": "function", "line": 373, "name": "kstrncat", "signature": "char *kstrncat(char *dst, const char *src, unsigned long n);"}, {"kind": "function", "line": 374, "name": "kstrcmp", "signature": "int kstrcmp(const char *a, const char *b);"}, {"kind": "function", "line": 375, "name": "kstrncmp", "signature": "int kstrncmp(const char *a, const char *b, unsigned long n);"}, {"kind": "function", "line": 376, "name": "kstrchr", "signature": "char *kstrchr(const char *s, int c);"}, {"kind": "function", "line": 377, "name": "kstrstr", "signature": "char *kstrstr(const char *hay, const char *ndl);"}, {"kind": "function", "line": 378, "name": "kmemcpy", "signature": "void *kmemcpy(void *dst, const void *src, unsigned long n);"}, {"kind": "function", "line": 379, "name": "kmemset", "signature": "void *kmemset(void *dst, int c, unsigned long n);"}, {"kind": "function", "line": 380, "name": "kmemcmp", "signature": "int kmemcmp(const void *a, const void *b, unsigned long n);"}, {"kind": "function", "line": 381, "name": "kmemmove", "signature": "void *kmemmove(void *dst, const void *src, unsigned long n);"}, {"kind": "function", "line": 382, "name": "katol", "signature": "long katol(const char *s);"}, {"doc": "char *kstrcpy(char *dst, const char *src); char *kstrncpy(char *dst, const char *src, unsigned long n); char *kstrncat(char *dst, const char *src, unsigned long n); int kstrcmp(const char *a, const char *b); int kstrncmp(const char *a, const char *b, unsigned long n); char *kstrchr(const char *s, int c); char *kstrstr(const char *hay, const char *ndl); void *kmemcpy(void *dst, const void *src, unsigned long n); void *kmemset(void *dst, int c, unsigned long n); int kmemcmp(const void *a, const void *b, unsigned long n); void *kmemmove(void *dst, const void *src, unsigned long n); long katol(const char *s); /* ========== printf ==========", "kind": "function", "line": 385, "name": "kprintf", "signature": "int kprintf(const char *fmt, ...);"}, {"kind": "function", "line": 386, "name": "kfprintf", "signature": "int kfprintf(KFILE *f, const char *fmt, ...);"}, {"kind": "function", "line": 387, "name": "ksprintf", "signature": "int ksprintf(char *buf, const char *fmt, ...);"}, {"kind": "function", "line": 388, "name": "ksnprintf", "signature": "int ksnprintf(char *buf, unsigned long size, const char *fmt, ...);"}, {"kind": "function", "line": 402, "name": "klog", "signature": "void klog(log_level_t level, log_subsystem_t subsys, const char *fmt, ...);"}, {"kind": "function", "line": 405, "name": "klog_hexdump", "signature": "void klog_hexdump(log_level_t level, log_subsystem_t subsys, const void *data, unsigned long len, const char *label);"}, {"kind": "function", "line": 407, "name": "klog_set_level", "signature": "void klog_set_level(log_level_t level);"}, {"kind": "function", "line": 408, "name": "klog_set_subsys_level", "signature": "void klog_set_subsys_level(log_subsystem_t subsys, log_level_t level);"}, {"kind": "function", "line": 409, "name": "klog_disable", "signature": "void klog_disable(void);"}, {"kind": "function", "line": 410, "name": "klog_enable", "signature": "void klog_enable(void);"}, {"doc": "LOG_SUBSYS_SHELL, LOG_SUBSYS_BOOT, LOG_SUBSYS_GENERAL, LOG_SUBSYS_COUNT } log_subsystem_t; void klog(log_level_t level, log_subsystem_t subsys, const char *fmt, ...); void klog_hexdump(log_level_t level, log_subsystem_t subsys, const void *data, unsigned long len, const char *label); void klog_set_level(log_level_t level); void klog_set_subsys_level(log_subsystem_t subsys, log_level_t level); void klog_disable(void); void klog_enable(void); /* ========== Shell ==========", "kind": "function", "line": 413, "name": "shell_init", "signature": "void shell_init(void);"}, {"kind": "function", "line": 414, "name": "shell_run", "signature": "void shell_run(void);"}, {"kind": "function", "line": 415, "name": "console_getc", "signature": "int console_getc(void);"}, {"kind": "function", "line": 416, "name": "redirect_suspend", "signature": "int redirect_suspend(void);"}, {"kind": "function", "line": 417, "name": "redirect_resume", "signature": "void redirect_resume(int was);"}, {"kind": "function", "line": 418, "name": "redirect_begin", "signature": "int redirect_begin(void);"}, {"kind": "function", "line": 419, "name": "redirect_commit", "signature": "int redirect_commit(const char *path, int append_mode);"}, {"kind": "function", "line": 420, "name": "redirect_active", "signature": "int redirect_active(void);"}, {"kind": "function", "line": 421, "name": "shell_take_redirect", "signature": "int shell_take_redirect(int *argc, char **argv, char **path, int *append_mode);"}, {"kind": "function", "line": 422, "name": "shell_run_any", "signature": "int shell_run_any(const char *name, int argc, char **argv);"}, {"kind": "function", "line": 423, "name": "shell_exec_builtin", "signature": "void shell_exec_builtin(int argc, char **argv);"}, {"kind": "function", "line": 424, "name": "shell_report_exit", "signature": "void shell_report_exit(int code);"}, {"kind": "function", "line": 425, "name": "shell_report", "signature": "void shell_report(const char *what, const char *detail);"}, {"kind": "function", "line": 449, "name": "kprog_slot", "signature": "KProg *kprog_slot(const char *name);"}, {"kind": "function", "line": 451, "name": "kprog_lookup", "signature": "KProg *kprog_lookup(const char *name);"}, {"kind": "function", "line": 452, "name": "ksym_resolve", "signature": "void *ksym_resolve(const char *name);"}, {"kind": "function", "line": 453, "name": "k_spawn", "signature": "int k_spawn(const char *name, int argc, char **argv);"}, {"kind": "function", "line": 454, "name": "k_register_program", "signature": "void k_register_program(const char *name, prog_entry_t entry);"}, {"kind": "function", "line": 455, "name": "k_register_process", "signature": "void k_register_process(const char *name, void *proc_entry);"}, {"kind": "function", "line": 456, "name": "k_register_symbol", "signature": "void k_register_symbol(const char *name, void *addr);"}, {"doc": "Libc name table for ET_REL programs (kernel/console.c). Called once * from kmain; the table itself lives in kernel/symtab.c.", "kind": "function", "line": 460, "name": "register_libc_symbols", "signature": "void register_libc_symbols(void);"}, {"doc": "Libc name table for ET_REL programs (kernel/console.c). Called once * from kmain; the table itself lives in kernel/symtab.c. void register_libc_symbols(void); /* ========== Process execution (Linux ELF binaries) ==========", "kind": "function", "line": 463, "name": "k_exec_user", "signature": "int k_exec_user(void *entry, int argc, char **argv);"}, {"kind": "function", "line": 464, "name": "k_run_rel", "signature": "int k_run_rel(prog_entry_t entry, int argc, char **argv);"}, {"kind": "function", "line": 465, "name": "kexit", "signature": "void kexit(int code);"}, {"kind": "function", "line": 469, "name": "ksetjmp", "signature": "int ksetjmp(void *buf) __attribute__((returns_twice));"}, {"kind": "function", "line": 470, "name": "klongjmp", "signature": "void klongjmp(void *buf, int val) __attribute__((noreturn));"}, {"kind": "function", "line": 473, "name": "setup_user_stack", "signature": "unsigned long *setup_user_stack(char *sbase, unsigned long ssize, int argc, char **argv);"}, {"kind": "function", "line": 475, "name": "vga_mode_set", "signature": "void vga_mode_set(int on);"}, {"kind": "function", "line": 476, "name": "vga_mode_is_active", "signature": "int vga_mode_is_active(void);"}, {"kind": "function", "line": 477, "name": "vga_gfx_ran_set", "signature": "void vga_gfx_ran_set(int on);"}, {"doc": "/* ========== Execution infrastructure (kernel/exec.c) ========== typedef struct { unsigned long v[8]; } kjmpbuf; int ksetjmp(void *buf) __attribute__((returns_twice)); void klongjmp(void *buf, int val) __attribute__((noreturn)); extern kjmpbuf exec_return; extern int exec_exit_code; unsigned long *setup_user_stack(char *sbase, unsigned long ssize, int argc, char **argv); void vga_mode_set(int on); int vga_mode_is_active(void); void vga_gfx_ran_set(int on); /* ========== Desktop shortcut launch ==========", "kind": "function", "line": 480, "name": "desktop_launch", "signature": "void desktop_launch(const char *cmd);"}, {"kind": "function", "line": 481, "name": "shell_queue_launch", "signature": "void shell_queue_launch(const char *cmd);"}, {"doc": "void klongjmp(void *buf, int val) __attribute__((noreturn)); extern kjmpbuf exec_return; extern int exec_exit_code; unsigned long *setup_user_stack(char *sbase, unsigned long ssize, int argc, char **argv); void vga_mode_set(int on); int vga_mode_is_active(void); void vga_gfx_ran_set(int on); /* ========== Desktop shortcut launch ========== void desktop_launch(const char *cmd); void shell_queue_launch(const char *cmd); /* ========== Multi-window manager (vga_fb.c) ==========", "kind": "function", "line": 484, "name": "vga_fb_focus_next", "signature": "void vga_fb_focus_next(void);"}, {"kind": "function", "line": 485, "name": "vga_fb_focus_id", "signature": "int vga_fb_focus_id(int id);"}, {"kind": "function", "line": 486, "name": "vga_fb_focus_get", "signature": "int vga_fb_focus_get(void);"}, {"kind": "function", "line": 487, "name": "vga_fb_nterms_get", "signature": "int vga_fb_nterms_get(void);"}, {"kind": "function", "line": 488, "name": "vga_fb_term_split", "signature": "int vga_fb_term_split(void);"}, {"kind": "function", "line": 489, "name": "vga_fb_term_close_focused", "signature": "int vga_fb_term_close_focused(void);"}, {"kind": "function", "line": 490, "name": "vga_fb_tile_all", "signature": "void vga_fb_tile_all(void);"}, {"kind": "function", "line": 491, "name": "vga_fb_list_windows", "signature": "void vga_fb_list_windows(void);"}, {"kind": "function", "line": 492, "name": "vga_fb_park_line", "signature": "void vga_fb_park_line(const char *b, int p);"}, {"kind": "function", "line": 493, "name": "vga_fb_unpark_line", "signature": "int vga_fb_unpark_line(char *b, int *p);"}, {"kind": "function", "line": 494, "name": "vga_fb_set_gfx_program", "signature": "void vga_fb_set_gfx_program(const char *name);"}, {"kind": "function", "line": 495, "name": "vga_fb_act_empty", "signature": "int vga_fb_act_empty(void);"}, {"kind": "function", "line": 496, "name": "vga_fb_prompt_live", "signature": "int vga_fb_prompt_live(void);"}, {"kind": "function", "line": 497, "name": "vga_fb_note_prompt", "signature": "void vga_fb_note_prompt(void);"}, {"kind": "function", "line": 498, "name": "vga_fb_clear_prompt", "signature": "void vga_fb_clear_prompt(void);"}, {"kind": "function", "line": 499, "name": "vga_fb_prompted", "signature": "int vga_fb_prompted(void);"}, {"doc": "Shell side of window focus: park/restore the half-typed input line so it * travels with its window. Implemented in shell.c, called from vga_fb.c.", "kind": "function", "line": 503, "name": "shell_readline_active", "signature": "int shell_readline_active(void);"}, {"kind": "function", "line": 504, "name": "shell_focus_park", "signature": "void shell_focus_park(void);"}, {"kind": "function", "line": 505, "name": "shell_focus_restore", "signature": "void shell_focus_restore(void);"}, {"doc": "Shell side of window focus: park/restore the half-typed input line so it * travels with its window. Implemented in shell.c, called from vga_fb.c. int shell_readline_active(void); void shell_focus_park(void); void shell_focus_restore(void); /* ========== User-pointer validation (kernel.c) ==========", "kind": "function", "line": 508, "name": "user_range_ok", "signature": "int user_range_ok(unsigned long p, unsigned long len);"}, {"kind": "function", "line": 509, "name": "user_str_ok", "signature": "int user_str_ok(unsigned long p, unsigned long maxlen);"}, {"doc": "Shell side of window focus: park/restore the half-typed input line so it * travels with its window. Implemented in shell.c, called from vga_fb.c. int shell_readline_active(void); void shell_focus_park(void); void shell_focus_restore(void); /* ========== User-pointer validation (kernel.c) ========== int user_range_ok(unsigned long p, unsigned long len); int user_str_ok(unsigned long p, unsigned long maxlen); /* ========== Page table helpers (kernel/mm/paging.c) ==========", "kind": "function", "line": 512, "name": "mm_setup_protections", "signature": "void mm_setup_protections(void);"}, {"kind": "function", "line": 513, "name": "pt_page_alloc", "signature": "void *pt_page_alloc(void);"}, {"kind": "function", "line": 514, "name": "pt_page_free", "signature": "void pt_page_free(void *ptr);"}, {"kind": "function", "line": 515, "name": "mm_user_pte_update", "signature": "void mm_user_pte_update(unsigned long vaddr, int exec, unsigned long cr3);"}, {"kind": "function", "line": 516, "name": "mm_user_set_exec", "signature": "void mm_user_set_exec(unsigned long start, unsigned long end, unsigned long cr3);"}, {"doc": "void shell_focus_restore(void); /* ========== User-pointer validation (kernel.c) ========== int user_range_ok(unsigned long p, unsigned long len); int user_str_ok(unsigned long p, unsigned long maxlen); /* ========== Page table helpers (kernel/mm/paging.c) ========== void mm_setup_protections(void); void *pt_page_alloc(void); void pt_page_free(void *ptr); void mm_user_pte_update(unsigned long vaddr, int exec, unsigned long cr3); void mm_user_set_exec(unsigned long start, unsigned long end, unsigned long cr3); /* ========== Swap (kernel/mm/swap.c) ==========", "kind": "function", "line": 519, "name": "swap_out", "signature": "int swap_out(unsigned long window_sz);"}, {"kind": "function", "line": 520, "name": "swap_in", "signature": "int swap_in(void);"}, {"doc": "define ET_REL 1 define ET_EXEC 2 define ET_DYN 3", "kind": "function", "line": 558, "name": "elf_load", "signature": "void *elf_load(void *data, unsigned size);"}, {"doc": "Elf64_Word e_flags; Elf64_Half e_ehsize; Elf64_Half e_phentsize; Elf64_Half e_phnum; Elf64_Half e_shentsize; Elf64_Half e_shnum; Elf64_Half e_shstrndx; } Elf64_Ehdr; #define ET_REL 1 #define ET_EXEC 2 #define ET_DYN 3 void *elf_load(void *data, unsigned size); /* ET_REL relocatable .o", "kind": "function", "line": 560, "name": "load_exec_elf", "signature": "void *load_exec_elf(void *data, unsigned size);"}, {"doc": "Elf64_Half e_ehsize; Elf64_Half e_phentsize; Elf64_Half e_phnum; Elf64_Half e_shentsize; Elf64_Half e_shnum; Elf64_Half e_shstrndx; } Elf64_Ehdr; #define ET_REL 1 #define ET_EXEC 2 #define ET_DYN 3 void *elf_load(void *data, unsigned size); /* ET_REL relocatable .o void *load_exec_elf(void *data, unsigned size); /* ET_EXEC / ET_DYN", "kind": "function", "line": 561, "name": "load_exec_elf_into", "signature": "void *load_exec_elf_into(void *data, unsigned size, unsigned long cr3, unsigned long *brk_out);"}, {"kind": "function", "line": 563, "name": "pt_clone_user_empty", "signature": "unsigned long pt_clone_user_empty(void);"}, {"kind": "function", "line": 564, "name": "mm_user_ensure_page", "signature": "int mm_user_ensure_page(unsigned long cr3, unsigned long va);"}, {"kind": "function", "line": 565, "name": "mm_copy_user_page", "signature": "int mm_copy_user_page(unsigned long dst_cr3, unsigned long src_cr3, unsigned long va);"}, {"doc": "#define ET_REL 1 #define ET_EXEC 2 #define ET_DYN 3 void *elf_load(void *data, unsigned size); /* ET_REL relocatable .o void *load_exec_elf(void *data, unsigned size); /* ET_EXEC / ET_DYN void *load_exec_elf_into(void *data, unsigned size, unsigned long cr3, unsigned long *brk_out); unsigned long pt_clone_user_empty(void); int mm_user_ensure_page(unsigned long cr3, unsigned long va); int mm_copy_user_page(unsigned long dst_cr3, unsigned long src_cr3, unsigned long va); /* ========== Linux syscall interface ==========", "kind": "function", "line": 569, "name": "syscall_init", "signature": "void syscall_init(void);"}, {"kind": "function", "line": 573, "name": "ksyscall", "signature": "long ksyscall(long n, long a1, long a2, long a3, long a4, long a5, long a6);"}, {"kind": "function", "line": 574, "name": "syscall_trace_enabled", "signature": "long syscall_trace_enabled(void);"}, {"kind": "function", "line": 575, "name": "syscall_trace_set", "signature": "void syscall_trace_set(int on);"}, {"doc": "ramdisk_size is an absolute linker symbol (kernel.ld computes it as ramdisk_end - ramdisk_start, where the subtraction is legal). Its ADDRESS is the size: declare char[], never size_t (that would read memory at that address), read it by address only, and never recompute it with pointer subtraction in C (undefined behaviour). The value is a link-time difference, so it is invariant under the KASLR slide: ramdisk_start and ramdisk_end move together inside the contiguous * image span. static inline unsigned long ramdisk_image_size(void) { return (unsigned long)ramdisk_size; } /* ========== Kernel clock ==========", "kind": "function", "line": 598, "name": "ktime_ms", "signature": "unsigned long ktime_ms(void);"}, {"kind": "function", "line": 599, "name": "ktime_us", "signature": "unsigned long ktime_us(void);"}, {"kind": "function", "line": 600, "name": "wall_us_now", "signature": "unsigned long wall_us_now(void);"}, {"doc": "it with pointer subtraction in C (undefined behaviour). The value is a link-time difference, so it is invariant under the KASLR slide: ramdisk_start and ramdisk_end move together inside the contiguous * image span. static inline unsigned long ramdisk_image_size(void) { return (unsigned long)ramdisk_size; } /* ========== Kernel clock ========== unsigned long ktime_ms(void); unsigned long ktime_us(void); unsigned long wall_us_now(void); /* ========== PC speaker ==========", "kind": "function", "line": 603, "name": "pcspk_init", "signature": "void pcspk_init(void);"}, {"kind": "function", "line": 604, "name": "pcspk_tone", "signature": "void pcspk_tone(unsigned freq);"}, {"kind": "function", "line": 605, "name": "pcspk_off", "signature": "void pcspk_off(void);"}, {"kind": "function", "line": 606, "name": "pcspk_set_volume", "signature": "void pcspk_set_volume(unsigned volume);"}, {"kind": "function", "line": 607, "name": "pcspk_get_volume", "signature": "unsigned pcspk_get_volume(void);"}, {"doc": "/* ========== Kernel clock ========== unsigned long ktime_ms(void); unsigned long ktime_us(void); unsigned long wall_us_now(void); /* ========== PC speaker ========== void pcspk_init(void); void pcspk_tone(unsigned freq); void pcspk_off(void); void pcspk_set_volume(unsigned volume); unsigned pcspk_get_volume(void); /* ========== RTC time-of-day ==========", "kind": "function", "line": 610, "name": "rtc_read_tod", "signature": "int rtc_read_tod(int *hour, int *min, int *sec);"}, {"doc": "unsigned long ktime_us(void); unsigned long wall_us_now(void); /* ========== PC speaker ========== void pcspk_init(void); void pcspk_tone(unsigned freq); void pcspk_off(void); void pcspk_set_volume(unsigned volume); unsigned pcspk_get_volume(void); /* ========== RTC time-of-day ========== int rtc_read_tod(int *hour, int *min, int *sec); /* ========== IDE driver ==========", "kind": "function", "line": 613, "name": "ide_init", "signature": "void ide_init(void);"}, {"kind": "function", "line": 614, "name": "ide_read_sectors", "signature": "int ide_read_sectors(unsigned int lba, unsigned int count, void *buf);"}, {"kind": "function", "line": 615, "name": "ide_write_sectors", "signature": "int ide_write_sectors(unsigned int lba, unsigned int count, const void *buf);"}, {"kind": "function", "line": 616, "name": "ide_read_sector", "signature": "int ide_read_sector(unsigned int lba, void *buf);"}, {"kind": "function", "line": 617, "name": "ide_write_sector", "signature": "int ide_write_sector(unsigned int lba, const void *buf);"}, {"kind": "function", "line": 618, "name": "ide_total_sectors", "signature": "unsigned int ide_total_sectors(void);"}, {"kind": "function", "line": 619, "name": "ide_present", "signature": "int ide_present(void);"}, {"doc": "/* ========== RTC time-of-day ========== int rtc_read_tod(int *hour, int *min, int *sec); /* ========== IDE driver ========== void ide_init(void); int ide_read_sectors(unsigned int lba, unsigned int count, void *buf); int ide_write_sectors(unsigned int lba, unsigned int count, const void *buf); int ide_read_sector(unsigned int lba, void *buf); int ide_write_sector(unsigned int lba, const void *buf); unsigned int ide_total_sectors(void); int ide_present(void); /* ========== Block device layer ==========", "kind": "function", "line": 622, "name": "block_init", "signature": "void block_init(void);"}, {"kind": "function", "line": 623, "name": "block_read", "signature": "int block_read(unsigned int block_num, void *buf);"}, {"kind": "function", "line": 624, "name": "block_write", "signature": "int block_write(unsigned int block_num, const void *buf);"}, {"kind": "function", "line": 625, "name": "block_read_multi", "signature": "int block_read_multi(unsigned int block_num, unsigned int count, void *buf);"}, {"kind": "function", "line": 626, "name": "block_write_multi", "signature": "int block_write_multi(unsigned int block_num, unsigned int count, const void *buf);"}, {"kind": "function", "line": 627, "name": "block_total", "signature": "unsigned int block_total(void);"}, {"doc": "int ide_read_sector(unsigned int lba, void *buf); int ide_write_sector(unsigned int lba, const void *buf); unsigned int ide_total_sectors(void); int ide_present(void); /* ========== Block device layer ========== void block_init(void); int block_read(unsigned int block_num, void *buf); int block_write(unsigned int block_num, const void *buf); int block_read_multi(unsigned int block_num, unsigned int count, void *buf); int block_write_multi(unsigned int block_num, unsigned int count, const void *buf); unsigned int block_total(void); /* ========== User-mode fault recovery ==========", "kind": "function", "line": 630, "name": "k_user_fault_return", "signature": "void k_user_fault_return(void);"}, {"doc": "Console output lock (kernel/console.c): serializes SMP console output across CPUs. Held across the whole vga_putc body; try-or-race so an ISR * dump prints rather than deadlocks on a lock held by interrupted context.", "kind": "variable", "line": 55, "name": "console_lock", "signature": "extern spinlock_t console_lock;"}, {"doc": "/* ========== Scrollback ring (kernel/scrollback.c) ========== void sb_init(void); void sb_capture_row0(void); void sb_reset(void); int sb_get_count(void); int sb_get_head(void); char sb_get_char(int row, int col); /* ========== Serial console (COM1) ========== void serial_init(void); void serial_putc(char c); void serial_puts(const char *s); unsigned long serial_e_count(void); /* E-flood tracer (serial.c)", "kind": "variable", "line": 76, "name": "ser_e_cpu", "signature": "extern unsigned long ser_e_ra, ser_e_cpu;"}, {"kind": "variable", "line": 146, "name": "kmalloc_fail_after", "signature": "extern long kmalloc_fail_after;"}, {"kind": "variable", "line": 305, "name": "fs_cwd", "signature": "extern char fs_cwd[];"}, {"kind": "variable", "line": 361, "name": "kstdin", "signature": "extern KFILE *kstdin;"}, {"kind": "variable", "line": 363, "name": "kstdout", "signature": "extern KFILE *kstdout;"}, {"kind": "variable", "line": 364, "name": "kstderr", "signature": "extern KFILE *kstderr;"}, {"kind": "variable", "line": 444, "name": "ksym_table", "signature": "extern KSym ksym_table[];"}, {"kind": "variable", "line": 446, "name": "ksym_count", "signature": "extern int ksym_count;"}, {"kind": "variable", "line": 447, "name": "kprog_table", "signature": "extern KProg kprog_table[];"}, {"kind": "variable", "line": 448, "name": "kprog_count", "signature": "extern int kprog_count;"}, {"kind": "variable", "line": 471, "name": "exec_return", "signature": "extern kjmpbuf exec_return;"}, {"kind": "variable", "line": 472, "name": "exec_exit_code", "signature": "extern int exec_exit_code;"}, {"doc": "int user_str_ok(unsigned long p, unsigned long maxlen); /* ========== Page table helpers (kernel/mm/paging.c) ========== void mm_setup_protections(void); void *pt_page_alloc(void); void pt_page_free(void *ptr); void mm_user_pte_update(unsigned long vaddr, int exec, unsigned long cr3); void mm_user_set_exec(unsigned long start, unsigned long end, unsigned long cr3); /* ========== Swap (kernel/mm/swap.c) ========== int swap_out(unsigned long window_sz); int swap_in(void); /* brk/mmap globals (loader.c)", "kind": "variable", "line": 523, "name": "g_brk", "signature": "extern unsigned long g_brk;"}, {"kind": "variable", "line": 524, "name": "g_brk_limit", "signature": "extern unsigned long g_brk_limit;"}, {"kind": "variable", "line": 525, "name": "user_mmap_cur", "signature": "extern unsigned long user_mmap_cur;"}, {"doc": "define KFD_MAX 32", "kind": "variable", "line": 577, "name": "kfd_table", "signature": "extern KFILE *kfd_table[KFD_MAX];"}, {"doc": "unsigned long va); /* ========== Linux syscall interface ========== void syscall_init(void); /* ========== Syscall table ========== void *ksym_resolve(const char *name); long ksyscall(long n, long a1, long a2, long a3, long a4, long a5, long a6); long syscall_trace_enabled(void); void syscall_trace_set(int on); #define KFD_MAX 32 extern KFILE *kfd_table[KFD_MAX]; /* ========== Kernel info ==========", "kind": "variable", "line": 580, "name": "kernel_end", "signature": "extern unsigned long kernel_end;"}, {"kind": "variable", "line": 581, "name": "ramdisk_start", "signature": "extern char ramdisk_start[];"}, {"kind": "variable", "line": 582, "name": "ramdisk_end", "signature": "extern char ramdisk_end[];"}, {"kind": "variable", "line": 583, "name": "ramdisk_size", "signature": "extern char ramdisk_size[];"}, {"kind": "macro", "line": 2, "name": "KERNEL_H", "signature": "#define KERNEL_H"}, {"kind": "macro", "line": 3, "name": "EFAULT", "signature": "#define EFAULT"}, {"kind": "macro", "line": 18, "name": "ALIGN_UP", "signature": "#define ALIGN_UP(x, a)"}, {"kind": "macro", "line": 20, "name": "PORT_IO_DEFINED", "signature": "#define PORT_IO_DEFINED"}, {"kind": "macro", "line": 40, "name": "VGA_BASE", "signature": "#define VGA_BASE"}, {"kind": "macro", "line": 41, "name": "VGA_COLS", "signature": "#define VGA_COLS"}, {"kind": "macro", "line": 42, "name": "VGA_ROWS", "signature": "#define VGA_ROWS"}, {"kind": "macro", "line": 81, "name": "KEY_BACKSPACE", "signature": "#define KEY_BACKSPACE"}, {"kind": "macro", "line": 82, "name": "KEY_ENTER", "signature": "#define KEY_ENTER"}, {"kind": "macro", "line": 83, "name": "KEY_LSHIFT", "signature": "#define KEY_LSHIFT"}, {"kind": "macro", "line": 84, "name": "KEY_RSHIFT", "signature": "#define KEY_RSHIFT"}, {"kind": "macro", "line": 85, "name": "KEY_CAPS", "signature": "#define KEY_CAPS"}, {"kind": "macro", "line": 86, "name": "KEY_E0", "signature": "#define KEY_E0"}, {"kind": "macro", "line": 87, "name": "KEY_UP", "signature": "#define KEY_UP"}, {"kind": "macro", "line": 88, "name": "KEY_DOWN", "signature": "#define KEY_DOWN"}, {"kind": "macro", "line": 89, "name": "KEY_PGUP", "signature": "#define KEY_PGUP"}, {"kind": "macro", "line": 90, "name": "KEY_PGDN", "signature": "#define KEY_PGDN"}, {"kind": "macro", "line": 91, "name": "KEY_ESC", "signature": "#define KEY_ESC"}, {"kind": "macro", "line": 92, "name": "KEY_CSI", "signature": "#define KEY_CSI"}, {"kind": "macro", "line": 93, "name": "KEY_ARR_UP", "signature": "#define KEY_ARR_UP"}, {"kind": "macro", "line": 94, "name": "KEY_ARR_DOWN", "signature": "#define KEY_ARR_DOWN"}, {"kind": "macro", "line": 95, "name": "KEY_ARR_RIGHT", "signature": "#define KEY_ARR_RIGHT"}, {"kind": "macro", "line": 96, "name": "KEY_ARR_LEFT", "signature": "#define KEY_ARR_LEFT"}, {"kind": "macro", "line": 97, "name": "KEY_HOME_SEQ", "signature": "#define KEY_HOME_SEQ"}, {"kind": "macro", "line": 98, "name": "KEY_END_SEQ", "signature": "#define KEY_END_SEQ"}, {"kind": "macro", "line": 99, "name": "KEY_PGUP_SEQ", "signature": "#define KEY_PGUP_SEQ"}, {"kind": "macro", "line": 100, "name": "KEY_PGDN_SEQ", "signature": "#define KEY_PGDN_SEQ"}, {"kind": "macro", "line": 101, "name": "KEY_LEFT", "signature": "#define KEY_LEFT"}, {"kind": "macro", "line": 102, "name": "KEY_RIGHT", "signature": "#define KEY_RIGHT"}, {"kind": "macro", "line": 103, "name": "KEY_LCTRL", "signature": "#define KEY_LCTRL"}, {"kind": "macro", "line": 104, "name": "KEY_F5", "signature": "#define KEY_F5"}, {"kind": "macro", "line": 105, "name": "KEY_F11", "signature": "#define KEY_F11"}, {"kind": "macro", "line": 106, "name": "KEY_TILDE", "signature": "#define KEY_TILDE"}, {"kind": "macro", "line": 107, "name": "KEY_LALT", "signature": "#define KEY_LALT"}, {"kind": "macro", "line": 108, "name": "KEY_RALT", "signature": "#define KEY_RALT"}, {"kind": "macro", "line": 109, "name": "KEY_HOME", "signature": "#define KEY_HOME"}, {"kind": "macro", "line": 110, "name": "KEY_END", "signature": "#define KEY_END"}, {"kind": "macro", "line": 111, "name": "KEY_TAB", "signature": "#define KEY_TAB"}, {"kind": "macro", "line": 112, "name": "KEY_SUPER_L", "signature": "#define KEY_SUPER_L"}, {"kind": "macro", "line": 113, "name": "KEY_SUPER_R", "signature": "#define KEY_SUPER_R"}, {"kind": "macro", "line": 129, "name": "USER_LOAD_BASE", "signature": "#define USER_LOAD_BASE"}, {"kind": "macro", "line": 130, "name": "USER_LOAD_END", "signature": "#define USER_LOAD_END"}, {"kind": "macro", "line": 131, "name": "USER_STACK_SIZE", "signature": "#define USER_STACK_SIZE"}, {"kind": "macro", "line": 132, "name": "USER_STACK_TOP", "signature": "#define USER_STACK_TOP"}, {"kind": "macro", "line": 133, "name": "USER_STACK_BASE", "signature": "#define USER_STACK_BASE"}, {"kind": "macro", "line": 134, "name": "USER_BRK_END", "signature": "#define USER_BRK_END"}, {"kind": "macro", "line": 139, "name": "SYS_KSTK_TOP", "signature": "#define SYS_KSTK_TOP"}, {"kind": "macro", "line": 140, "name": "SYS_KSTK_BASE", "signature": "#define SYS_KSTK_BASE"}, {"kind": "macro", "line": 141, "name": "HEAP_BASE", "signature": "#define HEAP_BASE"}, {"kind": "macro", "line": 143, "name": "HEAP_SIZE", "signature": "#define HEAP_SIZE"}, {"kind": "macro", "line": 183, "name": "RAMDISK_MAX_FILES", "signature": "#define RAMDISK_MAX_FILES"}, {"kind": "macro", "line": 184, "name": "RAMDISK_FNAME_LEN", "signature": "#define RAMDISK_FNAME_LEN"}, {"kind": "macro", "line": 203, "name": "RD_DATA_MAX", "signature": "#define RD_DATA_MAX"}, {"kind": "macro", "line": 221, "name": "ETREL_TRUSTED_DIR", "signature": "#define ETREL_TRUSTED_DIR"}, {"kind": "macro", "line": 222, "name": "ETREL_TRUSTED_LEN", "signature": "#define ETREL_TRUSTED_LEN"}, {"kind": "macro", "line": 333, "name": "EOF", "signature": "#define EOF"}, {"kind": "macro", "line": 429, "name": "KSYM_MAX", "signature": "#define KSYM_MAX"}, {"kind": "macro", "line": 431, "name": "KPROG_MAX", "signature": "#define KPROG_MAX"}, {"kind": "macro", "line": 530, "name": "EI_NIDENT", "signature": "#define EI_NIDENT"}, {"kind": "macro", "line": 554, "name": "ET_REL", "signature": "#define ET_REL"}, {"kind": "macro", "line": 556, "name": "ET_EXEC", "signature": "#define ET_EXEC"}, {"kind": "macro", "line": 557, "name": "ET_DYN", "signature": "#define ET_DYN"}, {"kind": "macro", "line": 576, "name": "KFD_MAX", "signature": "#define KFD_MAX"}]}, {"doc": "ifndef KTIME_H define KTIME_H ktime.h -- pure time-conversion helpers shared by the kernel clock", "id": "ktime.h", "kind": "module", "label": "ktime.h", "language": "h", "sha256": "8bad5e5fc06a1246", "symbol_count": 3, "symbols": [{"doc": "ktime.h -- pure time-conversion helpers shared by the kernel clock (kernel/time.c) and the host suite (tests/test_ktime.c). The PIT-calibrated TSC gives ticks; tsc_per_ms converts them to milliseconds. Microsecond resolution needs the same ratio without a 64-bit overflow: delta_ticks can approach 2^64 on a long-lived machine, and delta*1000 would wrap past the range check class the file-I/O overflow guards were written for. The split-quotient form below never multiplies by more than 1000x a sub-per-ms remainder. Lives here (not in time.c) so the host test pins the arithmetic without port I/O; the in-guest proof is the `clock` builtin and the BDD clock scenario. Phase 0.2/0.3 of the FreeDom readiness plan.", "kind": "function", "line": 18, "name": "ktime_us_from_delta", "signature": "static inline unsigned long ktime_us_from_delta(unsigned long delta_ticks,\n ..."}, {"doc": "wall_us_from_parts: wall-clock microseconds from an RTC-anchored base. base_sec is the last seen RTC second, base_ktime_us the monotonic clock then, now_ktime_us the monotonic clock now. Pure so the host * suite pins the rollover math; the kernel feeds it live values.", "kind": "function", "line": 30, "name": "wall_us_from_parts", "signature": "static inline unsigned long wall_us_from_parts(unsigned long base_sec,\n ..."}, {"kind": "macro", "line": 2, "name": "KTIME_H", "signature": "#define KTIME_H"}]}, {"doc": "ifndef LZ4_KERNEL_H define LZ4_KERNEL_H", "id": "lz4_kernel.h", "kind": "module", "label": "lz4_kernel.h", "language": "h", "sha256": "b35799b84cb9c963", "symbol_count": 4, "symbols": [{"doc": "ifndef LZ4_KERNEL_H define LZ4_KERNEL_H", "kind": "function", "line": 3, "name": "LZ4_compress_default", "signature": "int LZ4_compress_default(const char *src, char *dst, int srcSize, int dstCapacity);"}, {"kind": "function", "line": 5, "name": "LZ4_compressBound", "signature": "int LZ4_compressBound(int inputSize);"}, {"kind": "function", "line": 6, "name": "LZ4_decompress_safe", "signature": "int LZ4_decompress_safe(const char *src, char *dst, int compressedSize, int dstCapacity);"}, {"kind": "macro", "line": 2, "name": "LZ4_KERNEL_H", "signature": "#define LZ4_KERNEL_H"}]}, {"id": "mcp/__init__.py", "kind": "module", "label": "__init__.py", "language": "py", "sha256": "9a62779e844a15fa", "symbol_count": 0, "symbols": []}, {"id": "mcp/mcp_dbg_driver.py", "kind": "module", "label": "mcp_dbg_driver.py", "language": "py", "sha256": "d729864610ee717c", "symbol_count": 6, "symbols": [{"kind": "class", "line": 14, "name": "Client", "signature": "class Client"}, {"kind": "method", "line": 62, "name": "main", "signature": "def main()"}, {"kind": "method", "line": 15, "name": "__init__", "signature": "def __init__(self)"}, {"kind": "method", "line": 26, "name": "request", "signature": "def request(self, method, params)"}, {"kind": "method", "line": 44, "name": "tool", "signature": "def tool(self, name, params)"}, {"kind": "method", "line": 52, "name": "close", "signature": "def close(self)"}]}, {"id": "mcp/mcp_dogfood.py", "kind": "module", "label": "mcp_dogfood.py", "language": "py", "sha256": "0fca1f780714df8f", "symbol_count": 6, "symbols": [{"kind": "class", "line": 18, "name": "Client", "signature": "class Client"}, {"kind": "method", "line": 76, "name": "main", "signature": "def main()"}, {"kind": "method", "line": 19, "name": "__init__", "signature": "def __init__(self, addons_dir)"}, {"kind": "method", "line": 38, "name": "request", "signature": "def request(self, method, params)"}, {"kind": "method", "line": 56, "name": "tool", "signature": "def tool(self, name, params)"}, {"kind": "method", "line": 66, "name": "close", "signature": "def close(self)"}]}, {"id": "mcp/minios_addons.py", "kind": "module", "label": "minios_addons.py", "language": "py", "sha256": "26bc9344556d357f", "symbol_count": 16, "symbols": [{"doc": "Expected marketplace failure, reported to the client as isError.", "kind": "class", "line": 42, "name": "AddonError", "signature": "class AddonError(Exception)"}, {"kind": "method", "line": 48, "name": "_clean", "signature": "def _clean(s)"}, {"kind": "method", "line": 52, "name": "_unquote", "signature": "def _unquote(v)"}, {"doc": "Parse the strict YAML subset. Returns the addon dict.\n\nGrammar: flat `key: value` lines; `install:` opens an indented block\nwith `repo_url:`, a `files:` list of `- src:`/`dst:` pairs, and\n`build:` / `verify:` lists of `- ...` command lines (`verify` items\nmay carry a nested `exit_code:`). Everything else is a parse error\nwith its line number.", "kind": "method", "line": 59, "name": "parse_addon_yaml", "signature": "def parse_addon_yaml(text)"}, {"doc": "Check bounds and character sets. Raises AddonError.", "kind": "method", "line": 189, "name": "validate_addon", "signature": "def validate_addon(addon, source)"}, {"doc": "dst paths live on the ramdisk: relative, no '..', bounded charset.", "kind": "method", "line": 250, "name": "validate_addon_path", "signature": "def validate_addon_path(path)"}, {"doc": "Build/verify lines are single printable-ASCII shell commands.", "kind": "method", "line": 264, "name": "validate_shell_line", "signature": "def validate_shell_line(line)"}, {"doc": "Load every addon yaml; each entry is a dict or an error string.", "kind": "method", "line": 278, "name": "load_addons_dir", "signature": "def load_addons_dir(addons_dir)"}, {"doc": "Split a source into editor-sized chunks. Raises AddonError.", "kind": "method", "line": 302, "name": "split_for_editor", "signature": "def split_for_editor(text)"}, {"kind": "method", "line": 327, "name": "exit_code_of", "signature": "def exit_code_of(text)"}, {"doc": "Host-side record of installed addons (system temp dir).", "kind": "class", "line": 332, "name": "AddonState", "signature": "class AddonState"}, {"doc": "Install one validated addon into the booted MiniOS session.\n\nFailure at any step raises AddonError; upload parts are removed and\nnothing is recorded, so a half-installed package is never reported.", "kind": "method", "line": 356, "name": "install_addon", "signature": "def install_addon(session, addon, cfg)"}, {"kind": "method", "line": 69, "name": "fail", "signature": "def fail(lineno, why)"}, {"kind": "method", "line": 335, "name": "__init__", "signature": "def __init__(self, path)"}, {"kind": "method", "line": 338, "name": "load", "signature": "def load(self)"}, {"kind": "method", "line": 348, "name": "save", "signature": "def save(self, addons)"}]}, {"id": "mcp/minios_mcp.py", "kind": "module", "label": "minios_mcp.py", "language": "py", "sha256": "d6aeb09687624924", "symbol_count": 50, "symbols": [{"doc": "Resolve the configuration: defaults overridden by the environment.", "kind": "function", "line": 68, "name": "env_config", "signature": "def env_config()"}, {"doc": "Clamp a requested wait to the bounded timeout range.", "kind": "function", "line": 86, "name": "clamp_timeout", "signature": "def clamp_timeout(ms)"}, {"doc": "Reject file names the ramdisk or the shell would mishandle.", "kind": "function", "line": 99, "name": "validate_path", "signature": "def validate_path(name)"}, {"doc": "Reject lines the kernel readline cannot carry (printable ASCII).", "kind": "function", "line": 115, "name": "validate_content", "signature": "def validate_content(text)"}, {"doc": "Expected tool failure, reported to the client as isError.", "kind": "class", "line": 128, "name": "ToolError", "signature": "class ToolError(Exception)"}, {"doc": "JSON-RPC level failure carrying a standard error code.", "kind": "class", "line": 134, "name": "RPCError", "signature": "class RPCError(Exception)"}, {"doc": "Bounded console log with absolute byte positions and waits.", "kind": "class", "line": 143, "name": "LogBuffer", "signature": "class LogBuffer"}, {"doc": "One QEMU child, one pty, one console log, one consume cursor.", "kind": "class", "line": 199, "name": "MiniOSSession", "signature": "class MiniOSSession"}, {"kind": "method", "line": 560, "name": "subprocess_launch", "signature": "def subprocess_launch(cfg, slave_fd)"}, {"doc": "JSON-RPC dispatch loop over stdio.", "kind": "class", "line": 711, "name": "MCPServer", "signature": "class MCPServer"}, {"kind": "method", "line": 868, "name": "main", "signature": "def main()"}, {"kind": "method", "line": 137, "name": "__init__", "signature": "def __init__(self, code, message)"}, {"kind": "method", "line": 146, "name": "__init__", "signature": "def __init__(self, cap)"}, {"kind": "method", "line": 152, "name": "append", "signature": "def append(self, data)"}, {"kind": "method", "line": 160, "name": "bytes_from", "signature": "def bytes_from(self, pos)"}, {"kind": "method", "line": 165, "name": "text_from", "signature": "def text_from(self, pos, end)"}, {"kind": "method", "line": 172, "name": "find", "signature": "def find(self, marker, start)"}, {"doc": "Block until marker appears at or after start; return position.", "kind": "method", "line": 176, "name": "wait_for", "signature": "def wait_for(self, marker, start, timeout_ms)"}, {"kind": "method", "line": 189, "name": "_find_locked", "signature": "def _find_locked(self, marker, start)"}, {"kind": "method", "line": 202, "name": "__init__", "signature": "def __init__(self, cfg)"}, {"kind": "method", "line": 213, "name": "booted", "signature": "def booted(self)"}, {"kind": "method", "line": 216, "name": "status", "signature": "def status(self)"}, {"kind": "method", "line": 225, "name": "_reap_stale", "signature": "def _reap_stale(self)"}, {"kind": "method", "line": 261, "name": "_drop_pidfile", "signature": "def _drop_pidfile(self)"}, {"kind": "method", "line": 267, "name": "boot", "signature": "def boot(self, timeout_ms)"}, {"kind": "method", "line": 302, "name": "_read_loop", "signature": "def _read_loop(self)"}, {"kind": "method", "line": 312, "name": "_close_pty", "signature": "def _close_pty(self)"}, {"kind": "method", "line": 322, "name": "_write_line", "signature": "def _write_line(self, line)"}, {"doc": "Editor content lines may be empty (blank lines in the file).", "kind": "method", "line": 331, "name": "_write_editor_line", "signature": "def _write_editor_line(self, line)"}, {"kind": "method", "line": 339, "name": "send", "signature": "def send(self, line, timeout_ms)"}, {"kind": "method", "line": 350, "name": "expect", "signature": "def expect(self, marker, timeout_ms)"}, {"kind": "method", "line": 364, "name": "snapshot", "signature": "def snapshot(self, max_bytes)"}, {"doc": "Run a generic scenario: send a list of shell commands, then assert\nthat each expected marker appears (and each refuted marker does not)\nin the output those commands produced. Returns a verdict plus the\ncaptured transcript. This is the reusable harness behind every in-OS\nfeature test, so a session never has to hand-roll a QEMU boot and\nmarker-assertion script.", "kind": "method", "line": 374, "name": "run_test", "signature": "def run_test(self, commands, expect, refute, timeout_ms)"}, {"kind": "method", "line": 430, "name": "cat", "signature": "def cat(self, path)"}, {"doc": "Run a MicroPython script (or `-c` code) inside MiniOS and return\nits output, including the `exit code: N` line. MicroPython now runs\nreliably thanks to the kernel fix that zeroes the initial registers\nat the ELF entry (rdx is rtld_fini for glibc's _start).", "kind": "method", "line": 436, "name": "run_python", "signature": "def run_python(self, script, args, timeout_ms)"}, {"doc": "Read a ramdisk file and return exactly its bytes.\n\nThe serial driver emits CRLF; the kernel cat appends one newline\nafter the content, so the body is extracted by stripping the echoed\ncommand line, the prompt and that single trailing newline.", "kind": "method", "line": 447, "name": "cat_body", "signature": "def cat_body(self, path, missing_ok)"}, {"kind": "method", "line": 473, "name": "_cleanup_parts", "signature": "def _cleanup_parts(self, parts)"}, {"kind": "method", "line": 480, "name": "write", "signature": "def write(self, path, content)"}, {"kind": "method", "line": 517, "name": "poweroff", "signature": "def poweroff(self, timeout_ms)"}, {"kind": "method", "line": 537, "name": "terminate", "signature": "def terminate(self)"}, {"kind": "method", "line": 556, "name": "close", "signature": "def close(self)"}, {"kind": "method", "line": 714, "name": "__init__", "signature": "def __init__(self, cfg)"}, {"kind": "method", "line": 718, "name": "run", "signature": "def run(self)"}, {"kind": "method", "line": 726, "name": "_handle", "signature": "def _handle(self, line)"}, {"kind": "method", "line": 752, "name": "_initialize", "signature": "def _initialize(self, params)"}, {"kind": "method", "line": 759, "name": "_call", "signature": "def _call(self, params)"}, {"kind": "method", "line": 776, "name": "_dispatch", "signature": "def _dispatch(self, name, args)"}, {"kind": "method", "line": 822, "name": "_addons_list", "signature": "def _addons_list(self)"}, {"kind": "method", "line": 843, "name": "_addon_install", "signature": "def _addon_install(self, args)"}, {"kind": "method", "line": 864, "name": "_reply", "signature": "def _reply(self, msg)"}]}, {"doc": "Mutation testing for the MiniOS MCP bridge. Every mutant is injected into a private copy of minios_mcp.py and run against the unit and BDD suite. A mutant that survives (suite fully green) exposes a test gap. Suites run in parallel (one worker per core, MUTATE_JOBS to override); each mutant gets its own pid file and addon state so the runs stay independent. Mutation format: \"name | sed -i expression | file\"", "id": "mcp/mutate_mcp.sh", "kind": "module", "label": "mutate_mcp.sh", "language": "sh", "sha256": "fff886f5090d023d", "symbol_count": 1, "symbols": [{"doc": "Each mutant runs the suite in its own directory with its own pid file and addon state, so the runs are independent and may execute in parallel. The worker writes the exit code; the loop below maps it onto the verdict.", "kind": "function", "line": 115, "name": "run_one"}]}, {"id": "mcp/test_minios_mcp.py", "kind": "module", "label": "test_minios_mcp.py", "language": "py", "sha256": "884c11e8239cc94b", "symbol_count": 99, "symbols": [{"kind": "function", "line": 29, "name": "load_module", "signature": "def load_module()"}, {"kind": "function", "line": 52, "name": "have_qemu", "signature": "def have_qemu()"}, {"doc": "Child process running minios_mcp.py, driven over stdio JSON-RPC.", "kind": "class", "line": 58, "name": "MCPServer", "signature": "class MCPServer"}, {"kind": "class", "line": 141, "name": "TestProtocol", "signature": "class TestProtocol(TestCase)"}, {"kind": "class", "line": 205, "name": "TestValidation", "signature": "class TestValidation(TestCase)"}, {"kind": "class", "line": 254, "name": "TestLogBuffer", "signature": "class TestLogBuffer(TestCase)"}, {"doc": "Fail-fast for QEMU-backed classes: once a tool call has hit a\nconsole wait timeout the bridge is stuck (a mutated marker, a hung\nshell) and every remaining test would only burn its own timeout, so\nthey are skipped instead.", "kind": "class", "line": 286, "name": "_ConsoleBDDBase", "signature": "class _ConsoleBDDBase(TestCase)"}, {"kind": "class", "line": 322, "name": "TestMiniOSBDD", "signature": "class TestMiniOSBDD(_ConsoleBDDBase)"}, {"kind": "class", "line": 457, "name": "TestAddonYaml", "signature": "class TestAddonYaml(TestCase)"}, {"kind": "class", "line": 519, "name": "TestAddonHelpers", "signature": "class TestAddonHelpers(TestCase)"}, {"doc": "In-memory stand-in for the MiniOS session (no QEMU).", "kind": "class", "line": 559, "name": "FakeOS", "signature": "class FakeOS"}, {"kind": "class", "line": 625, "name": "TestAddonInstall", "signature": "class TestAddonInstall(TestCase)"}, {"doc": "Install a fixture addon from a local git repo into the real OS.", "kind": "class", "line": 760, "name": "TestAddonBDD", "signature": "class TestAddonBDD(_ConsoleBDDBase)"}, {"kind": "method", "line": 61, "name": "__init__", "signature": "def __init__(self, env_extra)"}, {"kind": "method", "line": 80, "name": "initialize", "signature": "def initialize(self)"}, {"kind": "method", "line": 84, "name": "request", "signature": "def request(self, method, params)"}, {"kind": "method", "line": 91, "name": "raw", "signature": "def raw(self, line)"}, {"kind": "method", "line": 96, "name": "_read_response", "signature": "def _read_response(self)"}, {"kind": "method", "line": 102, "name": "_roundtrip", "signature": "def _roundtrip(self, msg)"}, {"kind": "method", "line": 110, "name": "tool", "signature": "def tool(self, name, params)"}, {"kind": "method", "line": 120, "name": "close", "signature": "def close(self)"}, {"kind": "method", "line": 143, "name": "setUpClass", "signature": "def setUpClass(cls)"}, {"kind": "method", "line": 149, "name": "tearDownClass", "signature": "def tearDownClass(cls)"}, {"kind": "method", "line": 152, "name": "test_initialize", "signature": "def test_initialize(self)"}, {"kind": "method", "line": 158, "name": "test_tools_list", "signature": "def test_tools_list(self)"}, {"kind": "method", "line": 166, "name": "test_ping", "signature": "def test_ping(self)"}, {"kind": "method", "line": 170, "name": "test_unknown_method", "signature": "def test_unknown_method(self)"}, {"kind": "method", "line": 174, "name": "test_malformed_json", "signature": "def test_malformed_json(self)"}, {"kind": "method", "line": 178, "name": "test_unknown_tool", "signature": "def test_unknown_tool(self)"}, {"kind": "method", "line": 183, "name": "test_send_not_booted", "signature": "def test_send_not_booted(self)"}, {"kind": "method", "line": 189, "name": "test_send_empty_line_rejected", "signature": "def test_send_empty_line_rejected(self)"}, {"kind": "method", "line": 195, "name": "test_test_not_booted", "signature": "def test_test_not_booted(self)"}, {"kind": "method", "line": 207, "name": "setUpClass", "signature": "def setUpClass(cls)"}, {"kind": "method", "line": 212, "name": "test_path_accepts_plain_names", "signature": "def test_path_accepts_plain_names(self)"}, {"kind": "method", "line": 216, "name": "test_path_rejects_unsafe", "signature": "def test_path_rejects_unsafe(self)"}, {"kind": "method", "line": 220, "name": "test_path_rejects_long", "signature": "def test_path_rejects_long(self)"}, {"kind": "method", "line": 223, "name": "test_content_accepts_ascii", "signature": "def test_content_accepts_ascii(self)"}, {"kind": "method", "line": 226, "name": "test_content_rejects_non_printable", "signature": "def test_content_rejects_non_printable(self)"}, {"kind": "method", "line": 230, "name": "test_timeout_clamped", "signature": "def test_timeout_clamped(self)"}, {"kind": "method", "line": 234, "name": "test_write_rejects_line_too_long", "signature": "def test_write_rejects_line_too_long(self)"}, {"kind": "method", "line": 243, "name": "test_write_rejects_too_many_lines", "signature": "def test_write_rejects_too_many_lines(self)"}, {"kind": "method", "line": 256, "name": "setUpClass", "signature": "def setUpClass(cls)"}, {"kind": "method", "line": 261, "name": "test_bounds", "signature": "def test_bounds(self)"}, {"kind": "method", "line": 268, "name": "test_find_and_total", "signature": "def test_find_and_total(self)"}, {"kind": "method", "line": 275, "name": "test_cursor_prevents_stale_match", "signature": "def test_cursor_prevents_stale_match(self)"}, {"kind": "method", "line": 295, "name": "guard_server", "signature": "def guard_server(cls)"}, {"kind": "method", "line": 316, "name": "setUp", "signature": "def setUp(self)"}, {"kind": "method", "line": 324, "name": "setUpClass", "signature": "def setUpClass(cls)"}, {"kind": "method", "line": 331, "name": "tearDownClass", "signature": "def tearDownClass(cls)"}, {"kind": "method", "line": 335, "name": "test_t01_boot", "signature": "def test_t01_boot(self)"}, {"kind": "method", "line": 345, "name": "test_t02_expect", "signature": "def test_t02_expect(self)"}, {"kind": "method", "line": 352, "name": "test_t03_write_and_cat", "signature": "def test_t03_write_and_cat(self)"}, {"kind": "method", "line": 362, "name": "test_t04_toolchain_elf", "signature": "def test_t04_toolchain_elf(self)"}, {"kind": "method", "line": 373, "name": "test_t05_toolchain_cvm", "signature": "def test_t05_toolchain_cvm(self)"}, {"kind": "method", "line": 383, "name": "test_t06_selfhosted_compiler", "signature": "def test_t06_selfhosted_compiler(self)"}, {"kind": "method", "line": 389, "name": "test_t07_bin_command_path", "signature": "def test_t07_bin_command_path(self)"}, {"kind": "method", "line": 397, "name": "test_t08_python_script", "signature": "def test_t08_python_script(self)"}, {"kind": "method", "line": 404, "name": "test_t09_py_eval", "signature": "def test_t09_py_eval(self)"}, {"kind": "method", "line": 409, "name": "test_t10_minios_test", "signature": "def test_t10_minios_test(self)"}, {"kind": "method", "line": 430, "name": "test_t11_poweroff_and_reboot", "signature": "def test_t11_poweroff_and_reboot(self)"}, {"kind": "method", "line": 459, "name": "setUpClass", "signature": "def setUpClass(cls)"}, {"kind": "method", "line": 469, "name": "test_parse_valid", "signature": "def test_parse_valid(self)"}, {"kind": "method", "line": 479, "name": "test_validate_accepts_valid", "signature": "def test_validate_accepts_valid(self)"}, {"kind": "method", "line": 483, "name": "test_unknown_key_rejected", "signature": "def test_unknown_key_rejected(self)"}, {"kind": "method", "line": 487, "name": "test_bad_indent_rejected", "signature": "def test_bad_indent_rejected(self)"}, {"kind": "method", "line": 491, "name": "test_validate_rejects_bad_dst", "signature": "def test_validate_rejects_bad_dst(self)"}, {"kind": "method", "line": 496, "name": "test_validate_rejects_missing_name", "signature": "def test_validate_rejects_missing_name(self)"}, {"kind": "method", "line": 500, "name": "test_validate_rejects_long_build_line", "signature": "def test_validate_rejects_long_build_line(self)"}, {"kind": "method", "line": 508, "name": "test_validate_rejects_control_chars", "signature": "def test_validate_rejects_control_chars(self)"}, {"kind": "method", "line": 513, "name": "test_validate_rejects_empty_files", "signature": "def test_validate_rejects_empty_files(self)"}, {"kind": "method", "line": 521, "name": "setUpClass", "signature": "def setUpClass(cls)"}, {"kind": "method", "line": 531, "name": "test_split_for_editor_chunks", "signature": "def test_split_for_editor_chunks(self)"}, {"kind": "method", "line": 538, "name": "test_split_rejects_long_line", "signature": "def test_split_rejects_long_line(self)"}, {"kind": "method", "line": 542, "name": "test_split_rejects_non_ascii", "signature": "def test_split_rejects_non_ascii(self)"}, {"kind": "method", "line": 546, "name": "test_exit_code_of", "signature": "def test_exit_code_of(self)"}, {"kind": "method", "line": 551, "name": "test_state_roundtrip", "signature": "def test_state_roundtrip(self)"}, {"kind": "method", "line": 562, "name": "__init__", "signature": "def __init__(self, exit_codes)"}, {"kind": "method", "line": 569, "name": "booted", "signature": "def booted(self)"}, {"kind": "method", "line": 572, "name": "boot", "signature": "def boot(self, timeout_ms)"}, {"kind": "method", "line": 576, "name": "write", "signature": "def write(self, path, content)"}, {"kind": "method", "line": 583, "name": "send", "signature": "def send(self, line, timeout_ms)"}, {"kind": "method", "line": 607, "name": "cat_body", "signature": "def cat_body(self, path, missing_ok)"}, {"kind": "class", "line": 614, "name": "_toolerror", "signature": "class _toolerror(Exception)"}, {"kind": "method", "line": 619, "name": "_cleanup_parts", "signature": "def _cleanup_parts(self, parts)"}, {"kind": "method", "line": 627, "name": "setUpClass", "signature": "def setUpClass(cls)"}, {"kind": "method", "line": 659, "name": "tearDownClass", "signature": "def tearDownClass(cls)"}, {"kind": "method", "line": 664, "name": "make_addon", "signature": "def make_addon(self)"}, {"kind": "method", "line": 686, "name": "test_install_success", "signature": "def test_install_success(self)"}, {"kind": "method", "line": 699, "name": "test_install_mismatch_aborts_and_cleans", "signature": "def test_install_mismatch_aborts_and_cleans(self)"}, {"kind": "method", "line": 713, "name": "test_install_multi_chunk_reassembly", "signature": "def test_install_multi_chunk_reassembly(self)"}, {"kind": "method", "line": 744, "name": "test_install_verify_failure_aborts", "signature": "def test_install_verify_failure_aborts(self)"}, {"kind": "method", "line": 751, "name": "test_install_build_failure_aborts", "signature": "def test_install_build_failure_aborts(self)"}, {"kind": "method", "line": 764, "name": "setUpClass", "signature": "def setUpClass(cls)"}, {"kind": "method", "line": 801, "name": "tearDownClass", "signature": "def tearDownClass(cls)"}, {"kind": "method", "line": 809, "name": "test_addons_list", "signature": "def test_addons_list(self)"}, {"kind": "method", "line": 815, "name": "test_install_fixture", "signature": "def test_install_fixture(self)"}, {"kind": "method", "line": 824, "name": "test_install_unknown_addon_fails", "signature": "def test_install_unknown_addon_fails(self)"}, {"kind": "method", "line": 298, "name": "guarded", "signature": "def guarded(name, params)"}, {"kind": "method", "line": 703, "name": "broken_cat", "signature": "def broken_cat(path, missing_ok)"}]}, {"doc": "ifndef MINIFS_H define MINIFS_H MiniFS: a minimal Unix-like filesystem for MiniOS.", "id": "minifs.h", "kind": "module", "label": "minifs.h", "language": "h", "sha256": "b25a3e7079ff8d7a", "symbol_count": 75, "symbols": [{"kind": "struct", "line": 33, "name": "MiniFSSuper"}, {"kind": "struct", "line": 52, "name": "MiniFSInode"}, {"kind": "struct", "line": 68, "name": "MiniFSDirEntry"}, {"kind": "struct", "line": 90, "name": "MiniFSJournalSuper"}, {"kind": "struct", "line": 98, "name": "MiniFSJournalEntry"}, {"kind": "struct", "line": 110, "name": "MiniFSFile"}, {"doc": "define MINIFS_INODE_COMPRESSED 0x01", "kind": "function", "line": 29, "name": "minifs_compress", "signature": "unsigned int minifs_compress(const void *src, unsigned int src_len, void *dst, unsigned int dst_cap);"}, {"kind": "function", "line": 31, "name": "minifs_decompress", "signature": "unsigned int minifs_decompress(const void *src, unsigned int src_len, void *dst, unsigned int dst_cap);"}, {"kind": "function", "line": 116, "name": "minifs_init", "signature": "void minifs_init(void);"}, {"kind": "function", "line": 118, "name": "minifs_mount", "signature": "int minifs_mount(void);"}, {"kind": "function", "line": 119, "name": "minifs_mkfs", "signature": "int minifs_mkfs(unsigned int total_blocks);"}, {"kind": "function", "line": 120, "name": "minifs_sync", "signature": "int minifs_sync(void);"}, {"kind": "function", "line": 121, "name": "minifs_is_mounted", "signature": "int minifs_is_mounted(void);"}, {"kind": "function", "line": 122, "name": "minifs_create", "signature": "int minifs_create(const char *path, unsigned short mode);"}, {"kind": "function", "line": 124, "name": "minifs_mkdir", "signature": "int minifs_mkdir(const char *path, unsigned short mode);"}, {"kind": "function", "line": 125, "name": "minifs_unlink", "signature": "int minifs_unlink(const char *path);"}, {"kind": "function", "line": 126, "name": "minifs_rmdir", "signature": "int minifs_rmdir(const char *path);"}, {"kind": "function", "line": 127, "name": "minifs_read", "signature": "int minifs_read(int inode_num, void *buf, unsigned int offset, unsigned int len);"}, {"kind": "function", "line": 128, "name": "minifs_write", "signature": "int minifs_write(int inode_num, const void *buf, unsigned int offset, unsigned int len);"}, {"kind": "function", "line": 129, "name": "minifs_truncate", "signature": "int minifs_truncate(int inode_num, unsigned int new_size);"}, {"kind": "function", "line": 130, "name": "minifs_stat", "signature": "int minifs_stat(int inode_num, MiniFSInode *out);"}, {"kind": "function", "line": 131, "name": "minifs_access", "signature": "int minifs_access(const char *path);"}, {"kind": "function", "line": 132, "name": "minifs_resolve_path", "signature": "int minifs_resolve_path(const char *path);"}, {"kind": "function", "line": 134, "name": "minifs_dir_lookup", "signature": "int minifs_dir_lookup(int dir_inode, const char *name);"}, {"kind": "function", "line": 135, "name": "minifs_dir_add_entry", "signature": "int minifs_dir_add_entry(int dir_inode, const char *name, int child_inode, unsigned char type);"}, {"kind": "function", "line": 136, "name": "minifs_dir_remove_entry", "signature": "int minifs_dir_remove_entry(int dir_inode, const char *name);"}, {"kind": "function", "line": 137, "name": "minifs_dir_read", "signature": "int minifs_dir_read(int dir_inode, int index, MiniFSDirEntry *out, char *name_out);"}, {"kind": "function", "line": 138, "name": "minifs_alloc_block", "signature": "int minifs_alloc_block(void);"}, {"kind": "function", "line": 140, "name": "minifs_free_block", "signature": "void minifs_free_block(unsigned int block);"}, {"kind": "function", "line": 141, "name": "minifs_alloc_inode", "signature": "int minifs_alloc_inode(void);"}, {"kind": "function", "line": 142, "name": "minifs_free_inode", "signature": "void minifs_free_inode(int inode_num);"}, {"kind": "function", "line": 143, "name": "minifs_inode_get_block", "signature": "int minifs_inode_get_block(MiniFSInode *inode, unsigned int logical_block, unsigned int *phys_block);"}, {"kind": "function", "line": 144, "name": "minifs_inode_alloc_block", "signature": "int minifs_inode_alloc_block(MiniFSInode *inode, unsigned int logical_block);"}, {"kind": "function", "line": 145, "name": "minifs_journal_begin", "signature": "void minifs_journal_begin(unsigned int txn_id);"}, {"kind": "function", "line": 147, "name": "minifs_journal_add_block", "signature": "void minifs_journal_add_block(unsigned int block);"}, {"kind": "function", "line": 148, "name": "minifs_journal_touch", "signature": "void minifs_journal_touch(unsigned int phys);"}, {"kind": "function", "line": 149, "name": "minifs_journal_commit", "signature": "int minifs_journal_commit(unsigned int txn_id);"}, {"kind": "function", "line": 150, "name": "minifs_journal_clear", "signature": "void minifs_journal_clear(void);"}, {"kind": "function", "line": 151, "name": "minifs_journal_abort", "signature": "void minifs_journal_abort(void);"}, {"kind": "function", "line": 152, "name": "minifs_journal_recover", "signature": "void minifs_journal_recover(void);"}, {"kind": "function", "line": 153, "name": "minifs_file_open", "signature": "MiniFSFile *minifs_file_open(int inode_num, int flags);"}, {"kind": "function", "line": 155, "name": "minifs_file_close", "signature": "int minifs_file_close(MiniFSFile *f);"}, {"kind": "function", "line": 156, "name": "minifs_get_lba_start", "signature": "unsigned int minifs_get_lba_start(void);"}, {"kind": "function", "line": 158, "name": "minifs_get_total_blocks", "signature": "unsigned int minifs_get_total_blocks(void);"}, {"kind": "macro", "line": 2, "name": "MINIFS_H", "signature": "#define MINIFS_H"}, {"kind": "macro", "line": 7, "name": "MINIFS_MAGIC", "signature": "#define MINIFS_MAGIC"}, {"kind": "macro", "line": 9, "name": "MINIFS_VERSION", "signature": "#define MINIFS_VERSION"}, {"kind": "macro", "line": 10, "name": "MINIFS_BLOCK_SIZE", "signature": "#define MINIFS_BLOCK_SIZE"}, {"kind": "macro", "line": 11, "name": "MINIFS_MAX_FILENAME", "signature": "#define MINIFS_MAX_FILENAME"}, {"kind": "macro", "line": 12, "name": "MINIFS_ROOT_INODE", "signature": "#define MINIFS_ROOT_INODE"}, {"kind": "macro", "line": 13, "name": "MINIFS_INODES_PER_BLOCK", "signature": "#define MINIFS_INODES_PER_BLOCK"}, {"kind": "macro", "line": 14, "name": "MINIFS_DIR_ENTRIES_PER_BLOCK", "signature": "#define MINIFS_DIR_ENTRIES_PER_BLOCK"}, {"kind": "macro", "line": 15, "name": "MINIFS_S_IFMT", "signature": "#define MINIFS_S_IFMT"}, {"kind": "macro", "line": 17, "name": "MINIFS_S_IFREG", "signature": "#define MINIFS_S_IFREG"}, {"kind": "macro", "line": 18, "name": "MINIFS_S_IFDIR", "signature": "#define MINIFS_S_IFDIR"}, {"kind": "macro", "line": 19, "name": "MINIFS_S_IFLNK", "signature": "#define MINIFS_S_IFLNK"}, {"kind": "macro", "line": 20, "name": "MINIFS_S_IRWXU", "signature": "#define MINIFS_S_IRWXU"}, {"kind": "macro", "line": 21, "name": "MINIFS_S_IRWXG", "signature": "#define MINIFS_S_IRWXG"}, {"kind": "macro", "line": 22, "name": "MINIFS_S_IRWXO", "signature": "#define MINIFS_S_IRWXO"}, {"kind": "macro", "line": 23, "name": "MINIFS_FT_FILE", "signature": "#define MINIFS_FT_FILE"}, {"kind": "macro", "line": 25, "name": "MINIFS_FT_DIR", "signature": "#define MINIFS_FT_DIR"}, {"kind": "macro", "line": 26, "name": "MINIFS_FT_SYMLINK", "signature": "#define MINIFS_FT_SYMLINK"}, {"kind": "macro", "line": 27, "name": "MINIFS_INODE_COMPRESSED", "signature": "#define MINIFS_INODE_COMPRESSED"}, {"kind": "macro", "line": 74, "name": "MINIFS_DIR_ENTRY_HDR_SIZE", "signature": "#define MINIFS_DIR_ENTRY_HDR_SIZE"}, {"kind": "macro", "line": 76, "name": "MINIFS_JOURNAL_BLOCKS", "signature": "#define MINIFS_JOURNAL_BLOCKS"}, {"kind": "macro", "line": 78, "name": "MINIFS_JOURNAL_MAX_ENTRIES", "signature": "#define MINIFS_JOURNAL_MAX_ENTRIES"}, {"kind": "macro", "line": 79, "name": "MINIFS_JOP_WRITE", "signature": "#define MINIFS_JOP_WRITE"}, {"kind": "macro", "line": 80, "name": "MINIFS_JOP_CREATE", "signature": "#define MINIFS_JOP_CREATE"}, {"kind": "macro", "line": 81, "name": "MINIFS_JOP_DELETE", "signature": "#define MINIFS_JOP_DELETE"}, {"kind": "macro", "line": 82, "name": "MINIFS_JOP_MKDIR", "signature": "#define MINIFS_JOP_MKDIR"}, {"kind": "macro", "line": 83, "name": "MINIFS_JOP_RMDIR", "signature": "#define MINIFS_JOP_RMDIR"}, {"kind": "macro", "line": 84, "name": "MINIFS_JOP_TRUNCATE", "signature": "#define MINIFS_JOP_TRUNCATE"}, {"kind": "macro", "line": 85, "name": "MINIFS_JOP_COMMIT", "signature": "#define MINIFS_JOP_COMMIT"}, {"kind": "macro", "line": 86, "name": "MINIFS_JSTATE_CLEAN", "signature": "#define MINIFS_JSTATE_CLEAN"}, {"kind": "macro", "line": 88, "name": "MINIFS_JSTATE_DIRTY", "signature": "#define MINIFS_JSTATE_DIRTY"}]}, {"id": "minifs_dump.py", "kind": "module", "label": "minifs_dump.py", "language": "py", "sha256": "66129ad54e4c9a50", "symbol_count": 12, "symbols": [{"kind": "function", "line": 13, "name": "u16", "signature": "def u16(d, o)"}, {"kind": "function", "line": 14, "name": "u32", "signature": "def u32(d, o)"}, {"kind": "function", "line": 16, "name": "mode_str", "signature": "def mode_str(m)"}, {"kind": "class", "line": 25, "name": "FS", "signature": "class FS"}, {"kind": "method", "line": 105, "name": "main", "signature": "def main()"}, {"kind": "method", "line": 26, "name": "__init__", "signature": "def __init__(self, fn)"}, {"kind": "method", "line": 29, "name": "blk", "signature": "def blk(self, n)"}, {"kind": "method", "line": 30, "name": "_sb", "signature": "def _sb(self)"}, {"kind": "method", "line": 38, "name": "inode", "signature": "def inode(self, i)"}, {"kind": "method", "line": 47, "name": "read", "signature": "def read(self, ino)"}, {"kind": "method", "line": 67, "name": "resolve", "signature": "def resolve(self, path)"}, {"kind": "method", "line": 86, "name": "ls", "signature": "def ls(self, ino, prefix)"}]}, {"id": "minifs_fsck.py", "kind": "module", "label": "minifs_fsck.py", "language": "py", "sha256": "05066a08385e60bd", "symbol_count": 14, "symbols": [{"kind": "function", "line": 13, "name": "u16", "signature": "def u16(d, o)"}, {"kind": "function", "line": 14, "name": "u32", "signature": "def u32(d, o)"}, {"kind": "class", "line": 16, "name": "FSCK", "signature": "class FSCK"}, {"kind": "method", "line": 97, "name": "main", "signature": "def main()"}, {"kind": "method", "line": 17, "name": "__init__", "signature": "def __init__(self, fn)"}, {"kind": "method", "line": 23, "name": "blk", "signature": "def blk(self, n)"}, {"kind": "method", "line": 24, "name": "_sb", "signature": "def _sb(self)"}, {"kind": "method", "line": 30, "name": "inode", "signature": "def inode(self, i)"}, {"kind": "method", "line": 37, "name": "read", "signature": "def read(self, ino)"}, {"kind": "method", "line": 52, "name": "err", "signature": "def err(self, msg)"}, {"kind": "method", "line": 54, "name": "mark_block", "signature": "def mark_block(self, n)"}, {"kind": "method", "line": 59, "name": "scan_inode", "signature": "def scan_inode(self, i)"}, {"kind": "method", "line": 68, "name": "scan_dir", "signature": "def scan_dir(self, ino)"}, {"kind": "method", "line": 82, "name": "run", "signature": "def run(self)"}]}, {"id": "mkfs.minifs.py", "kind": "module", "label": "mkfs.minifs.py", "language": "py", "sha256": "afb69d43746e6758", "symbol_count": 20, "symbols": [{"kind": "function", "line": 22, "name": "roundup4", "signature": "def roundup4(v)"}, {"kind": "function", "line": 25, "name": "div_round_up", "signature": "def div_round_up(n, d)"}, {"kind": "function", "line": 28, "name": "crc16", "signature": "def crc16(data)"}, {"kind": "function", "line": 36, "name": "crc32", "signature": "def crc32(data)"}, {"kind": "class", "line": 44, "name": "MiniFS", "signature": "class MiniFS"}, {"kind": "method", "line": 241, "name": "main", "signature": "def main()"}, {"kind": "method", "line": 45, "name": "__init__", "signature": "def __init__(self, total_blocks)"}, {"kind": "method", "line": 67, "name": "mark_inodes_used", "signature": "def mark_inodes_used(self, start, count)"}, {"kind": "method", "line": 71, "name": "mark_blocks_used", "signature": "def mark_blocks_used(self, start, count)"}, {"kind": "method", "line": 75, "name": "alloc_inode", "signature": "def alloc_inode(self)"}, {"kind": "method", "line": 81, "name": "alloc_block", "signature": "def alloc_block(self)"}, {"kind": "method", "line": 87, "name": "create_root", "signature": "def create_root(self)"}, {"kind": "method", "line": 95, "name": "create_inode", "signature": "def create_inode(self, mode)"}, {"kind": "method", "line": 102, "name": "inode_set_size", "signature": "def inode_set_size(self, ino, size)"}, {"kind": "method", "line": 106, "name": "inode_set_block", "signature": "def inode_set_block(self, ino, logblk, phys)"}, {"kind": "method", "line": 136, "name": "add_dir_entry", "signature": "def add_dir_entry(self, dir_ino, name, child_ino, ftype)"}, {"kind": "method", "line": 174, "name": "write_file", "signature": "def write_file(self, parent_ino, name, data)"}, {"kind": "method", "line": 191, "name": "write_dir", "signature": "def write_dir(self, parent_ino, name)"}, {"kind": "method", "line": 197, "name": "serialize", "signature": "def serialize(self)"}, {"kind": "method", "line": 271, "name": "pack_tree", "signature": "def pack_tree(parent_ino, path, rel)"}]}, {"id": "mkramdisk.py", "kind": "module", "label": "mkramdisk.py", "language": "py", "sha256": "e890ba2ab94eb112", "symbol_count": 2, "symbols": [{"kind": "function", "line": 20, "name": "pack_name", "signature": "def pack_name(path, common)"}, {"kind": "function", "line": 30, "name": "main", "signature": "def main()"}]}, {"doc": "mkroots.sh - regenerate tls_roots.h from the DER files in tls_roots_src/. Provenance of each root (2026 web PKI reality; everything a real site chains to is one of these): isrg_root_x1.der Let's Encrypt ISRG Root X1 (RSA, older chains) https://letsencrypt.org/certs/isrg-root-x1.pem isrg_root_x2.der Let's Encrypt ISRG Root X2 (ECDSA P-384, current) https://letsencrypt.org/certs/isrg-root-x2.pem digicert_global_root_g2.der DigiCert Global Root G2 (RSA) https://cacerts.digicert.com/DigiCertGlobalRootG2.crt globalsign_root_r3.der GlobalSign Root CA R3 (RSA) https://secure.globalsign.com/cacert/root-r3.crt gts_root_r4.der Google Trust Services Root R4 (ECDSA P-384) https://pki.goog/repo/certs/gtsr4.pem sslcom_ecc_2022.der SSL.com TLS ECC Root CA 2022 (Cloudflare ECC chains) sslcom_rsa_2022.der SSL.com TLS RSA Root CA 2022 (Cloudflare RSA chains) The two SSL.com roots have no stable public URL; they are extracted from the certificate chain example.com serves (openssl s_client -showcerts, ECDHE-ECDSA and ECDHE-RSA respectively). The build never runs this script: tls_roots.h is a committed input, regenerated only when the root set changes.", "id": "mkroots.sh", "kind": "module", "label": "mkroots.sh", "language": "sh", "sha256": "785077624212c370", "symbol_count": 0, "symbols": []}, {"doc": "Mutation testing for MiniOS. Each mutation is applied to the source in place, the disk image is rebuilt and the behavioural suite is run in fail-fast mode. A mutant that survives a full green suite exposes a gap that must be closed by adding a scenario, never by deleting the mutant. The sources are backed up before the first mutation and restored on every exit path, including interrupts. A mutation whose expression matches nothing is reported as broken rather than surviving: `sed -i` exits zero when it changes nothing, which would otherwise rebuild pristine sources and look like a test gap. Progress is persisted to a state file (default .mutate-state in the repo root, overridable with --state or MINIOS_MUTATE_STATE). A run therefore RESUMES where it left off: mutants already recorded are skipped, so a timed-out run can be picked up without re-running the finished ones. The state file is just a list of \"name outcome\" lines and can be edited by hand to re-target work. Usage: mutate.sh full run, resuming from the first mutant not yet recorded in the state file mutate.sh --from NAME force-run from the mutant NAME onward, ignoring recorded state for those mutants mutate.sh --match REGEX only run mutants whose name matches REGEX mutate.sh --limit N run at most N mutants this invocation mutate.sh --state FILE use FILE as the progress file mutate.sh --reset clear the state file and run the full suite", "id": "mutate.sh", "kind": "module", "label": "mutate.sh", "language": "sh", "sha256": "360c66524f1e7cfd", "symbol_count": 5, "symbols": [{"kind": "function", "line": 51, "name": "usage"}, {"kind": "function", "line": 93, "name": "restore_sources"}, {"kind": "function", "line": 100, "name": "cleanup"}, {"kind": "function", "line": 244, "name": "record"}, {"doc": "Locate a mutant by name.", "kind": "function", "line": 250, "name": "find_index"}]}, {"doc": "MiniOS network stack: rtl8139 under QEMU slirp user networking.", "id": "net/net.c", "kind": "module", "label": "net.c", "language": "c", "sha256": "e237cd2453eb3dfb", "symbol_count": 68, "symbols": [{"kind": "struct", "line": 69, "name": "net_arp_entry"}, {"kind": "struct", "line": 195, "name": "net_dns_state"}, {"kind": "struct", "line": 365, "name": "net_tcp_sock"}, {"doc": "================================================================ Byte helpers * ================================================================", "kind": "function", "line": 30, "name": "net_put16", "signature": "static void net_put16(unsigned char *p, unsigned short v)"}, {"kind": "function", "line": 35, "name": "net_put32", "signature": "static void net_put32(unsigned char *p, unsigned int v)"}, {"kind": "function", "line": 42, "name": "net_get16", "signature": "static unsigned short net_get16(const unsigned char *p)"}, {"kind": "function", "line": 46, "name": "net_get32", "signature": "static unsigned int net_get32(const unsigned char *p)"}, {"kind": "function", "line": 51, "name": "net_checksum", "signature": "static unsigned short net_checksum(const void *data, unsigned len)"}, {"kind": "function", "line": 76, "name": "net_arp_store", "signature": "static void net_arp_store(const unsigned char *ip, const unsigned char *mac)"}, {"kind": "function", "line": 91, "name": "net_arp_lookup", "signature": "static int net_arp_lookup(const unsigned char *ip, unsigned char *mac_out)"}, {"kind": "function", "line": 102, "name": "net_arp_request", "signature": "static void net_arp_request(const unsigned char *ip)"}, {"doc": "kmemcpy(frame + 6, net_mac, NET_ETH_ALEN); net_put16(frame + 12, NET_ETHERTYPE_ARP); net_put16(frame + 14, 1); /* ethernet net_put16(frame + 16, 0x0800); /* IPv4 frame[18] = 6; frame[19] = 4; net_put16(frame + 20, NET_ARP_REQUEST); kmemcpy(frame + 22, net_mac, NET_ETH_ALEN); kmemcpy(frame + 28, net_our_ip, 4); kmemcpy(frame + 38, ip, 4); rtl_send(frame, 42); } /* Resolve an IP on the 10.0.2.0/24 link. Retries, bounded timeout.", "kind": "function", "line": 121, "name": "net_arp_resolve", "signature": "static int net_arp_resolve(const unsigned char *ip, unsigned char *mac_out)"}, {"doc": "================================================================ IPv4 / ICMP / UDP / DNS * ================================================================ static unsigned short net_ip_id; static unsigned short net_icmp_id = 0x4D49; static unsigned short net_udp_port = NET_EPHEMERAL_MIN; static unsigned int net_tx_bytes; static unsigned int net_rx_bytes; /* Send a frame on the link: dst IP decides the destination MAC.", "kind": "function", "line": 146, "name": "net_ip_send", "signature": "static int net_ip_send(const unsigned char *dip, unsigned char proto,\n cons..."}, {"kind": "function", "line": 181, "name": "net_udp_send", "signature": "static int net_udp_send(const unsigned char *dip, unsigned short sport,\n u..."}, {"doc": "net_put16(pkt + 6, 0); /* checksum optional for UDP kmemcpy(pkt + 8, data, len); return net_ip_send(dip, NET_PROTO_UDP, pkt, total); } struct net_dns_state { unsigned short id; unsigned char ip[4]; int done; }; static struct net_dns_state net_dns; /* Parse a DNS response for the first A record.", "kind": "function", "line": 204, "name": "net_dns_parse", "signature": "static void net_dns_parse(const unsigned char *data, unsigned len)"}, {"doc": "rtype = net_get16(data + pos); rdlen = net_get16(data + pos + 8); pos += 10; if (pos + rdlen > len) return; if (rtype == 1 && rdlen == 4) { kmemcpy(net_dns.ip, data + pos, 4); net_dns.done = 1; return; } pos += rdlen; } } /* Blocking A-record lookup against NET_DNS.", "kind": "function", "line": 242, "name": "net_dns_resolve", "signature": "static int net_dns_resolve(const char *host, unsigned char ip_out[4])"}, {"kind": "function", "line": 298, "name": "net_udp_send", "signature": "net_udp_send((const unsigned char[])"}, {"kind": "function", "line": 312, "name": "net_icmp_rx", "signature": "static void net_icmp_rx(const unsigned char *ip, unsigned len)"}, {"kind": "function", "line": 335, "name": "net_ping", "signature": "static int net_ping(const unsigned char ip[4])"}, {"kind": "function", "line": 387, "name": "net_sock_alloc", "signature": "static struct net_tcp_sock *net_sock_alloc(void)"}, {"kind": "function", "line": 400, "name": "net_sock_index", "signature": "static int net_sock_index(const struct net_tcp_sock *s)"}, {"doc": "return &net_sockets[i]; } } return 0; } static int net_sock_index(const struct net_tcp_sock *s) { int i; for (i = 0; i < NET_SOCKETS; i++) if (&net_sockets[i] == s) return i; return -1; } /* Compute the TCP checksum over a pseudo header + segment.", "kind": "function", "line": 409, "name": "net_tcp_checksum", "signature": "static unsigned short net_tcp_checksum(const unsigned char *src, const unsigned char *dst,\n ..."}, {"doc": "const unsigned char *seg, unsigned len) { unsigned char buf[NET_TX_MAX + 12]; unsigned total = 12 + len; kmemcpy(buf, src, 4); kmemcpy(buf + 4, dst, 4); buf[8] = 0; buf[9] = NET_PROTO_TCP; net_put16(buf + 10, (unsigned short)len); kmemcpy(buf + 12, seg, len); if (total & 1) buf[total++] = 0; return net_checksum(buf, total); } /* UDP checksum over pseudo header + datagram (may be 0 = not computed).", "kind": "function", "line": 425, "name": "net_udp_checksum_ok", "signature": "static int net_udp_checksum_ok(const unsigned char *src, const unsigned char *dst,\n ..."}, {"kind": "function", "line": 440, "name": "net_tcp_xmit", "signature": "static int net_tcp_xmit(struct net_tcp_sock *s, unsigned flags,\n const uns..."}, {"doc": "seg[21] = 0x04; /* len 4 net_put16(seg + 22, NET_TCP_MSS); } else { seg[12] = 0x50; } kmemcpy(seg + hlen, data, len); net_put16(seg + 16, net_tcp_checksum(net_our_ip, s->dip, s->sport, s->dport, seg, hlen + len)); if (!net_ip_send(s->dip, NET_PROTO_TCP, seg, hlen + len)) return 0; if (fresh && (flags & (0x02 | 0x08 | 0x01))) s->seq += len + ((flags & (0x02 | 0x01)) ? 1 : 0); return 1; } /* Process one received TCP segment.", "kind": "function", "line": 472, "name": "net_tcp_rx", "signature": "static void net_tcp_rx(const unsigned char *ip, unsigned len)"}, {"doc": "} if (flags & 0x10) { /* ACK: peer acks our data if (s->tx_pending && (int)(ack - (s->tx_seq + s->tx_len)) >= 0) { s->tx_pending = 0; } if (s->state == NET_TCP_FIN_SENT && (int)(ack - (s->seq)) >= 0) { s->state = NET_TCP_DEAD; } } } } /* Blocking connect of an allocated socket to an IPv4 address.", "kind": "function", "line": 558, "name": "net_tcp_connect_into", "signature": "static int net_tcp_connect_into(struct net_tcp_sock *s, const unsigned char ip[4],\n ..."}, {"doc": "unsigned long retry = net_time_ms() + NET_RETRY_MS; while (net_time_ms() < retry && s->state == NET_TCP_SYN_SENT) rtl_poll(); if (s->state == NET_TCP_SYN_SENT) net_tcp_xmit(s, 0x02, 0, 0, 0); } if (s->state != NET_TCP_ESTABLISHED) { s->in_use = 0; s->state = NET_TCP_CLOSED; return 0; } return 1; } /* Blocking send (stop-and-wait, one outstanding segment).", "kind": "function", "line": 585, "name": "net_tcp_send", "signature": "static int net_tcp_send(struct net_tcp_sock *s, const char *buf, int len)"}, {"doc": "net_time_ms() < deadline) { unsigned long retry = net_time_ms() + NET_RETRY_MS; while (net_time_ms() < retry && s->tx_pending) rtl_poll(); if (s->tx_pending) net_tcp_xmit(s, 0x18, s->tx_buf, chunk, 0); } if (s->tx_pending || s->state != NET_TCP_ESTABLISHED) return sent ? sent : -1; buf += chunk; len -= (int)chunk; sent += (int)chunk; } return sent; } /* Blocking receive; 0 = EOF (FIN).", "kind": "function", "line": 611, "name": "net_tcp_recv", "signature": "static int net_tcp_recv(struct net_tcp_sock *s, char *buf, int len)"}, {"kind": "function", "line": 648, "name": "net_tcp_close", "signature": "static void net_tcp_close(struct net_tcp_sock *s)"}, {"doc": "================================================================ Receive path: NIC -> ethernet -> ARP/IP -> demux * ================================================================", "kind": "function", "line": 668, "name": "net_rx_handle_frame", "signature": "void net_rx_handle_frame(const unsigned char *frame, unsigned len)"}, {"doc": "================================================================ Public libc-style API * ================================================================", "kind": "function", "line": 726, "name": "net_open", "signature": "int net_open(void)"}, {"kind": "function", "line": 732, "name": "net_connect", "signature": "int net_connect(const char *host, unsigned short port)"}, {"kind": "function", "line": 741, "name": "net_send", "signature": "int net_send(int fd, const char *buf, int len)"}, {"kind": "function", "line": 746, "name": "net_recv", "signature": "int net_recv(int fd, char *buf, int len)"}, {"kind": "function", "line": 751, "name": "net_recv_timeout", "signature": "int net_recv_timeout(int fd, char *buf, int len, unsigned long timeout_ms)"}, {"kind": "function", "line": 756, "name": "net_close", "signature": "void net_close(int fd)"}, {"doc": "================================================================ Linux syscall ABI * ================================================================", "kind": "function", "line": 765, "name": "net_sys_socket", "signature": "long net_sys_socket(long a1, long a2, long a3)"}, {"kind": "function", "line": 774, "name": "net_sys_connect", "signature": "long net_sys_connect(long fd, long sockaddr, long addrlen)"}, {"kind": "function", "line": 787, "name": "net_sys_sendto", "signature": "long net_sys_sendto(long fd, long buf, long len, long flags, long to, long tolen)"}, {"kind": "function", "line": 797, "name": "net_sys_recvfrom", "signature": "long net_sys_recvfrom(long fd, long buf, long len, long flags, long from, long fromlen)"}, {"kind": "function", "line": 807, "name": "net_sys_shutdown", "signature": "long net_sys_shutdown(long fd, long how)"}, {"kind": "function", "line": 814, "name": "net_sys_close", "signature": "long net_sys_close(long fd)"}, {"kind": "function", "line": 821, "name": "net_sys_poll", "signature": "long net_sys_poll(long fds, long nfds, long timeout_ms)"}, {"doc": "MiniOS syscall 200: resolve a hostname, returned as a network-order * 32-bit address (like inet_addr), or -1 on failure.", "kind": "function", "line": 858, "name": "net_sys_dns", "signature": "long net_sys_dns(long host)"}, {"doc": "================================================================ Shell commands * ================================================================", "kind": "function", "line": 868, "name": "net_parse_ip", "signature": "static int net_parse_ip(const char *text, unsigned char ip[4])"}, {"kind": "function", "line": 893, "name": "net_cmd_status", "signature": "void net_cmd_status(void)"}, {"kind": "function", "line": 909, "name": "net_cmd_ping", "signature": "void net_cmd_ping(const char *ip_text)"}, {"kind": "function", "line": 920, "name": "net_cmd_dns", "signature": "void net_cmd_dns(const char *host)"}, {"doc": "================================================================ Init and symbol registration * ================================================================", "kind": "function", "line": 933, "name": "net_register_symbols", "signature": "void net_register_symbols(void)"}, {"kind": "function", "line": 941, "name": "net_init", "signature": "void net_init(void)"}, {"kind": "function", "line": 81, "name": "kmemcpy", "signature": "kmemcpy(net_arp_cache[i].mac, mac, NET_ETH_ALEN);"}, {"kind": "function", "line": 105, "name": "kmemset", "signature": "kmemset(frame, 0, sizeof(frame));"}, {"kind": "function", "line": 117, "name": "rtl_send", "signature": "rtl_send(frame, 42);"}, {"kind": "function", "line": 128, "name": "rtl_poll", "signature": "rtl_poll();"}, {"kind": "function", "line": 517, "name": "kmemmove", "signature": "kmemmove(s->rx, s->rx + s->rx_tail, s->rx_head - s->rx_tail);"}, {"kind": "function", "line": 754, "name": "net_tcp_recv_deadline", "signature": "return net_tcp_recv_deadline(&net_sockets[fd], buf, len, timeout_ms);"}, {"kind": "function", "line": 817, "name": "tls_free_fd", "signature": "tls_free_fd((int)(fd - NET_FD_BASE));"}, {"kind": "function", "line": 897, "name": "vga_puts", "signature": "vga_puts(\"net: no rtl8139 found\\n\");"}, {"kind": "function", "line": 900, "name": "rtl_counters", "signature": "rtl_counters(&tx_frames, &rx_frames);"}, {"kind": "function", "line": 901, "name": "kprintf", "signature": "kprintf(\"rtl8139 iobase 0x%x\\n\", rtl_iobase());"}, {"kind": "function", "line": 935, "name": "k_register_symbol", "signature": "k_register_symbol(\"net_open\", (void *)net_open);"}, {"kind": "function", "line": 943, "name": "rtl_init", "signature": "rtl_init();"}, {"kind": "function", "line": 944, "name": "rtl_get_mac", "signature": "rtl_get_mac(net_mac);"}, {"kind": "macro", "line": 358, "name": "NET_TCP_CLOSED", "signature": "#define NET_TCP_CLOSED"}, {"kind": "macro", "line": 360, "name": "NET_TCP_SYN_SENT", "signature": "#define NET_TCP_SYN_SENT"}, {"kind": "macro", "line": 361, "name": "NET_TCP_ESTABLISHED", "signature": "#define NET_TCP_ESTABLISHED"}, {"kind": "macro", "line": 362, "name": "NET_TCP_FIN_SENT", "signature": "#define NET_TCP_FIN_SENT"}, {"kind": "macro", "line": 363, "name": "NET_TCP_DEAD", "signature": "#define NET_TCP_DEAD"}]}, {"doc": "include \"kernel.h\" include \"net.h\" include \"rtl8139.h\"", "id": "net/rtl8139.c", "kind": "module", "label": "rtl8139.c", "language": "c", "sha256": "5126ed7dbb057b25", "symbol_count": 37, "symbols": [{"kind": "function", "line": 23, "name": "outb_port", "signature": "static void outb_port(unsigned short port, unsigned char val)"}, {"kind": "function", "line": 27, "name": "inb_port", "signature": "static unsigned char inb_port(unsigned short port)"}, {"kind": "function", "line": 33, "name": "outw_port", "signature": "static void outw_port(unsigned short port, unsigned short val)"}, {"kind": "function", "line": 37, "name": "outl_port", "signature": "static void outl_port(unsigned short port, unsigned int val)"}, {"kind": "function", "line": 41, "name": "inw_port", "signature": "static unsigned short inw_port(unsigned short port)"}, {"kind": "function", "line": 47, "name": "inl_port", "signature": "static unsigned int inl_port(unsigned short port)"}, {"kind": "function", "line": 53, "name": "rtl_reg8", "signature": "static unsigned char rtl_reg8(unsigned short off)"}, {"kind": "function", "line": 55, "name": "rtl_reg8_w", "signature": "static void rtl_reg8_w(unsigned short off, unsigned char v)"}, {"kind": "function", "line": 56, "name": "rtl_reg16", "signature": "static unsigned short rtl_reg16(unsigned short off)"}, {"kind": "function", "line": 57, "name": "rtl_reg16_w", "signature": "static void rtl_reg16_w(unsigned short off, unsigned short v)"}, {"kind": "function", "line": 58, "name": "rtl_reg32", "signature": "static unsigned int rtl_reg32(unsigned short off)"}, {"kind": "function", "line": 59, "name": "rtl_reg32_w", "signature": "static void rtl_reg32_w(unsigned short off, unsigned int v)"}, {"doc": "define RTL_REG_CR 0x37 define RTL_REG_TSD0 0x10 define RTL_REG_TSAD0 0x20 define RTL_REG_RBSTART 0x30 define RTL_REG_CAPR 0x38 define RTL_REG_CBR 0x3A define RTL_REG_9346CR 0x50 define RTL_REG_CONFIG1 0x52", "kind": "function", "line": 69, "name": "pci_read32", "signature": "static unsigned int pci_read32(unsigned bus, unsigned dev, unsigned func, unsigned reg)"}, {"kind": "function", "line": 74, "name": "pci_write32", "signature": "static void pci_write32(unsigned bus, unsigned dev, unsigned func, unsigned reg, unsigned int val)"}, {"kind": "function", "line": 79, "name": "rtl_find", "signature": "static unsigned short rtl_find(void)"}, {"kind": "function", "line": 101, "name": "rtl_rdtsc", "signature": "static unsigned long rtl_rdtsc(void)"}, {"kind": "function", "line": 107, "name": "net_time_init", "signature": "static void net_time_init(void)"}, {"kind": "function", "line": 121, "name": "net_time_ms", "signature": "unsigned long net_time_ms(void)"}, {"kind": "function", "line": 137, "name": "rtl_present", "signature": "int rtl_present(void)"}, {"kind": "function", "line": 141, "name": "rtl_reset", "signature": "static void rtl_reset(void)"}, {"kind": "function", "line": 150, "name": "rtl_init", "signature": "void rtl_init(void)"}, {"kind": "function", "line": 181, "name": "rtl_send", "signature": "int rtl_send(const unsigned char *frame, unsigned len)"}, {"kind": "function", "line": 209, "name": "rtl_get_mac", "signature": "void rtl_get_mac(unsigned char out[NET_ETH_ALEN])"}, {"kind": "function", "line": 214, "name": "rtl_iobase", "signature": "unsigned short rtl_iobase(void)"}, {"kind": "function", "line": 218, "name": "rtl_counters", "signature": "void rtl_counters(unsigned int *tx_frames, unsigned int *rx_frames)"}, {"doc": "Copy one received frame out of the ring into the scratch buffer, * wrapping at the ring end, then hand it to the protocol demux.", "kind": "function", "line": 226, "name": "rtl_rx_frame_wrapped", "signature": "static void rtl_rx_frame_wrapped(unsigned length)"}, {"kind": "function", "line": 236, "name": "rtl_poll", "signature": "void rtl_poll(void)"}, {"kind": "function", "line": 25, "name": "volatile", "signature": "__asm__ volatile(\"outb %0, %1\" : : \"a\"(val), \"Nd\"(port));"}, {"kind": "function", "line": 234, "name": "net_rx_handle_frame", "signature": "net_rx_handle_frame(rtl_rx_scratch, n);"}, {"kind": "macro", "line": 60, "name": "RTL_REG_CR", "signature": "#define RTL_REG_CR"}, {"kind": "macro", "line": 62, "name": "RTL_REG_TSD0", "signature": "#define RTL_REG_TSD0"}, {"kind": "macro", "line": 63, "name": "RTL_REG_TSAD0", "signature": "#define RTL_REG_TSAD0"}, {"kind": "macro", "line": 64, "name": "RTL_REG_RBSTART", "signature": "#define RTL_REG_RBSTART"}, {"kind": "macro", "line": 65, "name": "RTL_REG_CAPR", "signature": "#define RTL_REG_CAPR"}, {"kind": "macro", "line": 66, "name": "RTL_REG_CBR", "signature": "#define RTL_REG_CBR"}, {"kind": "macro", "line": 67, "name": "RTL_REG_9346CR", "signature": "#define RTL_REG_9346CR"}, {"kind": "macro", "line": 68, "name": "RTL_REG_CONFIG1", "signature": "#define RTL_REG_CONFIG1"}]}, {"doc": "ifndef RTL8139_H define RTL8139_H", "id": "net/rtl8139.h", "kind": "module", "label": "rtl8139.h", "language": "h", "sha256": "915f8a68a24c97e7", "symbol_count": 8, "symbols": [{"doc": "rtl8139 NIC driver interface. This header is the boundary between the polled rtl8139 driver (rtl8139.c) and the protocol stack (net.c). The driver owns the port I/O, PCI probe, TX/RX rings, the NIC MAC and the PIT-calibrated clock; the stack owns addressing, sockets and the demux that the driver reaches through rtl_poll. All frame sizes and MAC constants come from net.h. #include \"net.h\" /* Nonzero when the rtl8139 was found and initialized.", "kind": "function", "line": 18, "name": "rtl_present", "signature": "int rtl_present(void);"}, {"doc": "This header is the boundary between the polled rtl8139 driver (rtl8139.c) and the protocol stack (net.c). The driver owns the port I/O, PCI probe, TX/RX rings, the NIC MAC and the PIT-calibrated clock; the stack owns addressing, sockets and the demux that the driver reaches through rtl_poll. All frame sizes and MAC constants come from net.h. #include \"net.h\" /* Nonzero when the rtl8139 was found and initialized. int rtl_present(void); /* Calibrate the clock, probe the NIC and set up the TX/RX rings.", "kind": "function", "line": 21, "name": "rtl_init", "signature": "void rtl_init(void);"}, {"doc": "Transmit one raw Ethernet frame. Returns 1 on success, 0 on failure * (no device, frame too large for a slot, or a TX deadline expiry).", "kind": "function", "line": 25, "name": "rtl_send", "signature": "int rtl_send(const unsigned char *frame, unsigned len);"}, {"kind": "function", "line": 28, "name": "net_rx_handle_frame", "signature": "* net_rx_handle_frame (the protocol demux in net.c). */ void rtl_poll(void);"}, {"doc": "Drain the RX ring once; every received frame is handed to * net_rx_handle_frame (the protocol demux in net.c). void rtl_poll(void); /* Copy the NIC MAC into out (NET_ETH_ALEN bytes).", "kind": "function", "line": 32, "name": "rtl_get_mac", "signature": "void rtl_get_mac(unsigned char out[NET_ETH_ALEN]);"}, {"doc": "Drain the RX ring once; every received frame is handed to * net_rx_handle_frame (the protocol demux in net.c). void rtl_poll(void); /* Copy the NIC MAC into out (NET_ETH_ALEN bytes). void rtl_get_mac(unsigned char out[NET_ETH_ALEN]); /* The NIC I/O base, or 0 when the device is absent.", "kind": "function", "line": 35, "name": "rtl_iobase", "signature": "unsigned short rtl_iobase(void);"}, {"doc": "Drain the RX ring once; every received frame is handed to * net_rx_handle_frame (the protocol demux in net.c). void rtl_poll(void); /* Copy the NIC MAC into out (NET_ETH_ALEN bytes). void rtl_get_mac(unsigned char out[NET_ETH_ALEN]); /* The NIC I/O base, or 0 when the device is absent. unsigned short rtl_iobase(void); /* Frame-level TX/RX counters (bytes are protocol counters in net.c).", "kind": "function", "line": 38, "name": "rtl_counters", "signature": "void rtl_counters(unsigned int *tx_frames, unsigned int *rx_frames);"}, {"kind": "macro", "line": 2, "name": "RTL8139_H", "signature": "#define RTL8139_H"}]}, {"doc": "tls.c - TLS 1.2 client sessions for MiniOS.", "id": "net/tls.c", "kind": "module", "label": "tls.c", "language": "c", "sha256": "e4b0586d426f251d", "symbol_count": 42, "symbols": [{"doc": "Diagnostics are `freedom: tls: : ` lines (freedom is the only consumer of the TLS syscalls). #include \"tls_port.h\" #include \"tls.h\" #ifndef TLS_TEST #include \"tls_roots.h\" #endif static struct tls_session *tls_sessions[TLS_FD_MAX]; /* ---- diagnostics and teardown ----", "kind": "function", "line": 24, "name": "tls_fail", "signature": "static void tls_fail(struct tls_session *s, const char *stage, const char *reason)"}, {"kind": "function", "line": 32, "name": "tls_fd_of", "signature": "static int tls_fd_of(const struct tls_session *s)"}, {"kind": "function", "line": 39, "name": "tls_free_fd", "signature": "void tls_free_fd(int fd)"}, {"doc": "Build the TLS 1.2 AEAD additional data: seq(8) || type || 0303 || * TLSCompressed.length (the plaintext length, RFC 5288 section 3).", "kind": "function", "line": 52, "name": "tls_aad", "signature": "static void tls_aad(unsigned char aad[13], int type, unsigned long long seq,\n ..."}, {"doc": "Send one record: header || nonce_explicit(8) || ciphertext || tag. The nonce_explicit is the sequence number (RFC 5288 allows it and * OpenSSL uses it); the nonce is salt || nonce_explicit.", "kind": "function", "line": 66, "name": "tls_send_record", "signature": "static int tls_send_record(struct tls_session *s, int type,\n const unsi..."}, {"doc": "for (i = 0; i < 8; i++) buf[5 + i] = (unsigned char)(s->cli_seq >> (56 - i * 8)); TLS_MEMCPY(nonce, s->cli_salt, 4); TLS_MEMCPY(nonce + 4, buf + 5, 8); if (aes128_gcm_seal_core(s->cli_key, nonce, aad, 13, payload, (unsigned)len, buf + 5 + 8, buf + 5 + 8 + len) != 0) return -1; s->cli_seq++; if (TLS_SEND(tls_fd_of(s), (const char *)buf, total) != total) return -1; return 0; } /* Send one plaintext record (ChangeCipherSpec is never encrypted).", "kind": "function", "line": 95, "name": "tls_send_raw_record", "signature": "static int tls_send_raw_record(struct tls_session *s, int type,\n co..."}, {"doc": "Read one record: header into s->rec_hdr, payload into s->rec. Returns: 1 = record ready, 0 = clean TCP EOF, -1 = torn record or bad header, -2 = timeout. A non-positive deadline blocks forever * (application-data reads behave like plain TCP).", "kind": "function", "line": 114, "name": "tls_read_record", "signature": "static int tls_read_record(struct tls_session *s, int fd, int deadline_ms)"}, {"kind": "function", "line": 173, "name": "exchange", "signature": "* key exchange (ClientHello, ClientKeyExchange) go out in plaintext\n * records, as TLS 1.2 requir..."}, {"doc": "const unsigned char *body, int len) { if (len < 0 || len > 1024) return -1; s->pt[0] = (unsigned char)type; s->pt[1] = (unsigned char)(len >> 16); s->pt[2] = (unsigned char)(len >> 8); s->pt[3] = (unsigned char)len; TLS_MEMCPY(s->pt + 4, body, (unsigned)len); sha256_update(&s->hs_hash, s->pt, (unsigned)(len + 4)); if (!s->keys_ready) return tls_send_raw_record(s, TLS_CT_HANDSHAKE, s->pt, len + 4); return tls_send_record(s, TLS_CT_HANDSHAKE, s->pt, len + 4); } /* ClientHello body (without the handshake header). Returns length.", "kind": "function", "line": 190, "name": "build_client_hello", "signature": "static int build_client_hello(struct tls_session *s, unsigned char *out)"}, {"doc": "out[pos++] = 0x00; out[pos++] = 0x06; out[pos++] = 0x04; out[pos++] = 0x01; /* rsa_pkcs1_sha256 out[pos++] = 0x04; out[pos++] = 0x03; /* ecdsa_p256_sha256 out[pos++] = 0x05; out[pos++] = 0x03; /* ecdsa_p384_sha384 { int extlen = pos - ext_start - 2; out[ext_start] = (unsigned char)(extlen >> 8); out[ext_start + 1] = (unsigned char)extlen; } } return pos; } /* Derive all keys and send ClientKeyExchange, CCS, Finished.", "kind": "function", "line": 244, "name": "client_finish_flight", "signature": "static int client_finish_flight(struct tls_session *s)"}, {"doc": "sha256_final(&hcopy, hash); } tls_prf(s->master, 48, \"client finished\", hash, 32, verify, 12); TLS_MEMCPY(finished + 4, verify, 12); if (tls_send_record(s, TLS_CT_HANDSHAKE, finished, 16) != 0) { tls_fail(s, \"send\", \"client finished\"); return -1; } /* the server Finished covers the transcript including our Finished sha256_update(&s->hs_hash, finished, 16); return 0; } /* ---- handshake message parsers ----", "kind": "function", "line": 339, "name": "parse_server_hello", "signature": "static int parse_server_hello(struct tls_session *s,\n const unsigned..."}, {"kind": "function", "line": 369, "name": "parse_certificate", "signature": "static int parse_certificate(struct tls_session *s,\n const unsigned c..."}, {"kind": "function", "line": 400, "name": "parse_server_key_exchange", "signature": "static int parse_server_key_exchange(struct tls_session *s,\n ..."}, {"doc": "sha256(data, 64 + params_len, digest); return ecdsa_verify(0, s->leaf_pk.qx, s->leaf_pk.qy, digest, 32, m + pos, sig_len); } if (sig_alg == TLS_SIG_ECDSA_P384_SHA384) { if (s->leaf_pk.kind != 2) return -1; sha384(data, 64 + params_len, digest); return ecdsa_verify(1, s->leaf_pk.qx, s->leaf_pk.qy, digest, 48, m + pos, sig_len); } return -1; } /* ---- handshake driver ----", "kind": "function", "line": 465, "name": "tls_handshake", "signature": "int tls_handshake(int fd, const char *host)"}, {"doc": "pre-Finished is refused tls_fail(s, \"handshake\", \"unexpected message\"); tls_sessions[fd] = 0; return -1; } } s->hs_msg_len = 0; s->hs_msg_want = 0; } } } } /* ---- application data ----", "kind": "function", "line": 686, "name": "tls_send", "signature": "int tls_send(int fd, const char *buf, int len)"}, {"kind": "function", "line": 695, "name": "tls_recv", "signature": "int tls_recv(int fd, char *buf, int len)"}, {"doc": "if !defined(TLS_TEST) && !defined(TLS_RING3)", "kind": "function", "line": 772, "name": "tls_sys_handshake", "signature": "long tls_sys_handshake(long fd, long host)"}, {"kind": "function", "line": 776, "name": "tls_sys_send", "signature": "long tls_sys_send(long fd, long buf, long len)"}, {"kind": "function", "line": 781, "name": "tls_sys_recv", "signature": "long tls_sys_recv(long fd, long buf, long len)"}, {"doc": "return tls_handshake((int)(fd - NET_FD_BASE), (const char *)host); } long tls_sys_send(long fd, long buf, long len) { if (fd < NET_FD_BASE || fd >= NET_FD_BASE + NET_SOCKETS || !buf) return -1; return tls_send((int)(fd - NET_FD_BASE), (const char *)buf, (int)len); } long tls_sys_recv(long fd, long buf, long len) { if (fd < NET_FD_BASE || fd >= NET_FD_BASE + NET_SOCKETS || !buf) return -1; return tls_recv((int)(fd - NET_FD_BASE), (char *)buf, (int)len); } /* ---- kernel entropy and clock ----", "kind": "function", "line": 788, "name": "tls_rdtsc", "signature": "static inline unsigned long long tls_rdtsc(void)"}, {"kind": "function", "line": 794, "name": "tls_random", "signature": "void tls_random(unsigned char *out, unsigned len)"}, {"doc": "unsigned long long seed = tls_rdtsc() ^ ((unsigned long long)net_time_ms() << 33); unsigned i; static unsigned long long counter = 0x6D696E69544C53ULL; counter ^= seed; for (i = 0; i < len; i++) { seed = seed * 6364136223846793005ULL + 1442695040888963407ULL; out[i] = (unsigned char)((seed >> 33) ^ (counter >> (i & 7) * 8)); counter = counter * 6364136223846793005ULL + 1; } } /* The port helpers in net.c are static; these live here for the RTC. ifndef PORT_IO_DEFINED define PORT_IO_DEFINED", "kind": "function", "line": 810, "name": "outb", "signature": "static inline void outb(unsigned short port, unsigned char v)"}, {"kind": "function", "line": 813, "name": "inb", "signature": "static inline unsigned char inb(unsigned short port)"}, {"doc": "/* The port helpers in net.c are static; these live here for the RTC. #ifndef PORT_IO_DEFINED #define PORT_IO_DEFINED static inline void outb(unsigned short port, unsigned char v) { __asm__ volatile(\"outb %0, %1\" : : \"a\"(v), \"Nd\"(port)); } static inline unsigned char inb(unsigned short port) { unsigned char v; __asm__ volatile(\"inb %1, %0\" : \"=a\"(v) : \"Nd\"(port)); return v; } #endif /* CMOS RTC -> days since epoch. Registers are BCD.", "kind": "function", "line": 821, "name": "cmos_read", "signature": "static inline unsigned char cmos_read(unsigned char reg)"}, {"kind": "function", "line": 825, "name": "tls_now_days", "signature": "long tls_now_days(void)"}, {"kind": "function", "line": 26, "name": "TLS_PRINTF", "signature": "TLS_PRINTF(\"freedom: tls: %s: %s\\n\", stage, reason);"}, {"kind": "function", "line": 28, "name": "TLS_FREE", "signature": "TLS_FREE(s);"}, {"kind": "function", "line": 64, "name": "number", "signature": "* The nonce_explicit is the sequence number (RFC 5288 allows it and * OpenSSL uses it);"}, {"kind": "function", "line": 83, "name": "TLS_MEMCPY", "signature": "TLS_MEMCPY(nonce, s->cli_salt, 4);"}, {"kind": "function", "line": 122, "name": "TLS_RECV", "signature": ": TLS_RECV(fd, (char *)hdr + got, 5 - got);"}, {"kind": "function", "line": 183, "name": "sha256_update", "signature": "sha256_update(&s->hs_hash, s->pt, (unsigned)(len + 4));"}, {"kind": "function", "line": 263, "name": "p256_pub", "signature": "p256_pub(s->cli_priv, s->cli_pub_x, s->cli_pub_y);"}, {"kind": "function", "line": 281, "name": "tls_prf", "signature": "tls_prf(pre_master, 32, \"master secret\", seed, 64, s->master, 48);"}, {"kind": "function", "line": 325, "name": "sha256_final", "signature": "sha256_final(&hcopy, hash);"}, {"kind": "function", "line": 444, "name": "sha256", "signature": "sha256(data, 64 + params_len, digest);"}, {"kind": "function", "line": 445, "name": "rsa_pkcs1_verify_sha256", "signature": "return rsa_pkcs1_verify_sha256(s->leaf_pk.n, s->leaf_pk.n_len, s->leaf_pk.e, s->leaf_pk.e_len, digest, m + pos, sig_len);"}, {"kind": "function", "line": 452, "name": "ecdsa_verify", "signature": "return ecdsa_verify(0, s->leaf_pk.qx, s->leaf_pk.qy, digest, 32, m + pos, sig_len);"}, {"kind": "function", "line": 457, "name": "sha384", "signature": "sha384(data, 64 + params_len, digest);"}, {"kind": "function", "line": 485, "name": "TLS_MEMSET", "signature": "TLS_MEMSET(s, 0, sizeof(*s));"}, {"kind": "function", "line": 494, "name": "sha256_init", "signature": "sha256_init(&s->hs_hash);"}, {"kind": "function", "line": 791, "name": "volatile", "signature": "__asm__ volatile(\"rdtsc\" : \"=a\"(lo), \"=d\"(hi));"}, {"kind": "macro", "line": 809, "name": "PORT_IO_DEFINED", "signature": "#define PORT_IO_DEFINED"}]}, {"doc": "tls_crypto.c - the crypto behind the kernel TLS 1.2 client.", "id": "net/tls_crypto.c", "kind": "module", "label": "tls_crypto.c", "language": "c", "sha256": "45961da958cb006e", "symbol_count": 80, "symbols": [{"kind": "struct", "line": 655, "name": "mont_ctx"}, {"kind": "struct", "line": 838, "name": "ec_curve"}, {"doc": "Jacobian point: three coordinates in Montgomery domain, nw words each. * The point at infinity has Z = 0.", "kind": "struct", "line": 859, "name": "jpt"}, {"kind": "struct", "line": 316, "name": "gf128"}, {"kind": "function", "line": 32, "name": "sha256_rotr", "signature": "static unsigned sha256_rotr(unsigned x, unsigned n)"}, {"kind": "function", "line": 36, "name": "sha256_init", "signature": "void sha256_init(struct sha256_ctx *c)"}, {"kind": "function", "line": 49, "name": "sha256_block", "signature": "static void sha256_block(struct sha256_ctx *c, const unsigned char *p)"}, {"kind": "function", "line": 79, "name": "sha256_update", "signature": "void sha256_update(struct sha256_ctx *c, const unsigned char *data, unsigned len)"}, {"kind": "function", "line": 104, "name": "sha256_final", "signature": "void sha256_final(struct sha256_ctx *c, unsigned char out[32])"}, {"kind": "function", "line": 125, "name": "sha256", "signature": "void sha256(const unsigned char *data, unsigned len, unsigned char out[32])"}, {"doc": "out[i * 4 + 1] = (unsigned char)(c->state[i] >> 16); out[i * 4 + 2] = (unsigned char)(c->state[i] >> 8); out[i * 4 + 3] = (unsigned char)(c->state[i]); } } void sha256(const unsigned char *data, unsigned len, unsigned char out[32]) { struct sha256_ctx c; sha256_init(&c); sha256_update(&c, data, len); sha256_final(&c, out); } /* ========== HMAC-SHA256 ==========", "kind": "function", "line": 134, "name": "hmac_sha256", "signature": "void hmac_sha256(const unsigned char *key, unsigned klen,\n const unsigned char *d..."}, {"doc": "opad[i] = k[i] ^ 0x5c; } sha256_init(&c); sha256_update(&c, ipad, 64); sha256_update(&c, data, dlen); sha256_final(&c, inner); sha256_init(&c); sha256_update(&c, opad, 64); sha256_update(&c, inner, 32); sha256_final(&c, out); } /* ========== TLS 1.2 PRF (P_SHA256) ==========", "kind": "function", "line": 164, "name": "p_hash", "signature": "static void p_hash(const unsigned char *secret, unsigned secret_len,\n const uns..."}, {"kind": "function", "line": 187, "name": "tls_prf", "signature": "void tls_prf(const unsigned char *secret, unsigned secret_len,\n const char *label, co..."}, {"kind": "function", "line": 229, "name": "aes_xtime", "signature": "static unsigned aes_xtime(unsigned x)"}, {"kind": "function", "line": 234, "name": "aes_key_expand", "signature": "static void aes_key_expand(const unsigned char key[16], unsigned rk[44])"}, {"kind": "function", "line": 252, "name": "aes_mixcol", "signature": "static void aes_mixcol(unsigned a0, unsigned a1, unsigned a2, unsigned a3,\n ..."}, {"kind": "function", "line": 262, "name": "aes128_encrypt_block", "signature": "void aes128_encrypt_block(const unsigned char key[16],\n const unsigned c..."}, {"kind": "function", "line": 320, "name": "gf_shift_right", "signature": "static gf128 gf_shift_right(gf128 v)"}, {"doc": "z = z * h, in GF(2^128), MSB-first. Branches on z bits (public: * AAD/ciphertext), never on h bits (secret).", "kind": "function", "line": 334, "name": "gf_mul", "signature": "static gf128 gf_mul(gf128 z, gf128 h)"}, {"kind": "function", "line": 350, "name": "gf_put", "signature": "static gf128 gf_put(const unsigned char *p)"}, {"kind": "function", "line": 360, "name": "ghash_blocks", "signature": "static gf128 ghash_blocks(gf128 z, gf128 h, const unsigned char *data, unsigned len)"}, {"doc": "if (len > 0) { unsigned char pad[16]; gf128 b; TLS_MEMSET(pad, 0, 16); TLS_MEMCPY(pad, data, len); b = gf_put(pad); z.lo ^= b.lo; z.hi ^= b.hi; z = gf_mul(z, h); } return z; } /* Compute GCM tag for aad || ct (ct already ciphertext).", "kind": "function", "line": 384, "name": "gcm_tag_core", "signature": "static void gcm_tag_core(const unsigned char key[16],\n const unsigned cha..."}, {"kind": "function", "line": 426, "name": "gcm_ctr_core", "signature": "static void gcm_ctr_core(const unsigned char key[16],\n const unsigned cha..."}, {"doc": "TLS_MEMCPY(blk, nonce, 12); blk[12] = (unsigned char)(ctr >> 24); blk[13] = (unsigned char)(ctr >> 16); blk[14] = (unsigned char)(ctr >> 8); blk[15] = (unsigned char)(ctr); aes128_encrypt_block(key, blk, crypt); if (take > 16) take = 16; for (i = 0; i < (int)take; i++) out[off + i] = in[off + i] ^ crypt[i]; off += take; ctr++; } } /* TLS nonce: 4-byte implicit salt || 8-byte sequence number.", "kind": "function", "line": 450, "name": "tls_nonce", "signature": "static void tls_nonce(const unsigned char salt[4], unsigned long long seq,\n ..."}, {"kind": "function", "line": 456, "name": "gcm_tag", "signature": "static void gcm_tag(const unsigned char key[16], const unsigned char salt[4],\n ..."}, {"kind": "function", "line": 466, "name": "gcm_ctr", "signature": "static void gcm_ctr(const unsigned char key[16], const unsigned char salt[4],\n ..."}, {"kind": "function", "line": 474, "name": "aes128_gcm_seal", "signature": "int aes128_gcm_seal(const unsigned char key[16],\n const unsigned char salt[4],..."}, {"kind": "function", "line": 486, "name": "aes128_gcm_open", "signature": "int aes128_gcm_open(const unsigned char key[16],\n const unsigned char salt[4],..."}, {"kind": "function", "line": 504, "name": "aes128_gcm_seal_core", "signature": "int aes128_gcm_seal_core(const unsigned char key[16],\n const unsigned cha..."}, {"kind": "function", "line": 515, "name": "aes128_gcm_open_core", "signature": "int aes128_gcm_open_core(const unsigned char key[16],\n const unsigned cha..."}, {"doc": "unsigned char want[16]; unsigned char diff = 0; int i; if (ct_len > TLS_REC_MAX) return -1; gcm_tag_core(key, nonce, aad, aad_len, ct, ct_len, want); for (i = 0; i < 16; i++) diff |= want[i] ^ tag[i]; if (diff) return -1; gcm_ctr_core(key, nonce, ct, pt, ct_len); return 0; } /* ========== Big integers (32-bit limbs, little-endian) ========== #define TLS_BN_WORDS 128 /* 4096 bits", "kind": "function", "line": 536, "name": "bn_zero", "signature": "static void bn_zero(unsigned *a, int nw)"}, {"kind": "function", "line": 541, "name": "bn_is_zero", "signature": "static int bn_is_zero(const unsigned *a, int nw)"}, {"kind": "function", "line": 548, "name": "bn_cmp", "signature": "static int bn_cmp(const unsigned *a, const unsigned *b, int nw)"}, {"doc": "for (i = 0; i < nw; i++) v |= a[i]; return v == 0; } static int bn_cmp(const unsigned *a, const unsigned *b, int nw) { int i; for (i = nw - 1; i >= 0; i--) { if (a[i] < b[i]) return -1; if (a[i] > b[i]) return 1; } return 0; } /* r = a + b; returns carry out.", "kind": "function", "line": 559, "name": "bn_add", "signature": "static unsigned bn_add(const unsigned *a, const unsigned *b, unsigned *r, int nw)"}, {"doc": "/* r = a + b; returns carry out. static unsigned bn_add(const unsigned *a, const unsigned *b, unsigned *r, int nw) { unsigned long long carry = 0; int i; for (i = 0; i < nw; i++) { unsigned long long t = (unsigned long long)a[i] + b[i] + carry; r[i] = (unsigned)t; carry = t >> 32; } return (unsigned)carry; } /* r = a - b; a must be >= b; returns borrow (0 = fine).", "kind": "function", "line": 571, "name": "bn_sub", "signature": "static unsigned bn_sub(const unsigned *a, const unsigned *b, unsigned *r, int nw)"}, {"doc": "r = 2a mod n, for a < n. v = 2^(32nw) mod n = 2^(32nw) - n (the * Montgomery \"one\"): 2a + carry means 2a - 2^(32nw) + v = 2a - n < n.", "kind": "function", "line": 584, "name": "bn_dbl_mod", "signature": "static void bn_dbl_mod(const unsigned *a, const unsigned *n, const unsigned *v,\n ..."}, {"doc": "Montgomery multiplication. n is odd, n0inv = -n^(-1) mod 2^32. r = a*b*R^-1 mod n, R = 2^(32nw). * a, b < n.", "kind": "function", "line": 596, "name": "bn_mont_mul", "signature": "static void bn_mont_mul(const unsigned *a, const unsigned *b, const unsigned *n,\n ..."}, {"doc": "carry = v >> 32; } s = (unsigned long long)t[nw] + carry; t[nw - 1] = (unsigned)s; t[nw] = t[nw + 1] + (unsigned)(s >> 32); } if (t[nw] || bn_cmp(t, n, nw) >= 0) { bn_sub(t, n, r, nw); } else { for (i = 0; i < nw; i++) r[i] = t[i]; } } /* -n^(-1) mod 2^32 via Newton iteration (n0 must be odd).", "kind": "function", "line": 635, "name": "bn_mont_n0inv", "signature": "static unsigned bn_mont_n0inv(unsigned n0)"}, {"doc": "} else { for (i = 0; i < nw; i++) r[i] = t[i]; } } /* -n^(-1) mod 2^32 via Newton iteration (n0 must be odd). static unsigned bn_mont_n0inv(unsigned n0) { unsigned inv = 1; int i; for (i = 0; i < 5; i++) inv *= 2 - n0 * inv; return 0 - inv; } /* R^2 mod n, R = 2^(32nw): 64*nw doublings from 1.", "kind": "function", "line": 643, "name": "bn_mont_r2", "signature": "static void bn_mont_r2(const unsigned *n, const unsigned *v, int nw,\n unsig..."}, {"kind": "function", "line": 662, "name": "bn_from_be", "signature": "static void bn_from_be(const unsigned char *bytes, unsigned len,\n unsigned ..."}, {"kind": "function", "line": 670, "name": "bn_to_be", "signature": "static void bn_to_be(const unsigned *a, unsigned char *out, unsigned len)"}, {"kind": "function", "line": 676, "name": "mont_init", "signature": "static void mont_init(struct mont_ctx *m, const unsigned char *p_bytes,\n uns..."}, {"kind": "function", "line": 688, "name": "mont_to", "signature": "static void mont_to(struct mont_ctx *m, const unsigned *a, unsigned *r)"}, {"kind": "function", "line": 692, "name": "mont_from", "signature": "static void mont_from(struct mont_ctx *m, const unsigned *a, unsigned *r)"}, {"kind": "function", "line": 699, "name": "mont_mul", "signature": "static void mont_mul(struct mont_ctx *m, const unsigned *a, const unsigned *b,\n ..."}, {"kind": "function", "line": 704, "name": "mont_sqr", "signature": "static void mont_sqr(struct mont_ctx *m, const unsigned *a, unsigned *r)"}, {"doc": "Field add/sub over the mont modulus (in Montgomery domain). The carry of a+b is corrected with one = 2^(32nw) - n, and a - b < 0 is * p - (b - a); neither path can overflow one word.", "kind": "function", "line": 712, "name": "mont_add", "signature": "static void mont_add(struct mont_ctx *m, const unsigned *a, const unsigned *b,\n ..."}, {"kind": "function", "line": 720, "name": "mont_sub", "signature": "static void mont_sub(struct mont_ctx *m, const unsigned *a, const unsigned *b,\n ..."}, {"doc": "Field inverse via Fermat: a^(p-2) mod p (a in Montgomery domain; * the result stays in Montgomery domain).", "kind": "function", "line": 736, "name": "mont_inv", "signature": "static void mont_inv(struct mont_ctx *m, const unsigned *a, unsigned *r)"}, {"kind": "function", "line": 847, "name": "ec_init", "signature": "static void ec_init(struct ec_curve *c, const unsigned char *p,\n const unsigne..."}, {"kind": "function", "line": 864, "name": "jpt_is_inf", "signature": "static int jpt_is_inf(const struct jpt *p, int nw)"}, {"kind": "function", "line": 868, "name": "jpt_set_inf", "signature": "static void jpt_set_inf(struct jpt *p, int nw)"}, {"kind": "function", "line": 874, "name": "jpt_copy", "signature": "static void jpt_copy(struct jpt *d, const struct jpt *s, int nw)"}, {"doc": "bn_zero(p->y, nw); bn_zero(p->z, nw); } static void jpt_copy(struct jpt *d, const struct jpt *s, int nw) { int i; for (i = 0; i < nw; i++) { d->x[i] = s->x[i]; d->y[i] = s->y[i]; d->z[i] = s->z[i]; } } /* Constant-time swap of two points on a 0/~0 mask.", "kind": "function", "line": 885, "name": "jpt_cswap", "signature": "static void jpt_cswap(struct jpt *a, struct jpt *b, unsigned mask, int nw)"}, {"doc": "} /* Constant-time swap of two points on a 0/~0 mask. static void jpt_cswap(struct jpt *a, struct jpt *b, unsigned mask, int nw) { int i; for (i = 0; i < nw; i++) { unsigned t; t = (a->x[i] ^ b->x[i]) & mask; a->x[i] ^= t; b->x[i] ^= t; t = (a->y[i] ^ b->y[i]) & mask; a->y[i] ^= t; b->y[i] ^= t; t = (a->z[i] ^ b->z[i]) & mask; a->z[i] ^= t; b->z[i] ^= t; } } /* P3 = 2 * P1 (a = p - 3: E = 3(A - Z1^4)).", "kind": "function", "line": 896, "name": "jpt_dbl", "signature": "static void jpt_dbl(struct ec_curve *c, const struct jpt *p1, struct jpt *p3)"}, {"doc": "mont_sqr(m, E, F); mont_add(m, D, D, t); /* 2D mont_sub(m, F, t, p3->x); /* X3 = F - 2D mont_sub(m, D, p3->x, t); mont_mul(m, E, t, t2); mont_add(m, C, C, t); mont_add(m, t, t, t); mont_add(m, t, t, t); /* 8C mont_sub(m, t2, t, p3->y); /* Y3 = E(D-X3) - 8C mont_mul(m, p1->y, p1->z, YZ); mont_add(m, YZ, YZ, p3->z); /* Z3 = 2YZ } /* P3 = P1 + P2 (generic Jacobian add).", "kind": "function", "line": 936, "name": "jpt_add", "signature": "static void jpt_add(struct ec_curve *c, const struct jpt *p1, const struct jpt *p2,\n ..."}, {"doc": "Constant-iteration scalar multiplication: the classic ladder. * Fixed iteration count, no table lookups indexed by secret bits.", "kind": "function", "line": 980, "name": "jpt_scalar_mult", "signature": "static void jpt_scalar_mult(struct ec_curve *c, const struct jpt *base,\n ..."}, {"doc": "Affine from Jacobian: x = X/Z^2, y = Y/Z^3. Bytes out are big-endian. * y_out may be NULL when only the x coordinate is wanted.", "kind": "function", "line": 1007, "name": "jpt_to_affine", "signature": "static void jpt_to_affine(struct ec_curve *c, const struct jpt *p,\n unsi..."}, {"doc": "Affine from bytes with on-curve validation. Returns 0 when the point * is valid and not the point at infinity.", "kind": "function", "line": 1032, "name": "jpt_from_affine", "signature": "static int jpt_from_affine(struct ec_curve *c, const unsigned char *x_bytes,\n ..."}, {"kind": "function", "line": 1075, "name": "ec_curve_by_id", "signature": "static struct ec_curve *ec_curve_by_id(int curve)"}, {"kind": "function", "line": 1079, "name": "ec_boot", "signature": "static void ec_boot(void)"}, {"kind": "function", "line": 1087, "name": "p256_scalar_mult", "signature": "int p256_scalar_mult(const unsigned char scalar[32],\n const unsigned char qx[..."}, {"kind": "function", "line": 1100, "name": "p384_scalar_mult", "signature": "int p384_scalar_mult(const unsigned char scalar[48],\n const unsigned char qx[..."}, {"kind": "function", "line": 1113, "name": "p256_ecdh", "signature": "int p256_ecdh(const unsigned char priv[32],\n const unsigned char peer_x[32], const u..."}, {"doc": "int p256_ecdh(const unsigned char priv[32], const unsigned char peer_x[32], const unsigned char peer_y[32], unsigned char z[32]) { struct ec_curve *c; struct jpt base, out; ec_boot(); c = &ec_p256; if (jpt_from_affine(c, peer_x, peer_y, &base) != 0) return -1; jpt_scalar_mult(c, &base, priv, &out); jpt_to_affine(c, &out, z, 0); return 0; } /* ========== ECDSA verify ==========", "kind": "function", "line": 1128, "name": "der_parse_sig", "signature": "static int der_parse_sig(const unsigned char *sig, unsigned sig_len,\n con..."}, {"kind": "function", "line": 1162, "name": "ecdsa_verify", "signature": "int ecdsa_verify(int curve, const unsigned char pub_x[], const unsigned char pub_y[],\n ..."}, {"doc": "EMSA-PKCS1-v1_5 DigestInfo check for an arbitrary hash: the encoding is 00 01 FF.. 00 . Constant-time: every byte of the * encoding contributes to the diff.", "kind": "function", "line": 1261, "name": "rsa_verify_digestinfo", "signature": "static int rsa_verify_digestinfo(const unsigned char *em, unsigned em_len,\n ..."}, {"doc": "diff |= em[i] ^ 0xff; } if (i >= em_len) return -1; /* no separator if (i < 10) return -1; /* padding too short (RFC 8017) i++; if (em_len - i != prefix_len + digest_len) return -1; for (i = 0; i < prefix_len; i++) diff |= em[em_len - prefix_len - digest_len + i] ^ prefix[i]; for (i = 0; i < digest_len; i++) diff |= em[em_len - digest_len + i] ^ digest[i]; return diff ? -1 : 0; } /* Shared RSA PKCS#1 v1.5 core: m^e mod n, EMSA-PKCS1-v1_5 in em.", "kind": "function", "line": 1285, "name": "rsa_pkcs1_verify_raw", "signature": "static int rsa_pkcs1_verify_raw(const unsigned char *n, unsigned n_len,\n ..."}, {"kind": "function", "line": 1325, "name": "rsa_pkcs1_verify_sha256", "signature": "int rsa_pkcs1_verify_sha256(const unsigned char *n, unsigned n_len,\n c..."}, {"kind": "function", "line": 1339, "name": "rsa_pkcs1_verify_sha384", "signature": "int rsa_pkcs1_verify_sha384(const unsigned char *n, unsigned n_len,\n c..."}, {"kind": "function", "line": 1385, "name": "sha384_rotr", "signature": "static unsigned long long sha384_rotr(unsigned long long x, unsigned n)"}, {"kind": "function", "line": 1389, "name": "sha384_raw", "signature": "static void sha384_raw(const unsigned char *data, unsigned len,\n unsigned c..."}, {"kind": "function", "line": 1505, "name": "sha384", "signature": "void sha384(const unsigned char *data, unsigned len, unsigned char out[48])"}, {"doc": "out[i * 8 + 2] = (unsigned char)(state[i] >> 40); out[i * 8 + 3] = (unsigned char)(state[i] >> 32); out[i * 8 + 4] = (unsigned char)(state[i] >> 24); out[i * 8 + 5] = (unsigned char)(state[i] >> 16); out[i * 8 + 6] = (unsigned char)(state[i] >> 8); out[i * 8 + 7] = (unsigned char)state[i]; } } void sha384(const unsigned char *data, unsigned len, unsigned char out[48]) { sha384_raw(data, len, out); } /* ========== P-256 helpers for the handshake ==========", "kind": "function", "line": 1511, "name": "p256_point_valid", "signature": "int p256_point_valid(const unsigned char x[32], const unsigned char y[32])"}, {"kind": "function", "line": 1519, "name": "p256_pub", "signature": "int p256_pub(const unsigned char priv[32],\n unsigned char x[32], unsigned char y[32])"}, {"kind": "function", "line": 1538, "name": "p256_scalar_valid", "signature": "int p256_scalar_valid(const unsigned char scalar[32])"}, {"kind": "function", "line": 89, "name": "TLS_MEMCPY", "signature": "TLS_MEMCPY(c->buf + idx, data, len);"}, {"kind": "function", "line": 111, "name": "TLS_MEMSET", "signature": "TLS_MEMSET(pad, 0, sizeof(pad));"}, {"kind": "function", "line": 326, "name": "word", "signature": "* of the low word (hi holds bits 64..127, lo bits 0..63). Masked in, * so the shift never branches on key bits. */ r.hi = (v.hi >> 1) ^ (0xE100000000000000ULL & mask);"}, {"kind": "macro", "line": 534, "name": "TLS_BN_WORDS", "signature": "#define TLS_BN_WORDS"}]}, {"doc": "tls_x509.c - minimal X.509 DER parsing and chain verification.", "id": "net/tls_x509.c", "kind": "module", "label": "tls_x509.c", "language": "c", "sha256": "20eb0c91b09a6d0f", "symbol_count": 30, "symbols": [{"kind": "struct", "line": 43, "name": "der_tlv"}, {"kind": "struct", "line": 129, "name": "x509_name"}, {"kind": "struct", "line": 172, "name": "x509_sans"}, {"kind": "struct", "line": 265, "name": "x509_cert"}, {"kind": "function", "line": 35, "name": "oid_eq", "signature": "static int oid_eq(const unsigned char *bytes, unsigned len,\n const unsigned char..."}, {"doc": "Parse the TLV at p[pos]; advances pos to the first byte after it. * Returns 0 on success, -1 on any bound violation.", "kind": "function", "line": 51, "name": "der_next", "signature": "static int der_next(const unsigned char *p, unsigned limit, unsigned *pos,\n st..."}, {"doc": "len = (len << 8) | p[(*pos)++]; } } else { len = p[(*pos)++]; } if (len > limit - *pos) return -1; out->val = p + *pos; out->len = len; out->tag = tag; pos += len; return 0; } /* A constructed SEQUENCE/SET whose content must parse as children.", "kind": "function", "line": 82, "name": "der_container", "signature": "static int der_container(const unsigned char *p, unsigned limit, unsigned *pos,\n ..."}, {"doc": "} /* A constructed SEQUENCE/SET whose content must parse as children. static int der_container(const unsigned char *p, unsigned limit, unsigned *pos, const unsigned char **val, unsigned *len) { struct der_tlv t; if (der_next(p, limit, pos, &t) != 0) return -1; if (t.tag != 0x30) return -1; val = t.val; len = t.len; return 0; } /* ---- Time ----", "kind": "function", "line": 93, "name": "days_from_civil", "signature": "static long days_from_civil(int y, int m, int d)"}, {"doc": "/* ---- Time ---- static long days_from_civil(int y, int m, int d) { long era, doe, yoe; int doy; y -= m <= 2 ? 1 : 0; era = (y >= 0 ? y : y - 399) / 400; yoe = y - (int)era * 400; doy = (153 * (m + (m > 2 ? -3 : 9)) + 2) / 5 + d - 1; doe = (long)yoe * 365 + yoe / 4 - yoe / 100 + doy; return era * 146097 + doe - 719468; } /* UTCTime / GeneralizedTime \"....Z\" -> days since epoch, or -1.", "kind": "function", "line": 106, "name": "der_time_to_days", "signature": "static long der_time_to_days(const struct der_tlv *t)"}, {"doc": "} if (mon < 1 || mon > 12 || day < 1 || day > 31 || year < 1970 || year > 2100) return -1; return days_from_civil(year, mon, day); } /* ---- Name / extensions ---- struct x509_name { unsigned char cn[64]; unsigned cn_len; }; /* Find the first CN in an RDNSequence. Returns 0 when found.", "kind": "function", "line": 135, "name": "name_find_cn", "signature": "static int name_find_cn(const unsigned char *p, unsigned limit,\n struct x5..."}, {"kind": "function", "line": 177, "name": "san_add", "signature": "static void san_add(struct x509_sans *out, const unsigned char *v, unsigned len)"}, {"doc": "struct x509_sans { unsigned char dns[TLS_SAN_MAX][64]; unsigned len[TLS_SAN_MAX]; int count; }; static void san_add(struct x509_sans *out, const unsigned char *v, unsigned len) { if (out->count >= TLS_SAN_MAX || len >= 64) return; TLS_MEMCPY(out->dns[out->count], v, len); out->len[out->count] = len; out->count++; } /* Walk the SAN extension (2.5.29.17) OCTET STRING body.", "kind": "function", "line": 186, "name": "san_parse", "signature": "static void san_parse(const unsigned char *p, unsigned limit,\n struct x509_s..."}, {"doc": "unsigned seq_len, pos = 0; out->count = 0; if (der_container(p, limit, &pos, &seq, &seq_len) != 0) return; pos = 0; while (pos < seq_len) { struct der_tlv t; if (der_next(seq, seq_len, &pos, &t) != 0) return; if (t.tag == 0x82) san_add(out, t.val, t.len); /* dNSName } } /* ---- Public key ---- /* SPKI SEQUENCE content: { alg SEQUENCE { OID, params }, BIT STRING }.", "kind": "function", "line": 203, "name": "spki_parse", "signature": "static int spki_parse(const unsigned char *p, unsigned limit,\n struct tls_pu..."}, {"kind": "function", "line": 278, "name": "cert_parse", "signature": "static int cert_parse(const unsigned char *der, unsigned len,\n struct x509_c..."}, {"doc": "unsigned bpos = e2pos; if (der_next(ext, ext_len, &bpos, &body) != 0) break; if (oid_eq(eoid, eoid_len, oid_san, sizeof(oid_san))) san_parse(body.val, body.len, &out->sans), out->has_san = 1; } } } } } return 0; } /* ---- Hostname matching ----", "kind": "function", "line": 391, "name": "ascii_lower", "signature": "static int ascii_lower(int c)"}, {"doc": "} } } } return 0; } /* ---- Hostname matching ---- static int ascii_lower(int c) { return (c >= 'A' && c <= 'Z') ? c + ('a' - 'A') : c; } /* Exact match, ASCII case-insensitive.", "kind": "function", "line": 397, "name": "host_match_exact", "signature": "static int host_match_exact(const char *host, const unsigned char *name,\n ..."}, {"doc": "Wildcard: \"*.example.com\" matches exactly one label (\"a.example.com\", * never \"a.b.example.com\" nor \"example.com\").", "kind": "function", "line": 410, "name": "host_match_wildcard", "signature": "static int host_match_wildcard(const char *host, const unsigned char *name,\n ..."}, {"kind": "function", "line": 430, "name": "host_matches", "signature": "static int host_matches(const char *host, const struct x509_cert *leaf)"}, {"doc": "return 1; } return 0; /* SAN present and nothing matched: fail closed } if (leaf->subject.cn_len) { return host_match_exact(host, leaf->subject.cn, leaf->subject.cn_len) || host_match_wildcard(host, leaf->subject.cn, leaf->subject.cn_len); } return 0; } /* ---- Signature verification ---- /* ========== Public API ==========", "kind": "function", "line": 451, "name": "tls_x509_parse_pubkey", "signature": "int tls_x509_parse_pubkey(const unsigned char *der, unsigned len,\n struc..."}, {"doc": "Trust anchors are matched by public key, not by self-signature: a presented root is often a cross-signed copy (signed by a legacy root, e.g. the SSL.com 2022 roots are signed by Comodo AAA), so checking its signature against its own key would reject a perfectly valid anchor. Key equality is safe because every link above the top is still signature-verified: an attacker cannot present a top cert carrying an embedded root's public key unless the chain below it was signed with * that root's private key.", "kind": "function", "line": 468, "name": "pubkey_equal", "signature": "static int pubkey_equal(const struct tls_pubkey *a, const struct tls_pubkey *b)"}, {"doc": "signature-verified: an attacker cannot present a top cert carrying an embedded root's public key unless the chain below it was signed with * that root's private key. static int pubkey_equal(const struct tls_pubkey *a, const struct tls_pubkey *b) { if (a->kind != b->kind) return 0; if (a->kind == 0) return a->n_len == b->n_len && a->e_len == b->e_len && TLS_MEMCMP(a->n, b->n, a->n_len) == 0 && TLS_MEMCMP(a->e, b->e, a->e_len) == 0; return TLS_MEMCMP(a->qx, b->qx, 48) == 0 && TLS_MEMCMP(a->qy, b->qy, 48) == 0; } /* Verify one certificate's signature with an issuer public key.", "kind": "function", "line": 479, "name": "cert_verify_signature", "signature": "static int cert_verify_signature(const struct x509_cert *cert,\n c..."}, {"kind": "function", "line": 520, "name": "tls_x509_verify_chain", "signature": "int tls_x509_verify_chain(const unsigned char *chain, unsigned chain_len,\n ..."}, {"kind": "function", "line": 156, "name": "TLS_MEMCPY", "signature": "TLS_MEMCPY(out->cn, val, val_len);"}, {"kind": "function", "line": 484, "name": "sha256", "signature": "sha256(cert->tbs, cert->tbs_len, digest);"}, {"kind": "function", "line": 485, "name": "rsa_pkcs1_verify_sha256", "signature": "return rsa_pkcs1_verify_sha256(issuer_key->n, issuer_key->n_len, issuer_key->e, issuer_key->e_len, digest, cert->sig, cert->sig_len);"}, {"kind": "function", "line": 493, "name": "sha384", "signature": "sha384(cert->tbs, cert->tbs_len, d48);"}, {"kind": "function", "line": 494, "name": "rsa_pkcs1_verify_sha384", "signature": "return rsa_pkcs1_verify_sha384(issuer_key->n, issuer_key->n_len, issuer_key->e, issuer_key->e_len, d48, cert->sig, cert->sig_len);"}, {"kind": "function", "line": 515, "name": "ecdsa_verify", "signature": "return ecdsa_verify(1, issuer_key->qx, issuer_key->qy, d384, 48, cert->sig, cert->sig_len);"}, {"kind": "function", "line": 577, "name": "TLS_FREE", "signature": "done: TLS_FREE(certs);"}, {"kind": "macro", "line": 170, "name": "TLS_SAN_MAX", "signature": "#define TLS_SAN_MAX"}]}, {"doc": "ifndef NET_H define NET_H ========== Fixed slirp configuration (QEMU -nic user) ==========", "id": "net.h", "kind": "module", "label": "net.h", "language": "h", "sha256": "93574f4a48679f7c", "symbol_count": 58, "symbols": [{"kind": "function", "line": 45, "name": "ring", "signature": "* ring (below) is the rtl8139's 8 KB hardware ring, unrelated. */ #define NET_SOCK_RX_BUF 16384 #define NET_RX_RING_SIZE 8192 #define NET_SOCKETS 16 #define NET_DNS_PORT 53 #define NET_EPHEMERAL_MIN 4"}, {"kind": "function", "line": 64, "name": "net_register_symbols", "signature": "void net_register_symbols(void);"}, {"doc": "net_connect / socket fds are NET_FD_BASE + index for Linux syscalls and * 0..NET_SOCKETS-1 for the libc-style symbols. void net_init(void); void net_register_symbols(void); /* Shell commands", "kind": "function", "line": 67, "name": "net_cmd_status", "signature": "void net_cmd_status(void);"}, {"kind": "function", "line": 68, "name": "net_cmd_ping", "signature": "void net_cmd_ping(const char *ip_text);"}, {"kind": "function", "line": 69, "name": "net_cmd_dns", "signature": "void net_cmd_dns(const char *host);"}, {"doc": "net_connect / socket fds are NET_FD_BASE + index for Linux syscalls and * 0..NET_SOCKETS-1 for the libc-style symbols. void net_init(void); void net_register_symbols(void); /* Shell commands void net_cmd_status(void); void net_cmd_ping(const char *ip_text); void net_cmd_dns(const char *host); /* Libc-style API for ET_REL programs", "kind": "function", "line": 72, "name": "net_open", "signature": "int net_open(void);"}, {"kind": "function", "line": 73, "name": "net_connect", "signature": "int net_connect(const char *host, unsigned short port);"}, {"kind": "function", "line": 74, "name": "net_send", "signature": "int net_send(int fd, const char *buf, int len);"}, {"kind": "function", "line": 75, "name": "net_recv", "signature": "int net_recv(int fd, char *buf, int len);"}, {"doc": "void net_init(void); void net_register_symbols(void); /* Shell commands void net_cmd_status(void); void net_cmd_ping(const char *ip_text); void net_cmd_dns(const char *host); /* Libc-style API for ET_REL programs int net_open(void); int net_connect(const char *host, unsigned short port); int net_send(int fd, const char *buf, int len); int net_recv(int fd, char *buf, int len); /* Blocking receive with a deadline: like net_recv, but -1 on timeout.", "kind": "function", "line": 77, "name": "net_recv_timeout", "signature": "int net_recv_timeout(int fd, char *buf, int len, unsigned long timeout_ms);"}, {"kind": "function", "line": 78, "name": "net_close", "signature": "void net_close(int fd);"}, {"doc": "void net_cmd_status(void); void net_cmd_ping(const char *ip_text); void net_cmd_dns(const char *host); /* Libc-style API for ET_REL programs int net_open(void); int net_connect(const char *host, unsigned short port); int net_send(int fd, const char *buf, int len); int net_recv(int fd, char *buf, int len); /* Blocking receive with a deadline: like net_recv, but -1 on timeout. int net_recv_timeout(int fd, char *buf, int len, unsigned long timeout_ms); void net_close(int fd); /* Linux syscall ABI (sockaddr_in layout matches Linux)", "kind": "function", "line": 81, "name": "net_sys_socket", "signature": "long net_sys_socket(long a1, long a2, long a3);"}, {"kind": "function", "line": 82, "name": "net_sys_connect", "signature": "long net_sys_connect(long fd, long sockaddr, long addrlen);"}, {"kind": "function", "line": 83, "name": "net_sys_sendto", "signature": "long net_sys_sendto(long fd, long buf, long len, long flags, long to, long tolen);"}, {"kind": "function", "line": 84, "name": "net_sys_recvfrom", "signature": "long net_sys_recvfrom(long fd, long buf, long len, long flags, long from, long fromlen);"}, {"kind": "function", "line": 85, "name": "net_sys_shutdown", "signature": "long net_sys_shutdown(long fd, long how);"}, {"kind": "function", "line": 86, "name": "net_sys_close", "signature": "long net_sys_close(long fd);"}, {"kind": "function", "line": 87, "name": "net_sys_poll", "signature": "long net_sys_poll(long fds, long nfds, long timeout_ms);"}, {"kind": "function", "line": 88, "name": "net_sys_dns", "signature": "long net_sys_dns(long host);"}, {"doc": "int net_recv_timeout(int fd, char *buf, int len, unsigned long timeout_ms); void net_close(int fd); /* Linux syscall ABI (sockaddr_in layout matches Linux) long net_sys_socket(long a1, long a2, long a3); long net_sys_connect(long fd, long sockaddr, long addrlen); long net_sys_sendto(long fd, long buf, long len, long flags, long to, long tolen); long net_sys_recvfrom(long fd, long buf, long len, long flags, long from, long fromlen); long net_sys_shutdown(long fd, long how); long net_sys_close(long fd); long net_sys_poll(long fds, long nfds, long timeout_ms); long net_sys_dns(long host); /* Milliseconds since net_init (PIT-calibrated TSC).", "kind": "function", "line": 91, "name": "net_time_ms", "signature": "unsigned long net_time_ms(void);"}, {"doc": "Demux entry point the rtl8139 driver (rtl8139.c) calls for every * frame drained from the RX ring; lives in net.c.", "kind": "function", "line": 95, "name": "net_rx_handle_frame", "signature": "void net_rx_handle_frame(const unsigned char *frame, unsigned len);"}, {"kind": "function", "line": 98, "name": "stack", "signature": "* the stack (dropped fragments);"}, {"doc": "TLS sessions attached to socket fds (tls.c); net_sys_close frees them. With MINIOS_NO_TLS the engine is unlinked and tls.h carries the inline * no-op; this declaration would collide with it, so it is omitted. ifndef MINIOS_NO_TLS", "kind": "function", "line": 105, "name": "tls_free_fd", "signature": "void tls_free_fd(int fd);"}, {"doc": "Aggregate RX drop counter shared between the driver (bad frames) and * the stack (dropped fragments); defined in net.c.", "kind": "variable", "line": 99, "name": "net_rx_dropped", "signature": "extern unsigned int net_rx_dropped;"}, {"kind": "macro", "line": 2, "name": "NET_H", "signature": "#define NET_H"}, {"kind": "macro", "line": 5, "name": "NET_IP_ADDR", "signature": "#define NET_IP_ADDR"}, {"kind": "macro", "line": 6, "name": "NET_NETMASK", "signature": "#define NET_NETMASK"}, {"kind": "macro", "line": 7, "name": "NET_GATEWAY", "signature": "#define NET_GATEWAY"}, {"kind": "macro", "line": 8, "name": "NET_DNS", "signature": "#define NET_DNS"}, {"kind": "macro", "line": 11, "name": "NET_PCI_VENDOR", "signature": "#define NET_PCI_VENDOR"}, {"kind": "macro", "line": 12, "name": "NET_PCI_DEVICE", "signature": "#define NET_PCI_DEVICE"}, {"kind": "macro", "line": 18, "name": "NET_RX_BUF_LEN", "signature": "#define NET_RX_BUF_LEN"}, {"kind": "macro", "line": 19, "name": "NET_RX_ALIGN", "signature": "#define NET_RX_ALIGN"}, {"kind": "macro", "line": 22, "name": "NET_RCR", "signature": "#define NET_RCR"}, {"kind": "macro", "line": 23, "name": "NET_MAX_FRAME", "signature": "#define NET_MAX_FRAME"}, {"kind": "macro", "line": 24, "name": "NET_TX_SLOTS", "signature": "#define NET_TX_SLOTS"}, {"kind": "macro", "line": 27, "name": "NET_ETH_ALEN", "signature": "#define NET_ETH_ALEN"}, {"kind": "macro", "line": 28, "name": "NET_ETHERTYPE_IP", "signature": "#define NET_ETHERTYPE_IP"}, {"kind": "macro", "line": 29, "name": "NET_ETHERTYPE_ARP", "signature": "#define NET_ETHERTYPE_ARP"}, {"kind": "macro", "line": 32, "name": "NET_PROTO_ICMP", "signature": "#define NET_PROTO_ICMP"}, {"kind": "macro", "line": 33, "name": "NET_PROTO_TCP", "signature": "#define NET_PROTO_TCP"}, {"kind": "macro", "line": 34, "name": "NET_PROTO_UDP", "signature": "#define NET_PROTO_UDP"}, {"kind": "macro", "line": 37, "name": "NET_ARP_CACHE", "signature": "#define NET_ARP_CACHE"}, {"kind": "macro", "line": 38, "name": "NET_ARP_REQUEST", "signature": "#define NET_ARP_REQUEST"}, {"kind": "macro", "line": 39, "name": "NET_ARP_REPLY", "signature": "#define NET_ARP_REPLY"}, {"kind": "macro", "line": 42, "name": "NET_TCP_MSS", "signature": "#define NET_TCP_MSS"}, {"kind": "macro", "line": 43, "name": "NET_TCP_WINDOW", "signature": "#define NET_TCP_WINDOW"}, {"kind": "macro", "line": 46, "name": "NET_SOCK_RX_BUF", "signature": "#define NET_SOCK_RX_BUF"}, {"kind": "macro", "line": 47, "name": "NET_RX_RING_SIZE", "signature": "#define NET_RX_RING_SIZE"}, {"kind": "macro", "line": 48, "name": "NET_SOCKETS", "signature": "#define NET_SOCKETS"}, {"kind": "macro", "line": 49, "name": "NET_DNS_PORT", "signature": "#define NET_DNS_PORT"}, {"kind": "macro", "line": 50, "name": "NET_EPHEMERAL_MIN", "signature": "#define NET_EPHEMERAL_MIN"}, {"kind": "macro", "line": 51, "name": "NET_DNS_TRIES", "signature": "#define NET_DNS_TRIES"}, {"kind": "macro", "line": 52, "name": "NET_DNS_TMO_MS", "signature": "#define NET_DNS_TMO_MS"}, {"kind": "macro", "line": 53, "name": "NET_CONNECT_TMO_S", "signature": "#define NET_CONNECT_TMO_S"}, {"kind": "macro", "line": 54, "name": "NET_RETRY_MS", "signature": "#define NET_RETRY_MS"}, {"kind": "macro", "line": 55, "name": "NET_TX_MAX", "signature": "#define NET_TX_MAX"}, {"kind": "macro", "line": 58, "name": "NET_FD_BASE", "signature": "#define NET_FD_BASE"}]}, {"doc": "ifndef PCSPK_H define PCSPK_H define PCSPK_VOL_MIN 0 define PCSPK_VOL_MAX 100 define PCSPK_VOL_DEFAULT 100", "id": "pcspk.h", "kind": "module", "label": "pcspk.h", "language": "h", "sha256": "161882dce65ebb8e", "symbol_count": 9, "symbols": [{"doc": "define PCSPK_VOL_MIN 0 define PCSPK_VOL_MAX 100 define PCSPK_VOL_DEFAULT 100", "kind": "function", "line": 7, "name": "pcspk_init", "signature": "void pcspk_init(void);"}, {"kind": "function", "line": 9, "name": "pcspk_tone", "signature": "void pcspk_tone(unsigned freq);"}, {"kind": "function", "line": 10, "name": "pcspk_off", "signature": "void pcspk_off(void);"}, {"kind": "function", "line": 11, "name": "pcspk_set_volume", "signature": "void pcspk_set_volume(unsigned volume);"}, {"kind": "function", "line": 12, "name": "pcspk_get_volume", "signature": "unsigned pcspk_get_volume(void);"}, {"kind": "macro", "line": 2, "name": "PCSPK_H", "signature": "#define PCSPK_H"}, {"kind": "macro", "line": 3, "name": "PCSPK_VOL_MIN", "signature": "#define PCSPK_VOL_MIN"}, {"kind": "macro", "line": 5, "name": "PCSPK_VOL_MAX", "signature": "#define PCSPK_VOL_MAX"}, {"kind": "macro", "line": 6, "name": "PCSPK_VOL_DEFAULT", "signature": "#define PCSPK_VOL_DEFAULT"}]}, {"doc": "ifndef PERCPU_RQ_H define PERCPU_RQ_H Docstring: percpu_rq.h -- Per-CPU runqueues with work stealing.", "id": "percpu_rq.h", "kind": "module", "label": "percpu_rq.h", "language": "h", "sha256": "62f1b2654089ea24", "symbol_count": 14, "symbols": [{"kind": "struct", "line": 50, "name": "percpu_rq_t"}, {"kind": "function", "line": 60, "name": "rq_init", "signature": "void rq_init(void);"}, {"kind": "function", "line": 62, "name": "rq_enqueue", "signature": "void rq_enqueue(int cpu, int pid);"}, {"kind": "function", "line": 63, "name": "rq_pop_local", "signature": "int rq_pop_local(int cpu);"}, {"kind": "function", "line": 64, "name": "rq_steal_once", "signature": "int rq_steal_once(int self_cpu, int *from_cpu);"}, {"kind": "function", "line": 65, "name": "rq_empty", "signature": "int rq_empty(int cpu);"}, {"kind": "function", "line": 66, "name": "rq_should_rescan", "signature": "int rq_should_rescan(int cpu);"}, {"kind": "function", "line": 67, "name": "rq_note_poll", "signature": "void rq_note_poll(int cpu);"}, {"kind": "function", "line": 68, "name": "rq_stats", "signature": "void rq_stats(int cpu, unsigned long *hits, unsigned long *steals, unsigned long *drops);"}, {"kind": "macro", "line": 2, "name": "PERCPU_RQ_H", "signature": "#define PERCPU_RQ_H"}, {"kind": "macro", "line": 44, "name": "RQ_DEPTH", "signature": "#define RQ_DEPTH"}, {"kind": "macro", "line": 46, "name": "RQ_RESCAN_PERIOD", "signature": "#define RQ_RESCAN_PERIOD"}, {"kind": "macro", "line": 47, "name": "RQ_VALIDATE_ATTEMPTS", "signature": "#define RQ_VALIDATE_ATTEMPTS"}, {"kind": "macro", "line": 48, "name": "WQ_NONE_HINT", "signature": "#define WQ_NONE_HINT"}]}, {"id": "progs/asm/aes.s", "kind": "module", "label": "aes.s", "language": "s", "sha256": "69c3164cbf9d4c6b", "symbol_count": 28, "symbols": [{"kind": "function", "line": 3, "name": "aes_rk"}, {"kind": "function", "line": 7, "name": "aes_sb"}, {"kind": "function", "line": 11, "name": "aes_rc"}, {"kind": "function", "line": 15, "name": "aes_st"}, {"kind": "function", "line": 19, "name": "aes_iv"}, {"kind": "function", "line": 23, "name": "aes_read_all"}, {"kind": "function", "line": 240, "name": "aes_write_all"}, {"kind": "function", "line": 349, "name": "aes_has"}, {"kind": "function", "line": 502, "name": "hex_val"}, {"kind": "function", "line": 624, "name": "aes_parse_hex"}, {"kind": "function", "line": 787, "name": "aes_gf_mul"}, {"kind": "function", "line": 888, "name": "aes_xtime"}, {"kind": "function", "line": 937, "name": "aes_rotl8"}, {"kind": "function", "line": 974, "name": "aes_init_tables"}, {"kind": "function", "line": 1203, "name": "aes_key_expand"}, {"kind": "function", "line": 1652, "name": "aes_add_round_key"}, {"kind": "function", "line": 1727, "name": "aes_sub_bytes"}, {"kind": "function", "line": 1780, "name": "aes_shift_rows"}, {"kind": "function", "line": 1999, "name": "aes_mix_columns"}, {"kind": "function", "line": 2472, "name": "aes_cipher"}, {"kind": "function", "line": 2571, "name": "aes_iv_increment"}, {"kind": "function", "line": 2654, "name": "aes_ctr_crypt"}, {"kind": "function", "line": 2797, "name": "aes_hdr_put"}, {"kind": "function", "line": 2912, "name": "aes_hdr_get"}, {"kind": "function", "line": 3065, "name": "aes_tool_name"}, {"kind": "function", "line": 3083, "name": "aes_run"}, {"kind": "function", "line": 3816, "name": "main"}, {"kind": "function", "line": 4124, "name": "_start"}]}, {"id": "progs/asm/cp.s", "kind": "module", "label": "cp.s", "language": "s", "sha256": "34a0ae76f164c7de", "symbol_count": 2, "symbols": [{"kind": "function", "line": 3, "name": "main"}, {"kind": "function", "line": 328, "name": "_start"}]}, {"id": "progs/asm/fib.s", "kind": "module", "label": "fib.s", "language": "s", "sha256": "e4cc2d98e3d0b67f", "symbol_count": 3, "symbols": [{"kind": "function", "line": 3, "name": "fib"}, {"kind": "function", "line": 61, "name": "main"}, {"kind": "function", "line": 82, "name": "_start"}]}, {"id": "progs/asm/freedom.s", "kind": "module", "label": "freedom.s", "language": "s", "sha256": "72dd31539c9163cd", "symbol_count": 92, "symbols": [{"kind": "function", "line": 3, "name": "tls_close"}, {"kind": "function", "line": 24, "name": "f_host"}, {"kind": "function", "line": 28, "name": "f_path"}, {"kind": "function", "line": 32, "name": "f_port"}, {"kind": "function", "line": 36, "name": "f_secure"}, {"kind": "function", "line": 40, "name": "f_loc"}, {"kind": "function", "line": 44, "name": "f_redir"}, {"kind": "function", "line": 48, "name": "f_status"}, {"kind": "function", "line": 52, "name": "f_clen"}, {"kind": "function", "line": 56, "name": "f_has_clen"}, {"kind": "function", "line": 60, "name": "f_chunked"}, {"kind": "function", "line": 64, "name": "f_hdr"}, {"kind": "function", "line": 68, "name": "f_hlen"}, {"kind": "function", "line": 72, "name": "f_tag"}, {"kind": "function", "line": 76, "name": "f_suppress"}, {"kind": "function", "line": 80, "name": "f_comment"}, {"kind": "function", "line": 84, "name": "f_cmdash"}, {"kind": "function", "line": 88, "name": "f_tagn"}, {"kind": "function", "line": 92, "name": "f_tagnlen"}, {"kind": "function", "line": 96, "name": "f_ent"}, {"kind": "function", "line": 100, "name": "f_entlen"}, {"kind": "function", "line": 104, "name": "f_ws"}, {"kind": "function", "line": 108, "name": "f_utbuf"}, {"kind": "function", "line": 112, "name": "f_utlen"}, {"kind": "function", "line": 116, "name": "f_utrem"}, {"kind": "function", "line": 120, "name": "f_attr_on"}, {"kind": "function", "line": 124, "name": "f_waitq"}, {"kind": "function", "line": 128, "name": "f_inval"}, {"kind": "function", "line": 132, "name": "f_inval2"}, {"kind": "function", "line": 136, "name": "f_attr"}, {"kind": "function", "line": 140, "name": "f_attrlen"}, {"kind": "function", "line": 144, "name": "f_val"}, {"kind": "function", "line": 148, "name": "f_vallen"}, {"kind": "function", "line": 152, "name": "f_id"}, {"kind": "function", "line": 156, "name": "f_idlen"}, {"kind": "function", "line": 160, "name": "f_cls"}, {"kind": "function", "line": 164, "name": "f_clslen"}, {"kind": "function", "line": 168, "name": "f_href"}, {"kind": "function", "line": 172, "name": "f_hreflen"}, {"kind": "function", "line": 176, "name": "f_rel_ss"}, {"kind": "function", "line": 180, "name": "f_styleattr"}, {"kind": "function", "line": 184, "name": "f_stylelen"}, {"kind": "function", "line": 188, "name": "f_dump_css"}, {"kind": "function", "line": 192, "name": "f_dump_dom"}, {"kind": "function", "line": 196, "name": "f_mode"}, {"kind": "function", "line": 200, "name": "f_rawcap"}, {"kind": "function", "line": 204, "name": "f_depth"}, {"kind": "function", "line": 208, "name": "f_dom"}, {"kind": "function", "line": 212, "name": "f_domlen"}, {"kind": "function", "line": 216, "name": "f_css"}, {"kind": "function", "line": 220, "name": "f_csslen"}, {"kind": "function", "line": 224, "name": "f_linkhost"}, {"kind": "function", "line": 228, "name": "f_linkpath"}, {"kind": "function", "line": 232, "name": "f_linkn"}, {"kind": "function", "line": 236, "name": "f_cstage"}, {"kind": "function", "line": 240, "name": "f_csize"}, {"kind": "function", "line": 244, "name": "f_crem"}, {"kind": "function", "line": 248, "name": "f_bdone"}, {"kind": "function", "line": 252, "name": "atoi"}, {"kind": "function", "line": 338, "name": "append"}, {"kind": "function", "line": 437, "name": "ci_lower"}, {"kind": "function", "line": 486, "name": "ci_starts"}, {"kind": "function", "line": 559, "name": "ci_eq"}, {"kind": "function", "line": 656, "name": "ci_index"}, {"kind": "function", "line": 716, "name": "looks_like_url"}, {"kind": "function", "line": 790, "name": "has_scheme"}, {"kind": "function", "line": 1065, "name": "make_search"}, {"kind": "function", "line": 1301, "name": "split_url"}, {"kind": "function", "line": 1816, "name": "resolve_redirect"}, {"kind": "function", "line": 2341, "name": "put_ws"}, {"kind": "function", "line": 2387, "name": "put_utf"}, {"kind": "function", "line": 2923, "name": "put_text"}, {"kind": "function", "line": 3026, "name": "put_entity"}, {"kind": "function", "line": 3863, "name": "css_append"}, {"kind": "function", "line": 3934, "name": "css_line"}, {"kind": "function", "line": 3993, "name": "dom_append"}, {"kind": "function", "line": 4064, "name": "dom_space"}, {"kind": "function", "line": 4098, "name": "dom_nl"}, {"kind": "function", "line": 4132, "name": "record_attr"}, {"kind": "function", "line": 4470, "name": "is_void_tag"}, {"kind": "function", "line": 4792, "name": "classify_tag"}, {"kind": "function", "line": 6029, "name": "body_byte"}, {"kind": "function", "line": 7274, "name": "head_line"}, {"kind": "function", "line": 7535, "name": "parse_head"}, {"kind": "function", "line": 7752, "name": "recv_body"}, {"kind": "function", "line": 7813, "name": "send_all"}, {"kind": "function", "line": 7888, "name": "fetch"}, {"kind": "function", "line": 9383, "name": "fetch_css"}, {"kind": "function", "line": 10212, "name": "print_css_dump"}, {"kind": "function", "line": 10312, "name": "print_dom_dump"}, {"kind": "function", "line": 10391, "name": "main"}, {"kind": "function", "line": 11869, "name": "_start"}]}, {"id": "progs/asm/http.s", "kind": "module", "label": "http.s", "language": "s", "sha256": "67b2864f4c7b0446", "symbol_count": 3, "symbols": [{"kind": "function", "line": 3, "name": "atoi"}, {"kind": "function", "line": 89, "name": "main"}, {"kind": "function", "line": 715, "name": "_start"}]}, {"id": "progs/asm/json.s", "kind": "module", "label": "json.s", "language": "s", "sha256": "074c7155d704f2ed", "symbol_count": 32, "symbols": [{"kind": "function", "line": 3, "name": "js_key"}, {"kind": "function", "line": 7, "name": "js_str"}, {"kind": "function", "line": 11, "name": "js_type"}, {"kind": "function", "line": 15, "name": "js_num"}, {"kind": "function", "line": 19, "name": "js_first"}, {"kind": "function", "line": 23, "name": "js_count"}, {"kind": "function", "line": 27, "name": "js_next"}, {"kind": "function", "line": 31, "name": "js_n"}, {"kind": "function", "line": 35, "name": "js_pool"}, {"kind": "function", "line": 39, "name": "js_plen"}, {"kind": "function", "line": 43, "name": "js_src"}, {"kind": "function", "line": 47, "name": "js_pos"}, {"kind": "function", "line": 51, "name": "js_len"}, {"kind": "function", "line": 55, "name": "js_err"}, {"kind": "function", "line": 59, "name": "js_read_all"}, {"kind": "function", "line": 276, "name": "js_new"}, {"kind": "function", "line": 308, "name": "js_skip_ws"}, {"kind": "function", "line": 399, "name": "js_peek"}, {"kind": "function", "line": 439, "name": "js_parse_string"}, {"kind": "function", "line": 853, "name": "js_parse_number"}, {"kind": "function", "line": 949, "name": "js_key_match"}, {"kind": "function", "line": 986, "name": "js_parse_object"}, {"kind": "function", "line": 1338, "name": "js_parse_array"}, {"kind": "function", "line": 1597, "name": "js_parse_value"}, {"kind": "function", "line": 2484, "name": "js_indent"}, {"kind": "function", "line": 2527, "name": "js_print_str"}, {"kind": "function", "line": 2750, "name": "js_print_value"}, {"kind": "function", "line": 3319, "name": "js_find_member"}, {"kind": "function", "line": 3398, "name": "js_array_at"}, {"kind": "function", "line": 3467, "name": "js_query"}, {"kind": "function", "line": 3781, "name": "main"}, {"kind": "function", "line": 4185, "name": "_start"}]}, {"id": "progs/asm/ldhello.s", "kind": "module", "label": "ldhello.s", "language": "s", "sha256": "1eda6c9f40c5f161", "symbol_count": 2, "symbols": [{"kind": "function", "line": 3, "name": "main"}, {"kind": "function", "line": 14, "name": "_start"}]}, {"id": "progs/asm/lz4.s", "kind": "module", "label": "lz4.s", "language": "s", "sha256": "9a66ff1296f5b5b9", "symbol_count": 7, "symbols": [{"kind": "function", "line": 3, "name": "lz4_has"}, {"kind": "function", "line": 156, "name": "lz4_read_all"}, {"kind": "function", "line": 373, "name": "lz4_write_all"}, {"kind": "function", "line": 482, "name": "lz4_compress_file"}, {"kind": "function", "line": 800, "name": "lz4_decompress_file"}, {"kind": "function", "line": 1244, "name": "main"}, {"kind": "function", "line": 1555, "name": "_start"}]}, {"id": "progs/asm/lzss.s", "kind": "module", "label": "lzss.s", "language": "s", "sha256": "403cf1708fe9d57a", "symbol_count": 29, "symbols": [{"kind": "function", "line": 3, "name": "lz_win"}, {"kind": "function", "line": 7, "name": "lz_src"}, {"kind": "function", "line": 11, "name": "lz_srclen"}, {"kind": "function", "line": 15, "name": "lz_srcpos"}, {"kind": "function", "line": 19, "name": "lz_dst"}, {"kind": "function", "line": 23, "name": "lz_dstcap"}, {"kind": "function", "line": 27, "name": "lz_dstlen"}, {"kind": "function", "line": 31, "name": "lz_err"}, {"kind": "function", "line": 35, "name": "lz_buf"}, {"kind": "function", "line": 39, "name": "lz_mask"}, {"kind": "function", "line": 43, "name": "lz_in_getc"}, {"kind": "function", "line": 79, "name": "lz_out_put"}, {"kind": "function", "line": 116, "name": "lz_putbit1"}, {"kind": "function", "line": 174, "name": "lz_putbit0"}, {"kind": "function", "line": 223, "name": "lz_flush_bits"}, {"kind": "function", "line": 251, "name": "lz_out_literal"}, {"kind": "function", "line": 321, "name": "lz_out_pair"}, {"kind": "function", "line": 447, "name": "lz_encode"}, {"kind": "function", "line": 1011, "name": "lz_getbit"}, {"kind": "function", "line": 1131, "name": "lz_decode"}, {"kind": "function", "line": 1474, "name": "lz_hdr_put"}, {"kind": "function", "line": 1589, "name": "lz_hdr_get"}, {"kind": "function", "line": 1742, "name": "lz_has"}, {"kind": "function", "line": 1895, "name": "lz_read_all"}, {"kind": "function", "line": 2112, "name": "lz_write_all"}, {"kind": "function", "line": 2221, "name": "lz_compress"}, {"kind": "function", "line": 2597, "name": "lz_decompress"}, {"kind": "function", "line": 3155, "name": "main"}, {"kind": "function", "line": 3474, "name": "_start"}]}, {"id": "progs/asm/w1.s", "kind": "module", "label": "w1.s", "language": "s", "sha256": "cfd7d7a01734e3a0", "symbol_count": 2, "symbols": [{"kind": "function", "line": 3, "name": "main"}, {"kind": "function", "line": 37, "name": "_start"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: the automap code include include \"deh_main.h\" include \"z_zone.h\" include \"doomkeys.h\" include \"doomdef.h\" include \"st_stuff.h\" include \"p_local.h\" include \"w_wad.h\"", "id": "progs/doomgeneric/am_map.c", "kind": "module", "label": "am_map.c", "language": "c", "sha256": "a59e0217c978c234", "symbol_count": 97, "symbols": [{"kind": "struct", "line": 111, "name": "fpoint_t"}, {"kind": "struct", "line": 116, "name": "fline_t"}, {"kind": "struct", "line": 121, "name": "mpoint_t"}, {"kind": "struct", "line": 126, "name": "mline_t"}, {"kind": "struct", "line": 131, "name": "islope_t"}, {"doc": "Calculates the slope and slope according to the x-axis of a line segment in map coordinates (with the upright y-axis n' all) so that it can be used with the brain-dead drawing stuff.", "kind": "function", "line": 273, "name": "AM_getIslope", "signature": "void\nAM_getIslope\n( mline_t*\tml,\n islope_t*\tis )"}, {"kind": "function", "line": 293, "name": "AM_activateNewScale", "signature": "void AM_activateNewScale(void)"}, {"kind": "function", "line": 308, "name": "AM_saveScaleAndLoc", "signature": "void AM_saveScaleAndLoc(void)"}, {"kind": "function", "line": 319, "name": "AM_restoreScaleAndLoc", "signature": "void AM_restoreScaleAndLoc(void)"}, {"doc": "adds a marker at the current location", "kind": "function", "line": 343, "name": "AM_addMark", "signature": "void AM_addMark(void)"}, {"doc": "Determines bounding box of all vertices, sets global variables controlling zoom range.", "kind": "function", "line": 355, "name": "AM_findMinMaxBoundaries", "signature": "void AM_findMinMaxBoundaries(void)"}, {"kind": "function", "line": 395, "name": "AM_changeWindowLoc", "signature": "void AM_changeWindowLoc(void)"}, {"kind": "function", "line": 424, "name": "AM_initVariables", "signature": "void AM_initVariables(void)"}, {"kind": "function", "line": 480, "name": "AM_loadPics", "signature": "void AM_loadPics(void)"}, {"kind": "function", "line": 492, "name": "AM_unloadPics", "signature": "void AM_unloadPics(void)"}, {"kind": "function", "line": 504, "name": "AM_clearMarks", "signature": "void AM_clearMarks(void)"}, {"doc": "should be called at the start of every level right now, i figure it out myself", "kind": "function", "line": 518, "name": "AM_LevelInit", "signature": "void AM_LevelInit(void)"}, {"kind": "function", "line": 541, "name": "AM_Stop", "signature": "void AM_Stop (void)"}, {"kind": "function", "line": 554, "name": "AM_Start", "signature": "void AM_Start (void)"}, {"doc": "set the window scale to the maximum size", "kind": "function", "line": 573, "name": "AM_minOutWindowScale", "signature": "void AM_minOutWindowScale(void)"}, {"doc": "set the window scale to the minimum size", "kind": "function", "line": 583, "name": "AM_maxOutWindowScale", "signature": "void AM_maxOutWindowScale(void)"}, {"doc": "Handle events (user inputs) in automap mode", "kind": "function", "line": 594, "name": "AM_Responder", "signature": "boolean\nAM_Responder\n( event_t*\tev )"}, {"doc": "Zooming", "kind": "function", "line": 742, "name": "AM_changeWindowScale", "signature": "void AM_changeWindowScale(void)"}, {"kind": "function", "line": 761, "name": "AM_doFollowPlayer", "signature": "void AM_doFollowPlayer(void)"}, {"kind": "function", "line": 785, "name": "AM_updateLightLev", "signature": "void AM_updateLightLev(void)"}, {"doc": "Updates on Game Tick", "kind": "function", "line": 806, "name": "AM_Ticker", "signature": "void AM_Ticker (void)"}, {"doc": "Clear automap frame buffer.", "kind": "function", "line": 834, "name": "AM_clearFB", "signature": "void AM_clearFB(int color)"}, {"doc": "Automap clipping of lines. Based on Cohen-Sutherland clipping algorithm but with a slightly faster reject and precalculated slopes. If the speed is needed, use a hash algorithm to handle the common cases.", "kind": "function", "line": 847, "name": "AM_clipMline", "signature": "boolean\nAM_clipMline\n( mline_t*\tml,\n fline_t*\tfl )"}, {"doc": "Classic Bresenham w/ whatever optimizations needed for speed", "kind": "function", "line": 983, "name": "AM_drawFline", "signature": "void\nAM_drawFline\n( fline_t*\tfl,\n int\t\tcolor )"}, {"doc": "Clip lines, draw visible part sof lines.", "kind": "function", "line": 1061, "name": "AM_drawMline", "signature": "void\nAM_drawMline\n( mline_t*\tml,\n int\t\tcolor )"}, {"doc": "Draws flat (floor/ceiling tile) aligned grid lines.", "kind": "function", "line": 1077, "name": "AM_drawGrid", "signature": "void AM_drawGrid(int color)"}, {"doc": "Determines visible lines, draws them. This is LineDef based, not LineSeg based.", "kind": "function", "line": 1123, "name": "AM_drawWalls", "signature": "void AM_drawWalls(void)"}, {"doc": "Rotation in 2D. Used to rotate player arrow line character.", "kind": "function", "line": 1178, "name": "AM_rotate", "signature": "void\nAM_rotate\n( fixed_t*\tx,\n fixed_t*\ty,\n angle_t\ta )"}, {"kind": "function", "line": 1196, "name": "AM_drawLineCharacter", "signature": "void\nAM_drawLineCharacter\n( mline_t*\tlineguy,\n int\t\tlineguylines,\n fixed_t\tscale,\n angle_t\tang..."}, {"kind": "function", "line": 1245, "name": "AM_drawPlayers", "signature": "void AM_drawPlayers(void)"}, {"kind": "function", "line": 1289, "name": "AM_drawThings", "signature": "void\nAM_drawThings\n( int\tcolors,\n int \tcolorrange)"}, {"kind": "function", "line": 1310, "name": "AM_drawMarks", "signature": "void AM_drawMarks(void)"}, {"kind": "function", "line": 1331, "name": "AM_drawCrosshair", "signature": "void AM_drawCrosshair(int color)"}, {"kind": "function", "line": 1337, "name": "AM_Drawer", "signature": "void AM_Drawer (void)"}, {"doc": "inform the status bar of the change", "kind": "function", "line": 473, "name": "ST_Responder", "signature": "ST_Responder(&st_notify);"}, {"kind": "function", "line": 487, "name": "DEH_snprintf", "signature": "DEH_snprintf(namebuf, 9, \"AMMNUM%d\", i);"}, {"kind": "function", "line": 501, "name": "W_ReleaseLumpName", "signature": "W_ReleaseLumpName(namebuf);"}, {"kind": "function", "line": 685, "name": "M_snprintf", "signature": "M_snprintf(buffer, sizeof(buffer), \"%s %d\", DEH_String(AMSTR_MARKEDSPOT), markpointnum);"}, {"kind": "function", "line": 836, "name": "memset", "signature": "memset(fb, color, f_w*f_h);"}, {"kind": "function", "line": 909, "name": "DOOUTCODE", "signature": "DOOUTCODE(outcode1, fl->a.x, fl->a.y);"}, {"kind": "function", "line": 1006, "name": "DEH_fprintf", "signature": "DEH_fprintf(stderr, \"fuck %d \\r\", fuck++);"}, {"kind": "function", "line": 1028, "name": "PUTDOT", "signature": "PUTDOT(x,y,color);"}, {"kind": "function", "line": 1187, "name": "FixedMul", "signature": "FixedMul(*x,finecosine[a>>ANGLETOFINESHIFT]) - FixedMul(*y,finesine[a>>ANGLETOFINESHIFT]);"}, {"kind": "function", "line": 1352, "name": "V_MarkRect", "signature": "V_MarkRect(f_x, f_y, f_w, f_h);"}, {"kind": "macro", "line": 50, "name": "REDS", "signature": "#define REDS"}, {"kind": "macro", "line": 51, "name": "REDRANGE", "signature": "#define REDRANGE"}, {"kind": "macro", "line": 52, "name": "BLUES", "signature": "#define BLUES"}, {"kind": "macro", "line": 53, "name": "BLUERANGE", "signature": "#define BLUERANGE"}, {"kind": "macro", "line": 54, "name": "GREENS", "signature": "#define GREENS"}, {"kind": "macro", "line": 55, "name": "GREENRANGE", "signature": "#define GREENRANGE"}, {"kind": "macro", "line": 56, "name": "GRAYS", "signature": "#define GRAYS"}, {"kind": "macro", "line": 57, "name": "GRAYSRANGE", "signature": "#define GRAYSRANGE"}, {"kind": "macro", "line": 58, "name": "BROWNS", "signature": "#define BROWNS"}, {"kind": "macro", "line": 59, "name": "BROWNRANGE", "signature": "#define BROWNRANGE"}, {"kind": "macro", "line": 60, "name": "YELLOWS", "signature": "#define YELLOWS"}, {"kind": "macro", "line": 61, "name": "YELLOWRANGE", "signature": "#define YELLOWRANGE"}, {"kind": "macro", "line": 62, "name": "BLACK", "signature": "#define BLACK"}, {"kind": "macro", "line": 63, "name": "WHITE", "signature": "#define WHITE"}, {"kind": "macro", "line": 66, "name": "BACKGROUND", "signature": "#define BACKGROUND"}, {"kind": "macro", "line": 67, "name": "YOURCOLORS", "signature": "#define YOURCOLORS"}, {"kind": "macro", "line": 68, "name": "YOURRANGE", "signature": "#define YOURRANGE"}, {"kind": "macro", "line": 69, "name": "WALLCOLORS", "signature": "#define WALLCOLORS"}, {"kind": "macro", "line": 70, "name": "WALLRANGE", "signature": "#define WALLRANGE"}, {"kind": "macro", "line": 71, "name": "TSWALLCOLORS", "signature": "#define TSWALLCOLORS"}, {"kind": "macro", "line": 72, "name": "TSWALLRANGE", "signature": "#define TSWALLRANGE"}, {"kind": "macro", "line": 73, "name": "FDWALLCOLORS", "signature": "#define FDWALLCOLORS"}, {"kind": "macro", "line": 74, "name": "FDWALLRANGE", "signature": "#define FDWALLRANGE"}, {"kind": "macro", "line": 75, "name": "CDWALLCOLORS", "signature": "#define CDWALLCOLORS"}, {"kind": "macro", "line": 76, "name": "CDWALLRANGE", "signature": "#define CDWALLRANGE"}, {"kind": "macro", "line": 77, "name": "THINGCOLORS", "signature": "#define THINGCOLORS"}, {"kind": "macro", "line": 78, "name": "THINGRANGE", "signature": "#define THINGRANGE"}, {"kind": "macro", "line": 79, "name": "SECRETWALLCOLORS", "signature": "#define SECRETWALLCOLORS"}, {"kind": "macro", "line": 80, "name": "SECRETWALLRANGE", "signature": "#define SECRETWALLRANGE"}, {"kind": "macro", "line": 81, "name": "GRIDCOLORS", "signature": "#define GRIDCOLORS"}, {"kind": "macro", "line": 82, "name": "GRIDRANGE", "signature": "#define GRIDRANGE"}, {"kind": "macro", "line": 83, "name": "XHAIRCOLORS", "signature": "#define XHAIRCOLORS"}, {"kind": "macro", "line": 86, "name": "AM_NUMMARKPOINTS", "signature": "#define AM_NUMMARKPOINTS"}, {"kind": "macro", "line": 90, "name": "INITSCALEMTOF", "signature": "#define INITSCALEMTOF"}, {"kind": "macro", "line": 93, "name": "F_PANINC", "signature": "#define F_PANINC"}, {"kind": "macro", "line": 96, "name": "M_ZOOMIN", "signature": "#define M_ZOOMIN"}, {"kind": "macro", "line": 99, "name": "M_ZOOMOUT", "signature": "#define M_ZOOMOUT"}, {"kind": "macro", "line": 102, "name": "FTOM", "signature": "#define FTOM(x)"}, {"kind": "macro", "line": 103, "name": "MTOF", "signature": "#define MTOF(x)"}, {"kind": "macro", "line": 105, "name": "CXMTOF", "signature": "#define CXMTOF(x)"}, {"kind": "macro", "line": 106, "name": "CYMTOF", "signature": "#define CYMTOF(y)"}, {"kind": "macro", "line": 109, "name": "LINE_NEVERSEE", "signature": "#define LINE_NEVERSEE"}, {"kind": "macro", "line": 143, "name": "R", "signature": "#define R"}, {"kind": "macro", "line": 154, "name": "R", "signature": "#define R"}, {"kind": "macro", "line": 175, "name": "R", "signature": "#define R"}, {"kind": "macro", "line": 183, "name": "R", "signature": "#define R"}, {"kind": "macro", "line": 867, "name": "DOOUTCODE", "signature": "#define DOOUTCODE(oc, mx, my)"}, {"kind": "macro", "line": 1009, "name": "PUTDOT", "signature": "#define PUTDOT(xx,yy,cc)"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: AutoMap module. ifndef __AMMAP_H__ define __AMMAP_H__ include \"d_event.h\" include \"m_cheat.h\" Used by ST StatusBar stuff. define AM_MSGHEADER (('a'<<24)+('m'<<16)) define AM_MSGENTERED (AM_MSGHEADER | ('e'<<8)) define AM_MSGEXITED (AM_MSGHEADER | ('x'<<8))", "id": "progs/doomgeneric/am_map.h", "kind": "module", "label": "am_map.h", "language": "h", "sha256": "26a187e71088f625", "symbol_count": 9, "symbols": [{"doc": "Called by main loop.", "kind": "function", "line": 32, "name": "AM_Responder", "signature": "boolean AM_Responder (event_t* ev);"}, {"doc": "Called by main loop.", "kind": "function", "line": 35, "name": "AM_Ticker", "signature": "void AM_Ticker (void);"}, {"doc": "Called by main loop, called instead of view drawer if automap active.", "kind": "function", "line": 39, "name": "AM_Drawer", "signature": "void AM_Drawer (void);"}, {"doc": "Called to force the automap to quit if the level is completed while it is up.", "kind": "function", "line": 43, "name": "AM_Stop", "signature": "void AM_Stop (void);"}, {"kind": "variable", "line": 44, "name": "cheat_amap", "signature": "extern cheatseq_t cheat_amap;"}, {"kind": "macro", "line": 20, "name": "__AMMAP_H__", "signature": "#define __AMMAP_H__"}, {"kind": "macro", "line": 26, "name": "AM_MSGHEADER", "signature": "#define AM_MSGHEADER"}, {"kind": "macro", "line": 27, "name": "AM_MSGENTERED", "signature": "#define AM_MSGENTERED"}, {"kind": "macro", "line": 28, "name": "AM_MSGEXITED", "signature": "#define AM_MSGEXITED"}]}, {"doc": "config.hin. Generated from configure.ac by autoheader.", "id": "progs/doomgeneric/config.h", "kind": "module", "label": "config.h", "language": "h", "sha256": "07384b139305b90c", "symbol_count": 16, "symbols": [{"kind": "macro", "line": 10, "name": "HAVE_INTTYPES_H", "signature": "#define HAVE_INTTYPES_H"}, {"kind": "macro", "line": 46, "name": "HAVE_STDINT_H", "signature": "#define HAVE_STDINT_H"}, {"kind": "macro", "line": 49, "name": "HAVE_STDLIB_H", "signature": "#define HAVE_STDLIB_H"}, {"kind": "macro", "line": 52, "name": "HAVE_STRINGS_H", "signature": "#define HAVE_STRINGS_H"}, {"kind": "macro", "line": 55, "name": "HAVE_STRING_H", "signature": "#define HAVE_STRING_H"}, {"kind": "macro", "line": 61, "name": "HAVE_SYS_TYPES_H", "signature": "#define HAVE_SYS_TYPES_H"}, {"kind": "macro", "line": 67, "name": "PACKAGE", "signature": "#define PACKAGE"}, {"kind": "macro", "line": 73, "name": "PACKAGE_NAME", "signature": "#define PACKAGE_NAME"}, {"kind": "macro", "line": 76, "name": "PACKAGE_STRING", "signature": "#define PACKAGE_STRING"}, {"kind": "macro", "line": 79, "name": "PACKAGE_TARNAME", "signature": "#define PACKAGE_TARNAME"}, {"kind": "macro", "line": 82, "name": "PACKAGE_URL", "signature": "#define PACKAGE_URL"}, {"kind": "macro", "line": 85, "name": "PACKAGE_VERSION", "signature": "#define PACKAGE_VERSION"}, {"kind": "macro", "line": 88, "name": "PROGRAM_PREFIX", "signature": "#define PROGRAM_PREFIX"}, {"kind": "macro", "line": 91, "name": "STDC_HEADERS", "signature": "#define STDC_HEADERS"}, {"kind": "macro", "line": 94, "name": "VERSION", "signature": "#define VERSION"}, {"kind": "macro", "line": 100, "name": "FILES_DIR", "signature": "#define FILES_DIR"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Printed strings for translation. English language support (default). ifndef __D_ENGLSH__ define __D_ENGLSH__ Printed strings for translation D_Main.C define D_DEVSTR\t\"Development mode ON.\\n\"", "id": "progs/doomgeneric/d_englsh.h", "kind": "module", "label": "d_englsh.h", "language": "h", "sha256": "7c94c53e9ca22494", "symbol_count": 286, "symbols": [{"kind": "macro", "line": 21, "name": "__D_ENGLSH__", "signature": "#define __D_ENGLSH__"}, {"kind": "macro", "line": 30, "name": "D_DEVSTR", "signature": "#define D_DEVSTR"}, {"kind": "macro", "line": 31, "name": "D_CDROM", "signature": "#define D_CDROM"}, {"kind": "macro", "line": 36, "name": "PRESSKEY", "signature": "#define PRESSKEY"}, {"kind": "macro", "line": 37, "name": "PRESSYN", "signature": "#define PRESSYN"}, {"kind": "macro", "line": 38, "name": "QUITMSG", "signature": "#define QUITMSG"}, {"kind": "macro", "line": 39, "name": "LOADNET", "signature": "#define LOADNET"}, {"kind": "macro", "line": 40, "name": "QLOADNET", "signature": "#define QLOADNET"}, {"kind": "macro", "line": 41, "name": "QSAVESPOT", "signature": "#define QSAVESPOT"}, {"kind": "macro", "line": 42, "name": "SAVEDEAD", "signature": "#define SAVEDEAD"}, {"kind": "macro", "line": 43, "name": "QSPROMPT", "signature": "#define QSPROMPT"}, {"kind": "macro", "line": 44, "name": "QLPROMPT", "signature": "#define QLPROMPT"}, {"kind": "macro", "line": 45, "name": "NEWGAME", "signature": "#define NEWGAME"}, {"kind": "macro", "line": 49, "name": "NIGHTMARE", "signature": "#define NIGHTMARE"}, {"kind": "macro", "line": 53, "name": "SWSTRING", "signature": "#define SWSTRING"}, {"kind": "macro", "line": 57, "name": "MSGOFF", "signature": "#define MSGOFF"}, {"kind": "macro", "line": 59, "name": "MSGON", "signature": "#define MSGON"}, {"kind": "macro", "line": 60, "name": "NETEND", "signature": "#define NETEND"}, {"kind": "macro", "line": 61, "name": "ENDGAME", "signature": "#define ENDGAME"}, {"kind": "macro", "line": 62, "name": "DOSY", "signature": "#define DOSY"}, {"kind": "macro", "line": 64, "name": "DETAILHI", "signature": "#define DETAILHI"}, {"kind": "macro", "line": 66, "name": "DETAILLO", "signature": "#define DETAILLO"}, {"kind": "macro", "line": 67, "name": "GAMMALVL0", "signature": "#define GAMMALVL0"}, {"kind": "macro", "line": 68, "name": "GAMMALVL1", "signature": "#define GAMMALVL1"}, {"kind": "macro", "line": 69, "name": "GAMMALVL2", "signature": "#define GAMMALVL2"}, {"kind": "macro", "line": 70, "name": "GAMMALVL3", "signature": "#define GAMMALVL3"}, {"kind": "macro", "line": 71, "name": "GAMMALVL4", "signature": "#define GAMMALVL4"}, {"kind": "macro", "line": 72, "name": "EMPTYSTRING", "signature": "#define EMPTYSTRING"}, {"kind": "macro", "line": 77, "name": "GOTARMOR", "signature": "#define GOTARMOR"}, {"kind": "macro", "line": 78, "name": "GOTMEGA", "signature": "#define GOTMEGA"}, {"kind": "macro", "line": 79, "name": "GOTHTHBONUS", "signature": "#define GOTHTHBONUS"}, {"kind": "macro", "line": 80, "name": "GOTARMBONUS", "signature": "#define GOTARMBONUS"}, {"kind": "macro", "line": 81, "name": "GOTSTIM", "signature": "#define GOTSTIM"}, {"kind": "macro", "line": 82, "name": "GOTMEDINEED", "signature": "#define GOTMEDINEED"}, {"kind": "macro", "line": 83, "name": "GOTMEDIKIT", "signature": "#define GOTMEDIKIT"}, {"kind": "macro", "line": 84, "name": "GOTSUPER", "signature": "#define GOTSUPER"}, {"kind": "macro", "line": 85, "name": "GOTBLUECARD", "signature": "#define GOTBLUECARD"}, {"kind": "macro", "line": 87, "name": "GOTYELWCARD", "signature": "#define GOTYELWCARD"}, {"kind": "macro", "line": 88, "name": "GOTREDCARD", "signature": "#define GOTREDCARD"}, {"kind": "macro", "line": 89, "name": "GOTBLUESKUL", "signature": "#define GOTBLUESKUL"}, {"kind": "macro", "line": 90, "name": "GOTYELWSKUL", "signature": "#define GOTYELWSKUL"}, {"kind": "macro", "line": 91, "name": "GOTREDSKULL", "signature": "#define GOTREDSKULL"}, {"kind": "macro", "line": 92, "name": "GOTINVUL", "signature": "#define GOTINVUL"}, {"kind": "macro", "line": 94, "name": "GOTBERSERK", "signature": "#define GOTBERSERK"}, {"kind": "macro", "line": 95, "name": "GOTINVIS", "signature": "#define GOTINVIS"}, {"kind": "macro", "line": 96, "name": "GOTSUIT", "signature": "#define GOTSUIT"}, {"kind": "macro", "line": 97, "name": "GOTMAP", "signature": "#define GOTMAP"}, {"kind": "macro", "line": 98, "name": "GOTVISOR", "signature": "#define GOTVISOR"}, {"kind": "macro", "line": 99, "name": "GOTMSPHERE", "signature": "#define GOTMSPHERE"}, {"kind": "macro", "line": 100, "name": "GOTCLIP", "signature": "#define GOTCLIP"}, {"kind": "macro", "line": 102, "name": "GOTCLIPBOX", "signature": "#define GOTCLIPBOX"}, {"kind": "macro", "line": 103, "name": "GOTROCKET", "signature": "#define GOTROCKET"}, {"kind": "macro", "line": 104, "name": "GOTROCKBOX", "signature": "#define GOTROCKBOX"}, {"kind": "macro", "line": 105, "name": "GOTCELL", "signature": "#define GOTCELL"}, {"kind": "macro", "line": 106, "name": "GOTCELLBOX", "signature": "#define GOTCELLBOX"}, {"kind": "macro", "line": 107, "name": "GOTSHELLS", "signature": "#define GOTSHELLS"}, {"kind": "macro", "line": 108, "name": "GOTSHELLBOX", "signature": "#define GOTSHELLBOX"}, {"kind": "macro", "line": 109, "name": "GOTBACKPACK", "signature": "#define GOTBACKPACK"}, {"kind": "macro", "line": 110, "name": "GOTBFG9000", "signature": "#define GOTBFG9000"}, {"kind": "macro", "line": 112, "name": "GOTCHAINGUN", "signature": "#define GOTCHAINGUN"}, {"kind": "macro", "line": 113, "name": "GOTCHAINSAW", "signature": "#define GOTCHAINSAW"}, {"kind": "macro", "line": 114, "name": "GOTLAUNCHER", "signature": "#define GOTLAUNCHER"}, {"kind": "macro", "line": 115, "name": "GOTPLASMA", "signature": "#define GOTPLASMA"}, {"kind": "macro", "line": 116, "name": "GOTSHOTGUN", "signature": "#define GOTSHOTGUN"}, {"kind": "macro", "line": 117, "name": "GOTSHOTGUN2", "signature": "#define GOTSHOTGUN2"}, {"kind": "macro", "line": 122, "name": "PD_BLUEO", "signature": "#define PD_BLUEO"}, {"kind": "macro", "line": 123, "name": "PD_REDO", "signature": "#define PD_REDO"}, {"kind": "macro", "line": 124, "name": "PD_YELLOWO", "signature": "#define PD_YELLOWO"}, {"kind": "macro", "line": 125, "name": "PD_BLUEK", "signature": "#define PD_BLUEK"}, {"kind": "macro", "line": 126, "name": "PD_REDK", "signature": "#define PD_REDK"}, {"kind": "macro", "line": 127, "name": "PD_YELLOWK", "signature": "#define PD_YELLOWK"}, {"kind": "macro", "line": 132, "name": "GGSAVED", "signature": "#define GGSAVED"}, {"kind": "macro", "line": 137, "name": "HUSTR_MSGU", "signature": "#define HUSTR_MSGU"}, {"kind": "macro", "line": 138, "name": "HUSTR_E1M1", "signature": "#define HUSTR_E1M1"}, {"kind": "macro", "line": 140, "name": "HUSTR_E1M2", "signature": "#define HUSTR_E1M2"}, {"kind": "macro", "line": 141, "name": "HUSTR_E1M3", "signature": "#define HUSTR_E1M3"}, {"kind": "macro", "line": 142, "name": "HUSTR_E1M4", "signature": "#define HUSTR_E1M4"}, {"kind": "macro", "line": 143, "name": "HUSTR_E1M5", "signature": "#define HUSTR_E1M5"}, {"kind": "macro", "line": 144, "name": "HUSTR_E1M6", "signature": "#define HUSTR_E1M6"}, {"kind": "macro", "line": 145, "name": "HUSTR_E1M7", "signature": "#define HUSTR_E1M7"}, {"kind": "macro", "line": 146, "name": "HUSTR_E1M8", "signature": "#define HUSTR_E1M8"}, {"kind": "macro", "line": 147, "name": "HUSTR_E1M9", "signature": "#define HUSTR_E1M9"}, {"kind": "macro", "line": 148, "name": "HUSTR_E2M1", "signature": "#define HUSTR_E2M1"}, {"kind": "macro", "line": 150, "name": "HUSTR_E2M2", "signature": "#define HUSTR_E2M2"}, {"kind": "macro", "line": 151, "name": "HUSTR_E2M3", "signature": "#define HUSTR_E2M3"}, {"kind": "macro", "line": 152, "name": "HUSTR_E2M4", "signature": "#define HUSTR_E2M4"}, {"kind": "macro", "line": 153, "name": "HUSTR_E2M5", "signature": "#define HUSTR_E2M5"}, {"kind": "macro", "line": 154, "name": "HUSTR_E2M6", "signature": "#define HUSTR_E2M6"}, {"kind": "macro", "line": 155, "name": "HUSTR_E2M7", "signature": "#define HUSTR_E2M7"}, {"kind": "macro", "line": 156, "name": "HUSTR_E2M8", "signature": "#define HUSTR_E2M8"}, {"kind": "macro", "line": 157, "name": "HUSTR_E2M9", "signature": "#define HUSTR_E2M9"}, {"kind": "macro", "line": 158, "name": "HUSTR_E3M1", "signature": "#define HUSTR_E3M1"}, {"kind": "macro", "line": 160, "name": "HUSTR_E3M2", "signature": "#define HUSTR_E3M2"}, {"kind": "macro", "line": 161, "name": "HUSTR_E3M3", "signature": "#define HUSTR_E3M3"}, {"kind": "macro", "line": 162, "name": "HUSTR_E3M4", "signature": "#define HUSTR_E3M4"}, {"kind": "macro", "line": 163, "name": "HUSTR_E3M5", "signature": "#define HUSTR_E3M5"}, {"kind": "macro", "line": 164, "name": "HUSTR_E3M6", "signature": "#define HUSTR_E3M6"}, {"kind": "macro", "line": 165, "name": "HUSTR_E3M7", "signature": "#define HUSTR_E3M7"}, {"kind": "macro", "line": 166, "name": "HUSTR_E3M8", "signature": "#define HUSTR_E3M8"}, {"kind": "macro", "line": 167, "name": "HUSTR_E3M9", "signature": "#define HUSTR_E3M9"}, {"kind": "macro", "line": 168, "name": "HUSTR_E4M1", "signature": "#define HUSTR_E4M1"}, {"kind": "macro", "line": 170, "name": "HUSTR_E4M2", "signature": "#define HUSTR_E4M2"}, {"kind": "macro", "line": 171, "name": "HUSTR_E4M3", "signature": "#define HUSTR_E4M3"}, {"kind": "macro", "line": 172, "name": "HUSTR_E4M4", "signature": "#define HUSTR_E4M4"}, {"kind": "macro", "line": 173, "name": "HUSTR_E4M5", "signature": "#define HUSTR_E4M5"}, {"kind": "macro", "line": 174, "name": "HUSTR_E4M6", "signature": "#define HUSTR_E4M6"}, {"kind": "macro", "line": 175, "name": "HUSTR_E4M7", "signature": "#define HUSTR_E4M7"}, {"kind": "macro", "line": 176, "name": "HUSTR_E4M8", "signature": "#define HUSTR_E4M8"}, {"kind": "macro", "line": 177, "name": "HUSTR_E4M9", "signature": "#define HUSTR_E4M9"}, {"kind": "macro", "line": 178, "name": "HUSTR_1", "signature": "#define HUSTR_1"}, {"kind": "macro", "line": 180, "name": "HUSTR_2", "signature": "#define HUSTR_2"}, {"kind": "macro", "line": 181, "name": "HUSTR_3", "signature": "#define HUSTR_3"}, {"kind": "macro", "line": 182, "name": "HUSTR_4", "signature": "#define HUSTR_4"}, {"kind": "macro", "line": 183, "name": "HUSTR_5", "signature": "#define HUSTR_5"}, {"kind": "macro", "line": 184, "name": "HUSTR_6", "signature": "#define HUSTR_6"}, {"kind": "macro", "line": 185, "name": "HUSTR_7", "signature": "#define HUSTR_7"}, {"kind": "macro", "line": 186, "name": "HUSTR_8", "signature": "#define HUSTR_8"}, {"kind": "macro", "line": 187, "name": "HUSTR_9", "signature": "#define HUSTR_9"}, {"kind": "macro", "line": 188, "name": "HUSTR_10", "signature": "#define HUSTR_10"}, {"kind": "macro", "line": 189, "name": "HUSTR_11", "signature": "#define HUSTR_11"}, {"kind": "macro", "line": 190, "name": "HUSTR_12", "signature": "#define HUSTR_12"}, {"kind": "macro", "line": 192, "name": "HUSTR_13", "signature": "#define HUSTR_13"}, {"kind": "macro", "line": 193, "name": "HUSTR_14", "signature": "#define HUSTR_14"}, {"kind": "macro", "line": 194, "name": "HUSTR_15", "signature": "#define HUSTR_15"}, {"kind": "macro", "line": 195, "name": "HUSTR_16", "signature": "#define HUSTR_16"}, {"kind": "macro", "line": 196, "name": "HUSTR_17", "signature": "#define HUSTR_17"}, {"kind": "macro", "line": 197, "name": "HUSTR_18", "signature": "#define HUSTR_18"}, {"kind": "macro", "line": 198, "name": "HUSTR_19", "signature": "#define HUSTR_19"}, {"kind": "macro", "line": 199, "name": "HUSTR_20", "signature": "#define HUSTR_20"}, {"kind": "macro", "line": 200, "name": "HUSTR_21", "signature": "#define HUSTR_21"}, {"kind": "macro", "line": 202, "name": "HUSTR_22", "signature": "#define HUSTR_22"}, {"kind": "macro", "line": 203, "name": "HUSTR_23", "signature": "#define HUSTR_23"}, {"kind": "macro", "line": 204, "name": "HUSTR_24", "signature": "#define HUSTR_24"}, {"kind": "macro", "line": 205, "name": "HUSTR_25", "signature": "#define HUSTR_25"}, {"kind": "macro", "line": 206, "name": "HUSTR_26", "signature": "#define HUSTR_26"}, {"kind": "macro", "line": 207, "name": "HUSTR_27", "signature": "#define HUSTR_27"}, {"kind": "macro", "line": 208, "name": "HUSTR_28", "signature": "#define HUSTR_28"}, {"kind": "macro", "line": 209, "name": "HUSTR_29", "signature": "#define HUSTR_29"}, {"kind": "macro", "line": 210, "name": "HUSTR_30", "signature": "#define HUSTR_30"}, {"kind": "macro", "line": 211, "name": "HUSTR_31", "signature": "#define HUSTR_31"}, {"kind": "macro", "line": 213, "name": "HUSTR_32", "signature": "#define HUSTR_32"}, {"kind": "macro", "line": 214, "name": "PHUSTR_1", "signature": "#define PHUSTR_1"}, {"kind": "macro", "line": 216, "name": "PHUSTR_2", "signature": "#define PHUSTR_2"}, {"kind": "macro", "line": 217, "name": "PHUSTR_3", "signature": "#define PHUSTR_3"}, {"kind": "macro", "line": 218, "name": "PHUSTR_4", "signature": "#define PHUSTR_4"}, {"kind": "macro", "line": 219, "name": "PHUSTR_5", "signature": "#define PHUSTR_5"}, {"kind": "macro", "line": 220, "name": "PHUSTR_6", "signature": "#define PHUSTR_6"}, {"kind": "macro", "line": 221, "name": "PHUSTR_7", "signature": "#define PHUSTR_7"}, {"kind": "macro", "line": 222, "name": "PHUSTR_8", "signature": "#define PHUSTR_8"}, {"kind": "macro", "line": 223, "name": "PHUSTR_9", "signature": "#define PHUSTR_9"}, {"kind": "macro", "line": 224, "name": "PHUSTR_10", "signature": "#define PHUSTR_10"}, {"kind": "macro", "line": 225, "name": "PHUSTR_11", "signature": "#define PHUSTR_11"}, {"kind": "macro", "line": 226, "name": "PHUSTR_12", "signature": "#define PHUSTR_12"}, {"kind": "macro", "line": 228, "name": "PHUSTR_13", "signature": "#define PHUSTR_13"}, {"kind": "macro", "line": 229, "name": "PHUSTR_14", "signature": "#define PHUSTR_14"}, {"kind": "macro", "line": 230, "name": "PHUSTR_15", "signature": "#define PHUSTR_15"}, {"kind": "macro", "line": 231, "name": "PHUSTR_16", "signature": "#define PHUSTR_16"}, {"kind": "macro", "line": 232, "name": "PHUSTR_17", "signature": "#define PHUSTR_17"}, {"kind": "macro", "line": 233, "name": "PHUSTR_18", "signature": "#define PHUSTR_18"}, {"kind": "macro", "line": 234, "name": "PHUSTR_19", "signature": "#define PHUSTR_19"}, {"kind": "macro", "line": 235, "name": "PHUSTR_20", "signature": "#define PHUSTR_20"}, {"kind": "macro", "line": 236, "name": "PHUSTR_21", "signature": "#define PHUSTR_21"}, {"kind": "macro", "line": 238, "name": "PHUSTR_22", "signature": "#define PHUSTR_22"}, {"kind": "macro", "line": 239, "name": "PHUSTR_23", "signature": "#define PHUSTR_23"}, {"kind": "macro", "line": 240, "name": "PHUSTR_24", "signature": "#define PHUSTR_24"}, {"kind": "macro", "line": 241, "name": "PHUSTR_25", "signature": "#define PHUSTR_25"}, {"kind": "macro", "line": 242, "name": "PHUSTR_26", "signature": "#define PHUSTR_26"}, {"kind": "macro", "line": 243, "name": "PHUSTR_27", "signature": "#define PHUSTR_27"}, {"kind": "macro", "line": 244, "name": "PHUSTR_28", "signature": "#define PHUSTR_28"}, {"kind": "macro", "line": 245, "name": "PHUSTR_29", "signature": "#define PHUSTR_29"}, {"kind": "macro", "line": 246, "name": "PHUSTR_30", "signature": "#define PHUSTR_30"}, {"kind": "macro", "line": 247, "name": "PHUSTR_31", "signature": "#define PHUSTR_31"}, {"kind": "macro", "line": 249, "name": "PHUSTR_32", "signature": "#define PHUSTR_32"}, {"kind": "macro", "line": 250, "name": "THUSTR_1", "signature": "#define THUSTR_1"}, {"kind": "macro", "line": 252, "name": "THUSTR_2", "signature": "#define THUSTR_2"}, {"kind": "macro", "line": 253, "name": "THUSTR_3", "signature": "#define THUSTR_3"}, {"kind": "macro", "line": 254, "name": "THUSTR_4", "signature": "#define THUSTR_4"}, {"kind": "macro", "line": 255, "name": "THUSTR_5", "signature": "#define THUSTR_5"}, {"kind": "macro", "line": 256, "name": "THUSTR_6", "signature": "#define THUSTR_6"}, {"kind": "macro", "line": 257, "name": "THUSTR_7", "signature": "#define THUSTR_7"}, {"kind": "macro", "line": 258, "name": "THUSTR_8", "signature": "#define THUSTR_8"}, {"kind": "macro", "line": 259, "name": "THUSTR_9", "signature": "#define THUSTR_9"}, {"kind": "macro", "line": 260, "name": "THUSTR_10", "signature": "#define THUSTR_10"}, {"kind": "macro", "line": 261, "name": "THUSTR_11", "signature": "#define THUSTR_11"}, {"kind": "macro", "line": 262, "name": "THUSTR_12", "signature": "#define THUSTR_12"}, {"kind": "macro", "line": 264, "name": "THUSTR_13", "signature": "#define THUSTR_13"}, {"kind": "macro", "line": 265, "name": "THUSTR_14", "signature": "#define THUSTR_14"}, {"kind": "macro", "line": 266, "name": "THUSTR_15", "signature": "#define THUSTR_15"}, {"kind": "macro", "line": 267, "name": "THUSTR_16", "signature": "#define THUSTR_16"}, {"kind": "macro", "line": 268, "name": "THUSTR_17", "signature": "#define THUSTR_17"}, {"kind": "macro", "line": 269, "name": "THUSTR_18", "signature": "#define THUSTR_18"}, {"kind": "macro", "line": 270, "name": "THUSTR_19", "signature": "#define THUSTR_19"}, {"kind": "macro", "line": 271, "name": "THUSTR_20", "signature": "#define THUSTR_20"}, {"kind": "macro", "line": 272, "name": "THUSTR_21", "signature": "#define THUSTR_21"}, {"kind": "macro", "line": 274, "name": "THUSTR_22", "signature": "#define THUSTR_22"}, {"kind": "macro", "line": 275, "name": "THUSTR_23", "signature": "#define THUSTR_23"}, {"kind": "macro", "line": 276, "name": "THUSTR_24", "signature": "#define THUSTR_24"}, {"kind": "macro", "line": 277, "name": "THUSTR_25", "signature": "#define THUSTR_25"}, {"kind": "macro", "line": 278, "name": "THUSTR_26", "signature": "#define THUSTR_26"}, {"kind": "macro", "line": 279, "name": "THUSTR_27", "signature": "#define THUSTR_27"}, {"kind": "macro", "line": 280, "name": "THUSTR_28", "signature": "#define THUSTR_28"}, {"kind": "macro", "line": 281, "name": "THUSTR_29", "signature": "#define THUSTR_29"}, {"kind": "macro", "line": 282, "name": "THUSTR_30", "signature": "#define THUSTR_30"}, {"kind": "macro", "line": 283, "name": "THUSTR_31", "signature": "#define THUSTR_31"}, {"kind": "macro", "line": 285, "name": "THUSTR_32", "signature": "#define THUSTR_32"}, {"kind": "macro", "line": 286, "name": "HUSTR_CHATMACRO1", "signature": "#define HUSTR_CHATMACRO1"}, {"kind": "macro", "line": 288, "name": "HUSTR_CHATMACRO2", "signature": "#define HUSTR_CHATMACRO2"}, {"kind": "macro", "line": 289, "name": "HUSTR_CHATMACRO3", "signature": "#define HUSTR_CHATMACRO3"}, {"kind": "macro", "line": 290, "name": "HUSTR_CHATMACRO4", "signature": "#define HUSTR_CHATMACRO4"}, {"kind": "macro", "line": 291, "name": "HUSTR_CHATMACRO5", "signature": "#define HUSTR_CHATMACRO5"}, {"kind": "macro", "line": 292, "name": "HUSTR_CHATMACRO6", "signature": "#define HUSTR_CHATMACRO6"}, {"kind": "macro", "line": 293, "name": "HUSTR_CHATMACRO7", "signature": "#define HUSTR_CHATMACRO7"}, {"kind": "macro", "line": 294, "name": "HUSTR_CHATMACRO8", "signature": "#define HUSTR_CHATMACRO8"}, {"kind": "macro", "line": 295, "name": "HUSTR_CHATMACRO9", "signature": "#define HUSTR_CHATMACRO9"}, {"kind": "macro", "line": 296, "name": "HUSTR_CHATMACRO0", "signature": "#define HUSTR_CHATMACRO0"}, {"kind": "macro", "line": 297, "name": "HUSTR_TALKTOSELF1", "signature": "#define HUSTR_TALKTOSELF1"}, {"kind": "macro", "line": 299, "name": "HUSTR_TALKTOSELF2", "signature": "#define HUSTR_TALKTOSELF2"}, {"kind": "macro", "line": 300, "name": "HUSTR_TALKTOSELF3", "signature": "#define HUSTR_TALKTOSELF3"}, {"kind": "macro", "line": 301, "name": "HUSTR_TALKTOSELF4", "signature": "#define HUSTR_TALKTOSELF4"}, {"kind": "macro", "line": 302, "name": "HUSTR_TALKTOSELF5", "signature": "#define HUSTR_TALKTOSELF5"}, {"kind": "macro", "line": 303, "name": "HUSTR_MESSAGESENT", "signature": "#define HUSTR_MESSAGESENT"}, {"kind": "macro", "line": 308, "name": "HUSTR_PLRGREEN", "signature": "#define HUSTR_PLRGREEN"}, {"kind": "macro", "line": 310, "name": "HUSTR_PLRINDIGO", "signature": "#define HUSTR_PLRINDIGO"}, {"kind": "macro", "line": 311, "name": "HUSTR_PLRBROWN", "signature": "#define HUSTR_PLRBROWN"}, {"kind": "macro", "line": 312, "name": "HUSTR_PLRRED", "signature": "#define HUSTR_PLRRED"}, {"kind": "macro", "line": 313, "name": "HUSTR_KEYGREEN", "signature": "#define HUSTR_KEYGREEN"}, {"kind": "macro", "line": 315, "name": "HUSTR_KEYINDIGO", "signature": "#define HUSTR_KEYINDIGO"}, {"kind": "macro", "line": 316, "name": "HUSTR_KEYBROWN", "signature": "#define HUSTR_KEYBROWN"}, {"kind": "macro", "line": 317, "name": "HUSTR_KEYRED", "signature": "#define HUSTR_KEYRED"}, {"kind": "macro", "line": 322, "name": "AMSTR_FOLLOWON", "signature": "#define AMSTR_FOLLOWON"}, {"kind": "macro", "line": 324, "name": "AMSTR_FOLLOWOFF", "signature": "#define AMSTR_FOLLOWOFF"}, {"kind": "macro", "line": 325, "name": "AMSTR_GRIDON", "signature": "#define AMSTR_GRIDON"}, {"kind": "macro", "line": 327, "name": "AMSTR_GRIDOFF", "signature": "#define AMSTR_GRIDOFF"}, {"kind": "macro", "line": 328, "name": "AMSTR_MARKEDSPOT", "signature": "#define AMSTR_MARKEDSPOT"}, {"kind": "macro", "line": 330, "name": "AMSTR_MARKSCLEARED", "signature": "#define AMSTR_MARKSCLEARED"}, {"kind": "macro", "line": 335, "name": "STSTR_MUS", "signature": "#define STSTR_MUS"}, {"kind": "macro", "line": 337, "name": "STSTR_NOMUS", "signature": "#define STSTR_NOMUS"}, {"kind": "macro", "line": 338, "name": "STSTR_DQDON", "signature": "#define STSTR_DQDON"}, {"kind": "macro", "line": 339, "name": "STSTR_DQDOFF", "signature": "#define STSTR_DQDOFF"}, {"kind": "macro", "line": 340, "name": "STSTR_KFAADDED", "signature": "#define STSTR_KFAADDED"}, {"kind": "macro", "line": 342, "name": "STSTR_FAADDED", "signature": "#define STSTR_FAADDED"}, {"kind": "macro", "line": 343, "name": "STSTR_NCON", "signature": "#define STSTR_NCON"}, {"kind": "macro", "line": 345, "name": "STSTR_NCOFF", "signature": "#define STSTR_NCOFF"}, {"kind": "macro", "line": 346, "name": "STSTR_BEHOLD", "signature": "#define STSTR_BEHOLD"}, {"kind": "macro", "line": 348, "name": "STSTR_BEHOLDX", "signature": "#define STSTR_BEHOLDX"}, {"kind": "macro", "line": 349, "name": "STSTR_CHOPPERS", "signature": "#define STSTR_CHOPPERS"}, {"kind": "macro", "line": 351, "name": "STSTR_CLEV", "signature": "#define STSTR_CLEV"}, {"kind": "macro", "line": 356, "name": "E1TEXT", "signature": "#define E1TEXT"}, {"kind": "macro", "line": 372, "name": "E2TEXT", "signature": "#define E2TEXT"}, {"kind": "macro", "line": 392, "name": "E3TEXT", "signature": "#define E3TEXT"}, {"kind": "macro", "line": 412, "name": "E4TEXT", "signature": "#define E4TEXT"}, {"kind": "macro", "line": 434, "name": "C1TEXT", "signature": "#define C1TEXT"}, {"kind": "macro", "line": 450, "name": "C2TEXT", "signature": "#define C2TEXT"}, {"kind": "macro", "line": 472, "name": "C3TEXT", "signature": "#define C3TEXT"}, {"kind": "macro", "line": 486, "name": "C4TEXT", "signature": "#define C4TEXT"}, {"kind": "macro", "line": 507, "name": "C5TEXT", "signature": "#define C5TEXT"}, {"kind": "macro", "line": 517, "name": "C6TEXT", "signature": "#define C6TEXT"}, {"kind": "macro", "line": 525, "name": "P1TEXT", "signature": "#define P1TEXT"}, {"kind": "macro", "line": 542, "name": "P2TEXT", "signature": "#define P2TEXT"}, {"kind": "macro", "line": 553, "name": "P3TEXT", "signature": "#define P3TEXT"}, {"kind": "macro", "line": 567, "name": "P4TEXT", "signature": "#define P4TEXT"}, {"kind": "macro", "line": 583, "name": "P5TEXT", "signature": "#define P5TEXT"}, {"kind": "macro", "line": 591, "name": "P6TEXT", "signature": "#define P6TEXT"}, {"kind": "macro", "line": 596, "name": "T1TEXT", "signature": "#define T1TEXT"}, {"kind": "macro", "line": 611, "name": "T2TEXT", "signature": "#define T2TEXT"}, {"kind": "macro", "line": 623, "name": "T3TEXT", "signature": "#define T3TEXT"}, {"kind": "macro", "line": 634, "name": "T4TEXT", "signature": "#define T4TEXT"}, {"kind": "macro", "line": 647, "name": "T5TEXT", "signature": "#define T5TEXT"}, {"kind": "macro", "line": 655, "name": "T6TEXT", "signature": "#define T6TEXT"}, {"kind": "macro", "line": 674, "name": "CC_ZOMBIE", "signature": "#define CC_ZOMBIE"}, {"kind": "macro", "line": 675, "name": "CC_SHOTGUN", "signature": "#define CC_SHOTGUN"}, {"kind": "macro", "line": 676, "name": "CC_HEAVY", "signature": "#define CC_HEAVY"}, {"kind": "macro", "line": 677, "name": "CC_IMP", "signature": "#define CC_IMP"}, {"kind": "macro", "line": 678, "name": "CC_DEMON", "signature": "#define CC_DEMON"}, {"kind": "macro", "line": 679, "name": "CC_LOST", "signature": "#define CC_LOST"}, {"kind": "macro", "line": 680, "name": "CC_CACO", "signature": "#define CC_CACO"}, {"kind": "macro", "line": 681, "name": "CC_HELL", "signature": "#define CC_HELL"}, {"kind": "macro", "line": 682, "name": "CC_BARON", "signature": "#define CC_BARON"}, {"kind": "macro", "line": 683, "name": "CC_ARACH", "signature": "#define CC_ARACH"}, {"kind": "macro", "line": 684, "name": "CC_PAIN", "signature": "#define CC_PAIN"}, {"kind": "macro", "line": 685, "name": "CC_REVEN", "signature": "#define CC_REVEN"}, {"kind": "macro", "line": 686, "name": "CC_MANCU", "signature": "#define CC_MANCU"}, {"kind": "macro", "line": 687, "name": "CC_ARCH", "signature": "#define CC_ARCH"}, {"kind": "macro", "line": 688, "name": "CC_SPIDER", "signature": "#define CC_SPIDER"}, {"kind": "macro", "line": 689, "name": "CC_CYBER", "signature": "#define CC_CYBER"}, {"kind": "macro", "line": 690, "name": "CC_HERO", "signature": "#define CC_HERO"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Event handling. Events are asynchronous inputs generally generated by the game user. Events can be discarded if no responder claims them include include \"d_event.h\" define MAXEVENTS 64", "id": "progs/doomgeneric/d_event.c", "kind": "module", "label": "d_event.c", "language": "c", "sha256": "e59c83a837704ef9", "symbol_count": 3, "symbols": [{"doc": "D_PostEvent Called by the I/O functions when input is detected", "kind": "function", "line": 35, "name": "D_PostEvent", "signature": "void D_PostEvent (event_t* ev)"}, {"doc": "Read an event from the queue.", "kind": "function", "line": 42, "name": "D_PopEvent", "signature": "event_t *D_PopEvent(void)"}, {"kind": "macro", "line": 24, "name": "MAXEVENTS", "signature": "#define MAXEVENTS"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: ifndef __D_EVENT__ define __D_EVENT__ include \"doomtype.h\" Event handling.", "id": "progs/doomgeneric/d_event.h", "kind": "module", "label": "d_event.h", "language": "h", "sha256": "f4b033c0a3451002", "symbol_count": 4, "symbols": [{"doc": "Event structure.", "kind": "struct", "line": 42, "name": "event_t"}, {"doc": "Called by IO functions when input is detected.", "kind": "function", "line": 129, "name": "D_PostEvent", "signature": "void D_PostEvent (event_t *ev);"}, {"doc": "Read an event from the event queue", "kind": "function", "line": 132, "name": "D_PopEvent", "signature": "event_t *D_PopEvent(void);"}, {"kind": "macro", "line": 21, "name": "__D_EVENT__", "signature": "#define __D_EVENT__"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: We are referring to sprite numbers. include \"info.h\" include \"d_items.h\" PSPRITE ACTIONS for waepons. This struct controls the weapon animations. Each entry is: ammo/amunition type", "id": "progs/doomgeneric/d_items.c", "kind": "module", "label": "d_items.c", "language": "c", "sha256": "71175f526df33793", "symbol_count": 0, "symbols": []}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Items: key cards, artifacts, weapon, ammunition. ifndef __D_ITEMS__ define __D_ITEMS__ include \"doomdef.h\" Weapon info: sprite frames, ammunition use.", "id": "progs/doomgeneric/d_items.h", "kind": "module", "label": "d_items.h", "language": "h", "sha256": "b67eacb260e05ba0", "symbol_count": 3, "symbols": [{"doc": "Weapon info: sprite frames, ammunition use.", "kind": "struct", "line": 28, "name": "weaponinfo_t"}, {"kind": "variable", "line": 38, "name": "weaponinfo", "signature": "extern weaponinfo_t weaponinfo[NUMWEAPONS];"}, {"kind": "macro", "line": 21, "name": "__D_ITEMS__", "signature": "#define __D_ITEMS__"}]}, {"doc": "Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Search for and locate an IWAD file, and initialize according to the IWAD type. include include include include include \"config.h\" include \"deh_str.h\" include \"doomkeys.h\" include \"d_iwad.h\" include \"i_system.h\" include \"m_argv.h\" include \"m_config.h\"", "id": "progs/doomgeneric/d_iwad.c", "kind": "module", "label": "d_iwad.c", "language": "c", "sha256": "d63be8b7c1b43c8c", "symbol_count": 35, "symbols": [{"kind": "struct", "line": 83, "name": "registry_value_t"}, {"kind": "function", "line": 63, "name": "AddIWADDir", "signature": "static void AddIWADDir(char *dir)"}, {"kind": "function", "line": 191, "name": "GetRegistryString", "signature": "static char *GetRegistryString(registry_value_t *reg_val)"}, {"doc": "Check for the uninstall strings from the CD versions", "kind": "function", "line": 235, "name": "CheckUninstallStrings", "signature": "static void CheckUninstallStrings(void)"}, {"doc": "Check for Doom: Collector's Edition", "kind": "function", "line": 269, "name": "CheckCollectorsEdition", "signature": "static void CheckCollectorsEdition(void)"}, {"doc": "Check for Doom downloaded via Steam", "kind": "function", "line": 296, "name": "CheckSteamEdition", "signature": "static void CheckSteamEdition(void)"}, {"doc": "The BFG edition ships with a full set of GUS patches. If we find them, we can autoconfigure to use them.", "kind": "function", "line": 323, "name": "CheckSteamGUSPatches", "signature": "static void CheckSteamGUSPatches(void)"}, {"doc": "Default install directories for DOS Doom", "kind": "function", "line": 363, "name": "CheckDOSDefaults", "signature": "static void CheckDOSDefaults(void)"}, {"doc": "Returns true if the specified path is a path to a file of the specified name.", "kind": "function", "line": 390, "name": "DirIsFile", "signature": "static boolean DirIsFile(char *path, char *filename)"}, {"doc": "Check if the specified directory contains the specified IWAD file, returning the full path to the IWAD if found, or NULL if not found.", "kind": "function", "line": 407, "name": "CheckDirectoryHasIWAD", "signature": "static char *CheckDirectoryHasIWAD(char *dir, char *iwadname)"}, {"doc": "Search a directory to try to find an IWAD Returns the location of the IWAD if found, otherwise NULL.", "kind": "function", "line": 448, "name": "SearchDirectoryForIWAD", "signature": "static char *SearchDirectoryForIWAD(char *dir, int mask, GameMission_t *mission)"}, {"doc": "When given an IWAD with the '-iwad' parameter, attempt to identify it by its name.", "kind": "function", "line": 476, "name": "IdentifyIWADByName", "signature": "static GameMission_t IdentifyIWADByName(char *name, int mask)"}, {"doc": "if ORIGCODE Add directories from the list in the DOOMWADPATH environment variable.", "kind": "function", "line": 517, "name": "AddDoomWadPath", "signature": "static void AddDoomWadPath(void)"}, {"doc": "Build a list of IWAD files", "kind": "function", "line": 568, "name": "BuildIWADDirList", "signature": "static void BuildIWADDirList(void)"}, {"doc": "Searches WAD search paths for an WAD with a specific filename.", "kind": "function", "line": 629, "name": "D_FindWADByName", "signature": "char *D_FindWADByName(char *name)"}, {"doc": "D_TryWADByName Searches for a WAD by its filename, or passes through the filename if not found.", "kind": "function", "line": 680, "name": "D_TryFindWADByName", "signature": "char *D_TryFindWADByName(char *filename)"}, {"doc": "FindIWAD Checks availability of IWAD files by name, to determine whether registered/commercial features should be executed (notably loading PWADs).", "kind": "function", "line": 703, "name": "D_FindIWAD", "signature": "char *D_FindIWAD(int mask, GameMission_t *mission)"}, {"doc": "Find all IWADs in the IWAD search path matching the given mask.", "kind": "function", "line": 756, "name": "D_FindAllIWADs", "signature": "const iwad_t **D_FindAllIWADs(int mask)"}, {"doc": "Get the IWAD name used for savegames.", "kind": "function", "line": 795, "name": "D_SaveGameIWADName", "signature": "char *D_SaveGameIWADName(GameMission_t gamemission)"}, {"kind": "function", "line": 819, "name": "D_SuggestIWADName", "signature": "char *D_SuggestIWADName(GameMission_t mission, GameMode_t mode)"}, {"kind": "function", "line": 834, "name": "D_SuggestGameName", "signature": "char *D_SuggestGameName(GameMission_t mission, GameMode_t mode)"}, {"kind": "function", "line": 222, "name": "free", "signature": "free(result);"}, {"doc": "Close the key", "kind": "function", "line": 228, "name": "RegCloseKey", "signature": "RegCloseKey(key);"}, {"kind": "function", "line": 347, "name": "M_snprintf", "signature": "M_snprintf(patch_path, len, \"%s\\\\%s\\\\ACBASS.PAT\", install_path, STEAM_BFG_GUS_PATCHES);"}, {"kind": "function", "line": 355, "name": "M_SetVariable", "signature": "M_SetVariable(\"gus_patch_path\", patch_path);"}, {"kind": "function", "line": 417, "name": "strdup", "signature": "return strdup(dir);"}, {"kind": "function", "line": 431, "name": "fprintf", "signature": "fprintf(stdout, \"Trying IWAD file:'%s'\\n\", filename);"}, {"kind": "function", "line": 731, "name": "I_Error", "signature": "I_Error(\"IWAD file '%s' not found!\", iwadfile);"}, {"doc": "Search through the list and look for an IWAD", "kind": "function", "line": 739, "name": "printf", "signature": "printf(\"-iwad not specified, trying a few iwad names\\n\");"}, {"kind": "macro", "line": 57, "name": "MAX_IWAD_DIRS", "signature": "#define MAX_IWAD_DIRS"}, {"kind": "macro", "line": 79, "name": "WIN32_LEAN_AND_MEAN", "signature": "#define WIN32_LEAN_AND_MEAN"}, {"kind": "macro", "line": 89, "name": "UNINSTALLER_STRING", "signature": "#define UNINSTALLER_STRING"}, {"kind": "macro", "line": 102, "name": "SOFTWARE_KEY", "signature": "#define SOFTWARE_KEY"}, {"kind": "macro", "line": 104, "name": "SOFTWARE_KEY", "signature": "#define SOFTWARE_KEY"}, {"kind": "macro", "line": 188, "name": "STEAM_BFG_GUS_PATCHES", "signature": "#define STEAM_BFG_GUS_PATCHES"}]}, {"doc": "Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Find IWAD and initialize according to IWAD type. ifndef __D_IWAD__ define __D_IWAD__ include \"d_mode.h\" define IWAD_MASK_DOOM ((1 << doom) \\", "id": "progs/doomgeneric/d_iwad.h", "kind": "module", "label": "d_iwad.h", "language": "h", "sha256": "e550b9b6dc580a9e", "symbol_count": 14, "symbols": [{"kind": "struct", "line": 34, "name": "iwad_t"}, {"kind": "function", "line": 41, "name": "D_FindWADByName", "signature": "char *D_FindWADByName(char *filename);"}, {"kind": "function", "line": 43, "name": "D_TryFindWADByName", "signature": "char *D_TryFindWADByName(char *filename);"}, {"kind": "function", "line": 44, "name": "D_FindIWAD", "signature": "char *D_FindIWAD(int mask, GameMission_t *mission);"}, {"kind": "function", "line": 45, "name": "D_FindAllIWADs", "signature": "const iwad_t **D_FindAllIWADs(int mask);"}, {"kind": "function", "line": 46, "name": "D_SaveGameIWADName", "signature": "char *D_SaveGameIWADName(GameMission_t gamemission);"}, {"kind": "function", "line": 47, "name": "D_SuggestIWADName", "signature": "char *D_SuggestIWADName(GameMission_t mission, GameMode_t mode);"}, {"kind": "function", "line": 48, "name": "D_SuggestGameName", "signature": "char *D_SuggestGameName(GameMission_t mission, GameMode_t mode);"}, {"kind": "function", "line": 49, "name": "D_CheckCorrectIWAD", "signature": "void D_CheckCorrectIWAD(GameMission_t mission);"}, {"kind": "macro", "line": 20, "name": "__D_IWAD__", "signature": "#define __D_IWAD__"}, {"kind": "macro", "line": 23, "name": "IWAD_MASK_DOOM", "signature": "#define IWAD_MASK_DOOM"}, {"kind": "macro", "line": 30, "name": "IWAD_MASK_HERETIC", "signature": "#define IWAD_MASK_HERETIC"}, {"kind": "macro", "line": 31, "name": "IWAD_MASK_HEXEN", "signature": "#define IWAD_MASK_HEXEN"}, {"kind": "macro", "line": 32, "name": "IWAD_MASK_STRIFE", "signature": "#define IWAD_MASK_STRIFE"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Main loop code. include include include \"doomfeatures.h\" include \"d_event.h\" include \"d_loop.h\" include \"d_ticcmd.h\" include \"i_system.h\" include \"i_timer.h\" include \"i_video.h\"", "id": "progs/doomgeneric/d_loop.c", "kind": "module", "label": "d_loop.c", "language": "c", "sha256": "dc2fa8b0d10bc2d9", "symbol_count": 36, "symbols": [{"kind": "struct", "line": 45, "name": "ticcmd_set_t"}, {"doc": "35 fps clock adjusted by offsetms milliseconds", "kind": "function", "line": 118, "name": "GetAdjustedTime", "signature": "static int GetAdjustedTime(void)"}, {"kind": "function", "line": 135, "name": "BuildNewTic", "signature": "static boolean BuildNewTic(void)"}, {"kind": "function", "line": 202, "name": "NetUpdate", "signature": "void NetUpdate (void)"}, {"kind": "function", "line": 251, "name": "D_Disconnected", "signature": "static void D_Disconnected(void)"}, {"doc": "Invoked by the network engine when a complete set of ticcmds is available.", "kind": "function", "line": 270, "name": "D_ReceiveTic", "signature": "void D_ReceiveTic(ticcmd_t *ticcmds, boolean *players_mask)"}, {"doc": "Start game loop Called after the screen is set but before the game starts running.", "kind": "function", "line": 304, "name": "D_StartGameLoop", "signature": "void D_StartGameLoop(void)"}, {"doc": "if ORIGCODE Block until the game start message is received from the server.", "kind": "function", "line": 314, "name": "BlockUntilStart", "signature": "static void BlockUntilStart(net_gamesettings_t *settings,\n netgame_sta..."}, {"doc": "endif", "kind": "function", "line": 339, "name": "D_StartNetGame", "signature": "void D_StartNetGame(net_gamesettings_t *settings,\n netgame_startup_callback_t ..."}, {"kind": "function", "line": 451, "name": "D_InitNetGame", "signature": "boolean D_InitNetGame(net_connect_data_t *connect_data)"}, {"doc": "D_QuitNetGame Called before quitting to leave a net game without hanging the other players", "kind": "function", "line": 560, "name": "D_QuitNetGame", "signature": "void D_QuitNetGame (void)"}, {"kind": "function", "line": 567, "name": "GetLowTic", "signature": "static int GetLowTic(void)"}, {"kind": "function", "line": 590, "name": "OldNetSync", "signature": "static void OldNetSync(void)"}, {"doc": "Returns true if there are players in the game:", "kind": "function", "line": 641, "name": "PlayersInGame", "signature": "static boolean PlayersInGame(void)"}, {"doc": "When using ticdup, certain values must be cleared out when running the duplicate ticcmds.", "kind": "function", "line": 671, "name": "TicdupSquash", "signature": "static void TicdupSquash(ticcmd_set_t *set)"}, {"doc": "When running in single player mode, clear all the ingame[] array except the local player.", "kind": "function", "line": 688, "name": "SinglePlayerClear", "signature": "static void SinglePlayerClear(ticcmd_set_t *set)"}, {"doc": "TryRunTics", "kind": "function", "line": 705, "name": "TryRunTics", "signature": "void TryRunTics (void)"}, {"kind": "function", "line": 821, "name": "D_RegisterLoopCallbacks", "signature": "void D_RegisterLoopCallbacks(loop_interface_t *i)"}, {"kind": "function", "line": 142, "name": "I_StartTic", "signature": "I_StartTic ();"}, {"doc": "printf (\"mk:%i \",maketic);", "kind": "function", "line": 177, "name": "memset", "signature": "memset(&cmd, 0, sizeof(ticcmd_t));"}, {"kind": "function", "line": 184, "name": "NET_CL_SendTiccmd", "signature": "NET_CL_SendTiccmd(&cmd, maketic);"}, {"doc": "Run network subsystems", "kind": "function", "line": 218, "name": "NET_CL_Run", "signature": "NET_CL_Run();"}, {"kind": "function", "line": 220, "name": "NET_SV_Run", "signature": "NET_SV_Run();"}, {"kind": "function", "line": 258, "name": "I_Error", "signature": "I_Error(\"Disconnected from server in drone mode.\");"}, {"doc": "disconnected from server", "kind": "function", "line": 262, "name": "printf", "signature": "printf(\"Disconnected from server.\\n\");"}, {"kind": "function", "line": 333, "name": "I_Sleep", "signature": "I_Sleep(100);"}, {"doc": "Send our game settings and block until game start is received from the server.", "kind": "function", "line": 406, "name": "NET_CL_StartGame", "signature": "NET_CL_StartGame(settings);"}, {"doc": "Read the game settings that were received.", "kind": "function", "line": 411, "name": "NET_CL_GetSettings", "signature": "NET_CL_GetSettings(settings);"}, {"doc": "Call D_QuitNetGame on exit:", "kind": "function", "line": 461, "name": "I_AtExit", "signature": "I_AtExit(D_QuitNetGame, true);"}, {"kind": "function", "line": 477, "name": "NET_SV_Init", "signature": "NET_SV_Init();"}, {"kind": "function", "line": 478, "name": "NET_SV_AddModule", "signature": "NET_SV_AddModule(&net_loop_server_module);"}, {"kind": "function", "line": 480, "name": "NET_SV_RegisterWithMaster", "signature": "NET_SV_RegisterWithMaster();"}, {"doc": "Wait for launch message received from server.", "kind": "function", "line": 544, "name": "NET_WaitForLaunch", "signature": "NET_WaitForLaunch();"}, {"doc": "ifdef FEATURE_MULTIPLAYER", "kind": "function", "line": 563, "name": "NET_SV_Shutdown", "signature": "NET_SV_Shutdown();"}, {"kind": "function", "line": 564, "name": "NET_CL_Disconnect", "signature": "NET_CL_Disconnect();"}, {"kind": "function", "line": 807, "name": "memcpy", "signature": "memcpy(local_playeringame, set->ingame, sizeof(local_playeringame));"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Main loop stuff. ifndef __D_LOOP__ define __D_LOOP__ include \"net_defs.h\" Callback function invoked while waiting for the netgame to start. The callback is invoked when new players are ready. The callback should return true, or return false to abort startup.", "id": "progs/doomgeneric/d_loop.h", "kind": "module", "label": "d_loop.h", "language": "h", "sha256": "ee0b33f800b2c0ea", "symbol_count": 13, "symbols": [{"kind": "struct", "line": 31, "name": "loop_interface_t"}, {"doc": "Callback function invoked while waiting for the netgame to start. The callback is invoked when new players are ready. The callback should return true, or return false to abort startup.", "kind": "function", "line": 27, "name": "boolean", "signature": "typedef boolean (*netgame_startup_callback_t)(int ready_players, int num_players);"}, {"doc": "Read events from the event queue, and process them.", "kind": "function", "line": 34, "name": "void", "signature": "void (*ProcessEvents)();"}, {"doc": "Register callback functions for the main loop code to use.", "kind": "function", "line": 52, "name": "D_RegisterLoopCallbacks", "signature": "void D_RegisterLoopCallbacks(loop_interface_t *i);"}, {"doc": "Create any new ticcmds and broadcast to other players.", "kind": "function", "line": 55, "name": "NetUpdate", "signature": "void NetUpdate (void);"}, {"doc": "Broadcasts special packets to other players to notify of game exit", "kind": "function", "line": 59, "name": "D_QuitNetGame", "signature": "void D_QuitNetGame (void);"}, {"doc": "? how many ticks to run?", "kind": "function", "line": 62, "name": "TryRunTics", "signature": "void TryRunTics (void);"}, {"doc": "Called at start of game loop to initialize timers", "kind": "function", "line": 65, "name": "D_StartGameLoop", "signature": "void D_StartGameLoop(void);"}, {"doc": "Initialize networking code and connect to server.", "kind": "function", "line": 68, "name": "D_InitNetGame", "signature": "boolean D_InitNetGame(net_connect_data_t *connect_data);"}, {"doc": "Start game with specified settings. The structure will be updated with the actual settings for the game.", "kind": "function", "line": 73, "name": "D_StartNetGame", "signature": "void D_StartNetGame(net_gamesettings_t *settings, netgame_startup_callback_t callback);"}, {"kind": "variable", "line": 76, "name": "singletics", "signature": "extern boolean singletics;"}, {"kind": "variable", "line": 78, "name": "ticdup", "signature": "extern int gametic, ticdup;"}, {"kind": "macro", "line": 20, "name": "__D_LOOP__", "signature": "#define __D_LOOP__"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: DOOM main program (D_DoomMain) and game loop (D_DoomLoop), plus functions to determine game mode (shareware, registered), parse command line parameters, configure game parameters (turbo), and call the startup functions. include include include include include \"config.h\" include \"deh_main.h\" include \"doomdef.h\"", "id": "progs/doomgeneric/d_main.c", "kind": "module", "label": "d_main.c", "language": "c", "sha256": "6bcd6894c560f408", "symbol_count": 113, "symbols": [{"doc": "D_ProcessEvents Send all the events of the given timestamp down the responder chain", "kind": "function", "line": 139, "name": "D_ProcessEvents", "signature": "void D_ProcessEvents (void)"}, {"kind": "function", "line": 168, "name": "D_Display", "signature": "void D_Display (void)"}, {"doc": "Add configuration file variable bindings.", "kind": "function", "line": 334, "name": "D_BindVariables", "signature": "void D_BindVariables(void)"}, {"doc": "D_GrabMouseCallback Called to determine whether to grab the mouse pointer", "kind": "function", "line": 387, "name": "D_GrabMouseCallback", "signature": "boolean D_GrabMouseCallback(void)"}, {"doc": "D_DoomLoop", "kind": "function", "line": 408, "name": "D_DoomLoop", "signature": "void D_DoomLoop (void)"}, {"doc": "D_PageTicker Handles timing for warped projection", "kind": "function", "line": 490, "name": "D_PageTicker", "signature": "void D_PageTicker (void)"}, {"doc": "D_PageDrawer", "kind": "function", "line": 501, "name": "D_PageDrawer", "signature": "void D_PageDrawer (void)"}, {"doc": "D_AdvanceDemo Called after each demo or intro demosequence finishes", "kind": "function", "line": 511, "name": "D_AdvanceDemo", "signature": "void D_AdvanceDemo (void)"}, {"doc": "This cycles through the demo sequences. FIXME - version dependend demo numbers?", "kind": "function", "line": 521, "name": "D_DoAdvanceDemo", "signature": "void D_DoAdvanceDemo (void)"}, {"doc": "D_StartTitle", "kind": "function", "line": 609, "name": "D_StartTitle", "signature": "void D_StartTitle (void)"}, {"doc": "Get game name: if the startup banner has been replaced, use that. Otherwise, use the name given", "kind": "function", "line": 657, "name": "GetGameName", "signature": "static char *GetGameName(char *gamename)"}, {"kind": "function", "line": 700, "name": "SetMissionForPackName", "signature": "static void SetMissionForPackName(char *pack_name)"}, {"doc": "Find out what version of Doom is playing.", "kind": "function", "line": 736, "name": "D_IdentifyVersion", "signature": "void D_IdentifyVersion(void)"}, {"doc": "Set the gamedescription string", "kind": "function", "line": 819, "name": "D_SetGameDescription", "signature": "void D_SetGameDescription(void)"}, {"kind": "function", "line": 882, "name": "D_AddFile", "signature": "static boolean D_AddFile(char *filename)"}, {"doc": "Prints a message only if it has been modified by dehacked.", "kind": "function", "line": 917, "name": "PrintDehackedBanners", "signature": "void PrintDehackedBanners(void)"}, {"doc": "Initialize the game version", "kind": "function", "line": 962, "name": "InitGameVersion", "signature": "static void InitGameVersion(void)"}, {"kind": "function", "line": 1064, "name": "PrintGameVersion", "signature": "void PrintGameVersion(void)"}, {"doc": "Function called at exit to display the ENDOOM screen", "kind": "function", "line": 1081, "name": "D_Endoom", "signature": "static void D_Endoom(void)"}, {"doc": "if ORIGCODE Load dehacked patches needed for certain IWADs.", "kind": "function", "line": 1105, "name": "LoadIwadDeh", "signature": "static void LoadIwadDeh(void)"}, {"doc": "D_DoomMain", "kind": "function", "line": 1178, "name": "D_DoomMain", "signature": "void D_DoomMain (void)"}, {"kind": "function", "line": 129, "name": "D_ConnectNetGame", "signature": "void D_ConnectNetGame(void);"}, {"kind": "function", "line": 132, "name": "D_CheckNetGame", "signature": "void D_CheckNetGame(void);"}, {"kind": "function", "line": 151, "name": "G_Responder", "signature": "G_Responder (ev);"}, {"kind": "function", "line": 167, "name": "R_ExecuteSetViewSize", "signature": "void R_ExecuteSetViewSize (void);"}, {"kind": "function", "line": 202, "name": "wipe_StartScreen", "signature": "wipe_StartScreen(0, 0, SCREENWIDTH, SCREENHEIGHT);"}, {"kind": "function", "line": 222, "name": "ST_Drawer", "signature": "ST_Drawer (viewheight == 200, redrawsbar );"}, {"kind": "function", "line": 225, "name": "WI_Drawer", "signature": "case GS_INTERMISSION: WI_Drawer ();"}, {"kind": "function", "line": 229, "name": "F_Drawer", "signature": "case GS_FINALE: F_Drawer ();"}, {"doc": "draw buffered stuff to screen", "kind": "function", "line": 240, "name": "I_UpdateNoBlit", "signature": "I_UpdateNoBlit ();"}, {"kind": "function", "line": 257, "name": "R_FillBackScreen", "signature": "R_FillBackScreen ();"}, {"kind": "function", "line": 267, "name": "R_DrawViewBorder", "signature": "R_DrawViewBorder ();"}, {"doc": "Box showing current mouse speed", "kind": "function", "line": 275, "name": "V_DrawMouseSpeedBox", "signature": "V_DrawMouseSpeedBox(testcontrols_mousespeed);"}, {"kind": "function", "line": 291, "name": "V_DrawPatchDirect", "signature": "V_DrawPatchDirect(viewwindowx + (scaledviewwidth - 68) / 2, y, W_CacheLumpName (DEH_String(\"M_PAUSE\"), PU_CACHE));"}, {"doc": "menus go directly to the screen", "kind": "function", "line": 297, "name": "M_Drawer", "signature": "M_Drawer ();"}, {"kind": "function", "line": 298, "name": "NetUpdate", "signature": "NetUpdate ();"}, {"kind": "function", "line": 304, "name": "I_FinishUpdate", "signature": "I_FinishUpdate ();"}, {"doc": "wipe update", "kind": "function", "line": 309, "name": "wipe_EndScreen", "signature": "wipe_EndScreen(0, 0, SCREENWIDTH, SCREENHEIGHT);"}, {"kind": "function", "line": 319, "name": "I_Sleep", "signature": "I_Sleep(1);"}, {"kind": "function", "line": 338, "name": "M_ApplyPlatformDefaults", "signature": "M_ApplyPlatformDefaults();"}, {"kind": "function", "line": 340, "name": "I_BindVideoVariables", "signature": "I_BindVideoVariables();"}, {"kind": "function", "line": 342, "name": "I_BindJoystickVariables", "signature": "I_BindJoystickVariables();"}, {"kind": "function", "line": 343, "name": "I_BindSoundVariables", "signature": "I_BindSoundVariables();"}, {"kind": "function", "line": 344, "name": "M_BindBaseControls", "signature": "M_BindBaseControls();"}, {"kind": "function", "line": 346, "name": "M_BindWeaponControls", "signature": "M_BindWeaponControls();"}, {"kind": "function", "line": 347, "name": "M_BindMapControls", "signature": "M_BindMapControls();"}, {"kind": "function", "line": 348, "name": "M_BindMenuControls", "signature": "M_BindMenuControls();"}, {"kind": "function", "line": 349, "name": "M_BindChatControls", "signature": "M_BindChatControls(MAXPLAYERS);"}, {"doc": "ifdef FEATURE_MULTIPLAYER", "kind": "function", "line": 357, "name": "NET_BindVariables", "signature": "NET_BindVariables();"}, {"doc": "endif", "kind": "function", "line": 359, "name": "M_BindVariable", "signature": "M_BindVariable(\"mouse_sensitivity\", &mouseSensitivity);"}, {"kind": "function", "line": 376, "name": "M_snprintf", "signature": "M_snprintf(buf, sizeof(buf), \"chatmacro%i\", i);"}, {"kind": "function", "line": 413, "name": "printf", "signature": "printf(\" WARNING: You are playing using one of the Doom Classic\\n\" \" IWAD files shipped with the Doom 3: BFG Edition. These are\\n\" \" known to be incompatible with the regular IWAD files and\\n\" \" may c"}, {"kind": "function", "line": 425, "name": "TryRunTics", "signature": "TryRunTics();"}, {"doc": "I_SetWindowTitle(gamedescription);", "kind": "function", "line": 430, "name": "I_GraphicsCheckCommandLine", "signature": "I_GraphicsCheckCommandLine();"}, {"kind": "function", "line": 432, "name": "I_SetGrabMouseCallback", "signature": "I_SetGrabMouseCallback(D_GrabMouseCallback);"}, {"kind": "function", "line": 435, "name": "I_InitGraphics", "signature": "I_InitGraphics();"}, {"kind": "function", "line": 439, "name": "I_EnableLoadingDisk", "signature": "I_EnableLoadingDisk();"}, {"kind": "function", "line": 443, "name": "V_RestoreBuffer", "signature": "V_RestoreBuffer();"}, {"kind": "function", "line": 449, "name": "D_StartGameLoop", "signature": "D_StartGameLoop();"}, {"doc": "frame syncronous IO operations", "kind": "function", "line": 462, "name": "I_StartFrame", "signature": "I_StartFrame ();"}, {"kind": "function", "line": 465, "name": "S_UpdateSounds", "signature": "S_UpdateSounds (players[consoleplayer].mo);"}, {"kind": "function", "line": 503, "name": "V_DrawPatch", "signature": "V_DrawPatch (0, 0, W_CacheLumpName(pagename, PU_CACHE));"}, {"kind": "function", "line": 554, "name": "S_StartMusic", "signature": "else S_StartMusic (mus_intro);"}, {"kind": "function", "line": 557, "name": "G_DeferedPlayDemo", "signature": "case 1: G_DeferedPlayDemo(DEH_String(\"demo1\"));"}, {"kind": "function", "line": 686, "name": "memmove", "signature": "memmove(gamename, gamename + 1, gamename_size - 1);"}, {"kind": "function", "line": 729, "name": "I_Error", "signature": "I_Error(\"Unknown mission pack name: %s\", pack_name);"}, {"kind": "function", "line": 1097, "name": "I_Endoom", "signature": "I_Endoom(endoom);"}, {"kind": "function", "line": 1099, "name": "exit", "signature": "exit(0);"}, {"doc": "Old versions of Freedoom (before 2014-09) did not have technically valid DEHACKED lumps, so ignore errors and just continue if this is an old IWAD.", "kind": "function", "line": 1113, "name": "DEH_LoadLumpByName", "signature": "DEH_LoadLumpByName(\"DEHACKED\", false, true);"}, {"kind": "function", "line": 1140, "name": "M_StringCopy", "signature": "M_StringCopy(chex_deh, iwadfile, chex_deh_len);"}, {"kind": "function", "line": 1142, "name": "M_StringConcat", "signature": "M_StringConcat(chex_deh, \"chex.deh\", chex_deh_len);"}, {"kind": "function", "line": 1153, "name": "free", "signature": "free(chex_deh);"}, {"doc": "endif", "kind": "function", "line": 1186, "name": "I_AtExit", "signature": "I_AtExit(D_Endoom, false);"}, {"doc": "print banner", "kind": "function", "line": 1190, "name": "I_PrintBanner", "signature": "I_PrintBanner(PACKAGE_STRING);"}, {"kind": "function", "line": 1192, "name": "DEH_printf", "signature": "DEH_printf(\"Z_Init: Init zone memory allocation daemon. \\n\");"}, {"kind": "function", "line": 1194, "name": "Z_Init", "signature": "Z_Init ();"}, {"kind": "function", "line": 1207, "name": "NET_DedicatedServer", "signature": "NET_DedicatedServer();"}, {"kind": "function", "line": 1221, "name": "NET_MasterQuery", "signature": "NET_MasterQuery();"}, {"kind": "function", "line": 1237, "name": "NET_QueryAddress", "signature": "NET_QueryAddress(myargv[p+1]);"}, {"kind": "function", "line": 1249, "name": "NET_LANQuery", "signature": "NET_LANQuery();"}, {"kind": "function", "line": 1287, "name": "I_DisplayFPSDots", "signature": "I_DisplayFPSDots(devparm);"}, {"kind": "function", "line": 1329, "name": "M_SetConfigDir", "signature": "M_SetConfigDir(\"c:\\\\doomdata\\\\\");"}, {"kind": "function", "line": 1369, "name": "V_Init", "signature": "V_Init ();"}, {"kind": "function", "line": 1373, "name": "M_SetConfigFilenames", "signature": "M_SetConfigFilenames(\"default.cfg\", PROGRAM_PREFIX \"doom.cfg\");"}, {"kind": "function", "line": 1375, "name": "M_LoadDefaults", "signature": "M_LoadDefaults();"}, {"doc": "endif", "kind": "function", "line": 1398, "name": "W_CheckCorrectIWAD", "signature": "W_CheckCorrectIWAD(doom);"}, {"doc": "BFG Edition changes the names of the secret levels to censor the Wolfenstein references. It also has an extra secret level (MAP33). In Vanilla Doom (meaning the DOS version), MAP33 overflows into the Plutonia level names array, so HUSTR_33 is actually PHUSTR_1.", "kind": "function", "line": 1439, "name": "DEH_AddStringReplacement", "signature": "DEH_AddStringReplacement(HUSTR_31, \"level 31: idkfa\");"}, {"doc": "ifdef FEATURE_DEHACKED Load Dehacked patches specified on the command line with -deh. Note that there's a very careful and deliberate ordering to how Dehacked patches are loaded. The order we use is: 1. IWAD dehacked patches. 2. Command line dehacked patches specified with -deh. 3. PWAD dehacked patches in DEHACKED lumps.", "kind": "function", "line": 1465, "name": "DEH_ParseCommandLine", "signature": "DEH_ParseCommandLine();"}, {"kind": "function", "line": 1508, "name": "DEH_snprintf", "signature": "DEH_snprintf(file, sizeof(file), \"%s.lmp\", myargv[p+1]);"}, {"doc": "Generate the WAD hash table. Speed things up a bit.", "kind": "function", "line": 1531, "name": "W_GenerateHashTable", "signature": "W_GenerateHashTable();"}, {"kind": "function", "line": 1551, "name": "DEH_LoadLump", "signature": "DEH_LoadLump(i, false, false);"}, {"kind": "function", "line": 1604, "name": "I_PrintDivider", "signature": "I_PrintDivider();"}, {"kind": "function", "line": 1609, "name": "I_PrintStartupBanner", "signature": "I_PrintStartupBanner(gamedescription);"}, {"kind": "function", "line": 1626, "name": "I_CheckIsScreensaver", "signature": "I_CheckIsScreensaver();"}, {"kind": "function", "line": 1627, "name": "I_InitTimer", "signature": "I_InitTimer();"}, {"kind": "function", "line": 1628, "name": "I_InitJoystick", "signature": "I_InitJoystick();"}, {"kind": "function", "line": 1629, "name": "I_InitSound", "signature": "I_InitSound(true);"}, {"kind": "function", "line": 1630, "name": "I_InitMusic", "signature": "I_InitMusic();"}, {"kind": "function", "line": 1634, "name": "NET_Init", "signature": "NET_Init ();"}, {"kind": "function", "line": 1776, "name": "M_Init", "signature": "M_Init ();"}, {"kind": "function", "line": 1779, "name": "R_Init", "signature": "R_Init ();"}, {"kind": "function", "line": 1782, "name": "P_Init", "signature": "P_Init ();"}, {"kind": "function", "line": 1787, "name": "S_Init", "signature": "S_Init (sfxVolume * 8, musicVolume * 8);"}, {"kind": "function", "line": 1795, "name": "HU_Init", "signature": "HU_Init ();"}, {"kind": "function", "line": 1798, "name": "ST_Init", "signature": "ST_Init ();"}, {"kind": "function", "line": 1827, "name": "G_RecordDemo", "signature": "G_RecordDemo (myargv[p+1]);"}, {"kind": "function", "line": 1842, "name": "G_TimeDemo", "signature": "G_TimeDemo (demolumpname);"}, {"kind": "function", "line": 1849, "name": "G_LoadGame", "signature": "G_LoadGame(file);"}, {"doc": "extern int soundVolume; extern int\tsfxVolume; extern int\tmusicVolume;", "kind": "variable", "line": 105, "name": "inhelpscreens", "signature": "extern boolean inhelpscreens;"}, {"kind": "variable", "line": 165, "name": "setsizeneeded", "signature": "extern boolean setsizeneeded;"}, {"kind": "variable", "line": 166, "name": "showMessages", "signature": "extern int showMessages;"}, {"kind": "variable", "line": 1351, "name": "forwardmove", "signature": "extern int forwardmove[2];"}, {"kind": "variable", "line": 1352, "name": "sidemove", "signature": "extern int sidemove[2];"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: System specific interface stuff. ifndef __D_MAIN__ define __D_MAIN__ include \"doomdef.h\" Read events from all input devices", "id": "progs/doomgeneric/d_main.h", "kind": "module", "label": "d_main.h", "language": "h", "sha256": "26585ecba20b52af", "symbol_count": 8, "symbols": [{"doc": "Read events from all input devices", "kind": "function", "line": 29, "name": "D_ProcessEvents", "signature": "void D_ProcessEvents (void);"}, {"doc": "BASE LEVEL", "kind": "function", "line": 36, "name": "D_PageTicker", "signature": "void D_PageTicker (void);"}, {"kind": "function", "line": 37, "name": "D_PageDrawer", "signature": "void D_PageDrawer (void);"}, {"kind": "function", "line": 38, "name": "D_AdvanceDemo", "signature": "void D_AdvanceDemo (void);"}, {"kind": "function", "line": 39, "name": "D_DoAdvanceDemo", "signature": "void D_DoAdvanceDemo (void);"}, {"kind": "function", "line": 40, "name": "D_StartTitle", "signature": "void D_StartTitle (void);"}, {"doc": "GLOBAL VARIABLES", "kind": "variable", "line": 45, "name": "gameaction", "signature": "extern gameaction_t gameaction;"}, {"kind": "macro", "line": 21, "name": "__D_MAIN__", "signature": "#define __D_MAIN__"}]}, {"doc": "Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Functions and definitions relating to the game type and operational mode. include \"doomtype.h\" include \"d_mode.h\" Valid game mode/mission combinations, with the number of episodes/maps for each.", "id": "progs/doomgeneric/d_mode.c", "kind": "module", "label": "d_mode.c", "language": "c", "sha256": "65311c8ff5a09055", "symbol_count": 6, "symbols": [{"doc": "Check that a gamemode+gamemission received over the network is valid.", "kind": "function", "line": 49, "name": "D_ValidGameMode", "signature": "boolean D_ValidGameMode(GameMission_t mission, GameMode_t mode)"}, {"kind": "function", "line": 64, "name": "D_ValidEpisodeMap", "signature": "boolean D_ValidEpisodeMap(GameMission_t mission, GameMode_t mode,\n int e..."}, {"doc": "Get the number of valid episodes for the specified mission/mode.", "kind": "function", "line": 102, "name": "D_GetNumEpisodes", "signature": "int D_GetNumEpisodes(GameMission_t mission, GameMode_t mode)"}, {"kind": "function", "line": 134, "name": "D_ValidGameVersion", "signature": "boolean D_ValidGameVersion(GameMission_t mission, GameVersion_t version)"}, {"doc": "Does this mission type use ExMy form, rather than MAPxy form?", "kind": "function", "line": 160, "name": "D_IsEpisodeMap", "signature": "boolean D_IsEpisodeMap(GameMission_t mission)"}, {"kind": "function", "line": 181, "name": "D_GameMissionString", "signature": "char *D_GameMissionString(GameMission_t mission)"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Functions and definitions relating to the game type and operational mode. ifndef __D_MODE__ define __D_MODE__ include \"doomtype.h\" The \"mission\" controls what game we are playing.", "id": "progs/doomgeneric/d_mode.h", "kind": "module", "label": "d_mode.h", "language": "h", "sha256": "ba816344ab1adb1c", "symbol_count": 7, "symbols": [{"kind": "function", "line": 88, "name": "D_ValidGameMode", "signature": "boolean D_ValidGameMode(GameMission_t mission, GameMode_t mode);"}, {"kind": "function", "line": 90, "name": "D_ValidGameVersion", "signature": "boolean D_ValidGameVersion(GameMission_t mission, GameVersion_t version);"}, {"kind": "function", "line": 91, "name": "D_ValidEpisodeMap", "signature": "boolean D_ValidEpisodeMap(GameMission_t mission, GameMode_t mode, int episode, int map);"}, {"kind": "function", "line": 93, "name": "D_GetNumEpisodes", "signature": "int D_GetNumEpisodes(GameMission_t mission, GameMode_t mode);"}, {"kind": "function", "line": 94, "name": "D_IsEpisodeMap", "signature": "boolean D_IsEpisodeMap(GameMission_t mission);"}, {"kind": "function", "line": 95, "name": "D_GameMissionString", "signature": "char *D_GameMissionString(GameMission_t mission);"}, {"kind": "macro", "line": 21, "name": "__D_MODE__", "signature": "#define __D_MODE__"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: DOOM Network game communication and protocol, all OS independend parts. include include \"doomfeatures.h\" include \"d_main.h\" include \"m_argv.h\" include \"m_menu.h\" include \"m_misc.h\" include \"i_system.h\" include \"i_timer.h\" include \"i_video.h\"", "id": "progs/doomgeneric/d_net.c", "kind": "module", "label": "d_net.c", "language": "c", "sha256": "be5ea4d1e17de9e3", "symbol_count": 17, "symbols": [{"doc": "Called when a player leaves the game", "kind": "function", "line": 44, "name": "PlayerQuitGame", "signature": "static void PlayerQuitGame(player_t *player)"}, {"kind": "function", "line": 70, "name": "RunTic", "signature": "static void RunTic(ticcmd_t *cmds, boolean *ingame)"}, {"doc": "Load game settings from the specified structure and set global variables.", "kind": "function", "line": 107, "name": "LoadGameSettings", "signature": "static void LoadGameSettings(net_gamesettings_t *settings)"}, {"doc": "Save the game settings from global variables to the specified game settings structure.", "kind": "function", "line": 138, "name": "SaveGameSettings", "signature": "static void SaveGameSettings(net_gamesettings_t *settings)"}, {"kind": "function", "line": 158, "name": "InitConnectData", "signature": "static void InitConnectData(net_connect_data_t *connect_data)"}, {"kind": "function", "line": 214, "name": "D_ConnectNetGame", "signature": "void D_ConnectNetGame(void)"}, {"doc": "D_CheckNetGame Works out player numbers among the net participants", "kind": "function", "line": 240, "name": "D_CheckNetGame", "signature": "void D_CheckNetGame (void)"}, {"doc": "Do this the same way as Vanilla Doom does, to allow dehacked replacements of this message", "kind": "function", "line": 54, "name": "M_StringCopy", "signature": "M_StringCopy(exitmsg, DEH_String(\"Player 1 left the game\"), sizeof(exitmsg));"}, {"kind": "function", "line": 67, "name": "G_CheckDemoStatus", "signature": "G_CheckDemoStatus ();"}, {"kind": "function", "line": 93, "name": "G_Ticker", "signature": "G_Ticker ();"}, {"doc": "Read checksums of our WAD directory and dehacked information", "kind": "function", "line": 203, "name": "W_Checksum", "signature": "W_Checksum(connect_data->wad_sha1sum);"}, {"doc": "if ORIGCODE", "kind": "function", "line": 207, "name": "DEH_Checksum", "signature": "DEH_Checksum(connect_data->deh_sha1sum);"}, {"kind": "function", "line": 248, "name": "D_RegisterLoopCallbacks", "signature": "D_RegisterLoopCallbacks(&doom_loop_interface);"}, {"kind": "function", "line": 252, "name": "D_StartNetGame", "signature": "D_StartNetGame(&settings, NULL);"}, {"kind": "function", "line": 254, "name": "DEH_printf", "signature": "DEH_printf(\"startskill %i deathmatch: %i startmap: %i startepisode: %i\\n\", startskill, deathmatch, startmap, startepisode);"}, {"kind": "function", "line": 277, "name": "printf", "signature": "printf(\".\\n\");"}, {"kind": "variable", "line": 73, "name": "advancedemo", "signature": "extern boolean advancedemo;"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: ifndef __D_PLAYER__ define __D_PLAYER__ The player data structure depends on a number of other structs: items (internal inventory), animation states (closely tied to the sprites used to represent them, unfortunately). include \"d_items.h\" include \"p_pspr.h\"", "id": "progs/doomgeneric/d_player.h", "kind": "module", "label": "d_player.h", "language": "h", "sha256": "e303bd61546f7adc", "symbol_count": 5, "symbols": [{"doc": "Extended player object info: player_t", "kind": "struct", "line": 78, "name": "player_s"}, {"doc": "INTERMISSION Structure passed e.g. to WI_Start(wb)", "kind": "struct", "line": 168, "name": "wbplayerstruct_t"}, {"kind": "struct", "line": 182, "name": "wbstartstruct_t"}, {"doc": "Extended player object info: player_t", "kind": "type_alias", "line": 78, "name": "mo", "signature": "typedef struct player_s { mobj_t* mo;"}, {"kind": "macro", "line": 21, "name": "__D_PLAYER__", "signature": "#define __D_PLAYER__"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Typedefs related to to textures etc., isolated here to make it easier separating modules. ifndef __D_TEXTUR__ define __D_TEXTUR__ include \"doomtype.h\" Flats?", "id": "progs/doomgeneric/d_textur.h", "kind": "module", "label": "d_textur.h", "language": "h", "sha256": "5e1f2976cf039acd", "symbol_count": 2, "symbols": [{"doc": "Flats? a pic is an unmasked block of pixels", "kind": "struct", "line": 33, "name": "pic_t"}, {"kind": "macro", "line": 22, "name": "__D_TEXTUR__", "signature": "#define __D_TEXTUR__"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: MapObj data. Map Objects or mobjs are actors, entities, thinker, take-your-pick... anything that moves, acts, or suffers state changes of more or less violent nature. ifndef __D_THINK__ define __D_THINK__ Experimental stuff.", "id": "progs/doomgeneric/d_think.h", "kind": "module", "label": "d_think.h", "language": "h", "sha256": "d2fa4a09222229d7", "symbol_count": 5, "symbols": [{"doc": "Doubly linked list of actors.", "kind": "struct", "line": 58, "name": "thinker_s"}, {"doc": "Historically, \"think_t\" is yet another function pointer to a routine to handle an actor.", "kind": "type_alias", "line": 54, "name": "think_t", "signature": "typedef actionf_t think_t;"}, {"doc": "Doubly linked list of actors.", "kind": "type_alias", "line": 58, "name": "prev", "signature": "typedef struct thinker_s { struct thinker_s* prev;"}, {"doc": "Experimental stuff. To compile this as \"ANSI C with classes\" we will need to handle the various action functions cleanly.", "kind": "function", "line": 35, "name": "void", "signature": "typedef void (*actionf_v)();"}, {"kind": "macro", "line": 23, "name": "__D_THINK__", "signature": "#define __D_THINK__"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 1993-2008 Raven Software Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: System specific interface stuff. ifndef __D_TICCMD__ define __D_TICCMD__ include \"doomtype.h\" The data sampled per tick (single player) and transmitted to other peers (multiplayer). Mainly movements/button commands per game tick, plus a checksum for internal state consistency.", "id": "progs/doomgeneric/d_ticcmd.h", "kind": "module", "label": "d_ticcmd.h", "language": "h", "sha256": "d20e810a1975ad79", "symbol_count": 2, "symbols": [{"kind": "struct", "line": 32, "name": "ticcmd_t"}, {"kind": "macro", "line": 22, "name": "__D_TICCMD__", "signature": "#define __D_TICCMD__"}]}, {"doc": "Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. Dehacked entrypoint and common code ifndef DEH_MAIN_H define DEH_MAIN_H include \"doomtype.h\" include \"doomfeatures.h\" include \"deh_str.h\" include \"sha1.h\" These are the limits that dehacked uses (from dheinit.h in the dehacked source). If these limits are exceeded, it does not generate an error, but a warning is displayed. define DEH_VANILLA_NUMSTATES 966", "id": "progs/doomgeneric/deh_main.h", "kind": "module", "label": "deh_main.h", "language": "h", "sha256": "e56b6084da9318e7", "symbol_count": 13, "symbols": [{"doc": "define DEH_VANILLA_NUMSTATES 966 define DEH_VANILLA_NUMSFX 107", "kind": "function", "line": 32, "name": "DEH_ParseCommandLine", "signature": "void DEH_ParseCommandLine(void);"}, {"kind": "function", "line": 34, "name": "DEH_LoadFile", "signature": "int DEH_LoadFile(char *filename);"}, {"kind": "function", "line": 35, "name": "DEH_LoadLump", "signature": "int DEH_LoadLump(int lumpnum, boolean allow_long, boolean allow_error);"}, {"kind": "function", "line": 36, "name": "DEH_LoadLumpByName", "signature": "int DEH_LoadLumpByName(char *name, boolean allow_long, boolean allow_error);"}, {"kind": "function", "line": 37, "name": "DEH_ParseAssignment", "signature": "boolean DEH_ParseAssignment(char *line, char **variable_name, char **value);"}, {"kind": "function", "line": 39, "name": "DEH_Checksum", "signature": "void DEH_Checksum(sha1_digest_t digest);"}, {"kind": "variable", "line": 41, "name": "deh_allow_extended_strings", "signature": "extern boolean deh_allow_extended_strings;"}, {"kind": "variable", "line": 43, "name": "deh_allow_long_strings", "signature": "extern boolean deh_allow_long_strings;"}, {"kind": "variable", "line": 44, "name": "deh_allow_long_cheats", "signature": "extern boolean deh_allow_long_cheats;"}, {"kind": "variable", "line": 45, "name": "deh_apply_cheats", "signature": "extern boolean deh_apply_cheats;"}, {"kind": "macro", "line": 19, "name": "DEH_MAIN_H", "signature": "#define DEH_MAIN_H"}, {"kind": "macro", "line": 29, "name": "DEH_VANILLA_NUMSTATES", "signature": "#define DEH_VANILLA_NUMSTATES"}, {"kind": "macro", "line": 31, "name": "DEH_VANILLA_NUMSFX", "signature": "#define DEH_VANILLA_NUMSFX"}]}, {"doc": "Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. Parses \"Misc\" sections in dehacked files ifndef DEH_MISC_H define DEH_MISC_H include \"doomfeatures.h\" define DEH_DEFAULT_INITIAL_HEALTH 100 define DEH_DEFAULT_INITIAL_BULLETS 50 define DEH_DEFAULT_MAX_HEALTH 200 define DEH_DEFAULT_MAX_ARMOR 200 define DEH_DEFAULT_GREEN_ARMOR_CLASS 1 define DEH_DEFAULT_BLUE_ARMOR_CLASS 2 define DEH_DEFAULT_MAX_SOULSPHERE 200 define DEH_DEFAULT_SOULSPHERE_HEALTH 100", "id": "progs/doomgeneric/deh_misc.h", "kind": "module", "label": "deh_misc.h", "language": "h", "sha256": "997d093972f3fed4", "symbol_count": 49, "symbols": [{"doc": "ifdef FEATURE_DEHACKED", "kind": "variable", "line": 41, "name": "deh_initial_health", "signature": "extern int deh_initial_health;"}, {"kind": "variable", "line": 43, "name": "deh_initial_bullets", "signature": "extern int deh_initial_bullets;"}, {"kind": "variable", "line": 44, "name": "deh_max_health", "signature": "extern int deh_max_health;"}, {"kind": "variable", "line": 45, "name": "deh_max_armor", "signature": "extern int deh_max_armor;"}, {"kind": "variable", "line": 46, "name": "deh_green_armor_class", "signature": "extern int deh_green_armor_class;"}, {"kind": "variable", "line": 47, "name": "deh_blue_armor_class", "signature": "extern int deh_blue_armor_class;"}, {"kind": "variable", "line": 48, "name": "deh_max_soulsphere", "signature": "extern int deh_max_soulsphere;"}, {"kind": "variable", "line": 49, "name": "deh_soulsphere_health", "signature": "extern int deh_soulsphere_health;"}, {"kind": "variable", "line": 50, "name": "deh_megasphere_health", "signature": "extern int deh_megasphere_health;"}, {"kind": "variable", "line": 51, "name": "deh_god_mode_health", "signature": "extern int deh_god_mode_health;"}, {"kind": "variable", "line": 52, "name": "deh_idfa_armor", "signature": "extern int deh_idfa_armor;"}, {"kind": "variable", "line": 53, "name": "deh_idfa_armor_class", "signature": "extern int deh_idfa_armor_class;"}, {"kind": "variable", "line": 54, "name": "deh_idkfa_armor", "signature": "extern int deh_idkfa_armor;"}, {"kind": "variable", "line": 55, "name": "deh_idkfa_armor_class", "signature": "extern int deh_idkfa_armor_class;"}, {"kind": "variable", "line": 56, "name": "deh_bfg_cells_per_shot", "signature": "extern int deh_bfg_cells_per_shot;"}, {"kind": "variable", "line": 57, "name": "deh_species_infighting", "signature": "extern int deh_species_infighting;"}, {"kind": "macro", "line": 19, "name": "DEH_MISC_H", "signature": "#define DEH_MISC_H"}, {"kind": "macro", "line": 22, "name": "DEH_DEFAULT_INITIAL_HEALTH", "signature": "#define DEH_DEFAULT_INITIAL_HEALTH"}, {"kind": "macro", "line": 24, "name": "DEH_DEFAULT_INITIAL_BULLETS", "signature": "#define DEH_DEFAULT_INITIAL_BULLETS"}, {"kind": "macro", "line": 25, "name": "DEH_DEFAULT_MAX_HEALTH", "signature": "#define DEH_DEFAULT_MAX_HEALTH"}, {"kind": "macro", "line": 26, "name": "DEH_DEFAULT_MAX_ARMOR", "signature": "#define DEH_DEFAULT_MAX_ARMOR"}, {"kind": "macro", "line": 27, "name": "DEH_DEFAULT_GREEN_ARMOR_CLASS", "signature": "#define DEH_DEFAULT_GREEN_ARMOR_CLASS"}, {"kind": "macro", "line": 28, "name": "DEH_DEFAULT_BLUE_ARMOR_CLASS", "signature": "#define DEH_DEFAULT_BLUE_ARMOR_CLASS"}, {"kind": "macro", "line": 29, "name": "DEH_DEFAULT_MAX_SOULSPHERE", "signature": "#define DEH_DEFAULT_MAX_SOULSPHERE"}, {"kind": "macro", "line": 30, "name": "DEH_DEFAULT_SOULSPHERE_HEALTH", "signature": "#define DEH_DEFAULT_SOULSPHERE_HEALTH"}, {"kind": "macro", "line": 31, "name": "DEH_DEFAULT_MEGASPHERE_HEALTH", "signature": "#define DEH_DEFAULT_MEGASPHERE_HEALTH"}, {"kind": "macro", "line": 32, "name": "DEH_DEFAULT_GOD_MODE_HEALTH", "signature": "#define DEH_DEFAULT_GOD_MODE_HEALTH"}, {"kind": "macro", "line": 33, "name": "DEH_DEFAULT_IDFA_ARMOR", "signature": "#define DEH_DEFAULT_IDFA_ARMOR"}, {"kind": "macro", "line": 34, "name": "DEH_DEFAULT_IDFA_ARMOR_CLASS", "signature": "#define DEH_DEFAULT_IDFA_ARMOR_CLASS"}, {"kind": "macro", "line": 35, "name": "DEH_DEFAULT_IDKFA_ARMOR", "signature": "#define DEH_DEFAULT_IDKFA_ARMOR"}, {"kind": "macro", "line": 36, "name": "DEH_DEFAULT_IDKFA_ARMOR_CLASS", "signature": "#define DEH_DEFAULT_IDKFA_ARMOR_CLASS"}, {"kind": "macro", "line": 37, "name": "DEH_DEFAULT_BFG_CELLS_PER_SHOT", "signature": "#define DEH_DEFAULT_BFG_CELLS_PER_SHOT"}, {"kind": "macro", "line": 38, "name": "DEH_DEFAULT_SPECIES_INFIGHTING", "signature": "#define DEH_DEFAULT_SPECIES_INFIGHTING"}, {"kind": "macro", "line": 62, "name": "deh_initial_health", "signature": "#define deh_initial_health"}, {"kind": "macro", "line": 64, "name": "deh_initial_bullets", "signature": "#define deh_initial_bullets"}, {"kind": "macro", "line": 65, "name": "deh_max_health", "signature": "#define deh_max_health"}, {"kind": "macro", "line": 66, "name": "deh_max_armor", "signature": "#define deh_max_armor"}, {"kind": "macro", "line": 67, "name": "deh_green_armor_class", "signature": "#define deh_green_armor_class"}, {"kind": "macro", "line": 68, "name": "deh_blue_armor_class", "signature": "#define deh_blue_armor_class"}, {"kind": "macro", "line": 69, "name": "deh_max_soulsphere", "signature": "#define deh_max_soulsphere"}, {"kind": "macro", "line": 70, "name": "deh_soulsphere_health", "signature": "#define deh_soulsphere_health"}, {"kind": "macro", "line": 71, "name": "deh_megasphere_health", "signature": "#define deh_megasphere_health"}, {"kind": "macro", "line": 72, "name": "deh_god_mode_health", "signature": "#define deh_god_mode_health"}, {"kind": "macro", "line": 73, "name": "deh_idfa_armor", "signature": "#define deh_idfa_armor"}, {"kind": "macro", "line": 74, "name": "deh_idfa_armor_class", "signature": "#define deh_idfa_armor_class"}, {"kind": "macro", "line": 75, "name": "deh_idkfa_armor", "signature": "#define deh_idkfa_armor"}, {"kind": "macro", "line": 76, "name": "deh_idkfa_armor_class", "signature": "#define deh_idkfa_armor_class"}, {"kind": "macro", "line": 77, "name": "deh_bfg_cells_per_shot", "signature": "#define deh_bfg_cells_per_shot"}, {"kind": "macro", "line": 78, "name": "deh_species_infighting", "signature": "#define deh_species_infighting"}]}, {"doc": "Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. Dehacked string replacements ifndef DEH_STR_H define DEH_STR_H include include \"doomfeatures.h\" Used to do dehacked text substitutions throughout the program ifdef FEATURE_DEHACKED", "id": "progs/doomgeneric/deh_str.h", "kind": "module", "label": "deh_str.h", "language": "h", "sha256": "93221bf0751b74c1", "symbol_count": 11, "symbols": [{"doc": "ifdef FEATURE_DEHACKED", "kind": "function", "line": 28, "name": "DEH_String", "signature": "char *DEH_String(char *s);"}, {"kind": "function", "line": 30, "name": "DEH_printf", "signature": "void DEH_printf(char *fmt, ...);"}, {"kind": "function", "line": 31, "name": "DEH_fprintf", "signature": "void DEH_fprintf(FILE *fstream, char *fmt, ...);"}, {"kind": "function", "line": 32, "name": "DEH_snprintf", "signature": "void DEH_snprintf(char *buffer, size_t len, char *fmt, ...);"}, {"kind": "function", "line": 33, "name": "DEH_AddStringReplacement", "signature": "void DEH_AddStringReplacement(char *from_text, char *to_text);"}, {"kind": "macro", "line": 19, "name": "DEH_STR_H", "signature": "#define DEH_STR_H"}, {"kind": "macro", "line": 37, "name": "DEH_String", "signature": "#define DEH_String(x)"}, {"kind": "macro", "line": 39, "name": "DEH_printf", "signature": "#define DEH_printf"}, {"kind": "macro", "line": 40, "name": "DEH_fprintf", "signature": "#define DEH_fprintf"}, {"kind": "macro", "line": 41, "name": "DEH_snprintf", "signature": "#define DEH_snprintf"}, {"kind": "macro", "line": 42, "name": "DEH_AddStringReplacement", "signature": "#define DEH_AddStringReplacement(x, y)"}]}, {"id": "progs/doomgeneric/doom.h", "kind": "module", "label": "doom.h", "language": "h", "sha256": "7dc64317face10ed", "symbol_count": 2, "symbols": [{"doc": "--------------------------------------------------------------------* function prototypes * *---------------------------------------------------------------------", "kind": "function", "line": 27, "name": "D_DoomMain", "signature": "void D_DoomMain (void);"}, {"kind": "macro", "line": 10, "name": "SRC_CHOCDOOM_DOOM_H_", "signature": "#define SRC_CHOCDOOM_DOOM_H_"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: all external data is defined here most of the data is loaded into different structures at run time some internal structures shared by many modules are here ifndef __DOOMDATA__ define __DOOMDATA__ The most basic types we use, portability. include \"doomtype.h\" Some global defines, that configure the game. include \"doomdef.h\"", "id": "progs/doomgeneric/doomdata.h", "kind": "module", "label": "doomdata.h", "language": "h", "sha256": "c296f3cbd788e87c", "symbol_count": 11, "symbols": [{"kind": "macro", "line": 22, "name": "__DOOMDATA__", "signature": "#define __DOOMDATA__"}, {"kind": "macro", "line": 98, "name": "ML_BLOCKING", "signature": "#define ML_BLOCKING"}, {"kind": "macro", "line": 101, "name": "ML_BLOCKMONSTERS", "signature": "#define ML_BLOCKMONSTERS"}, {"kind": "macro", "line": 105, "name": "ML_TWOSIDED", "signature": "#define ML_TWOSIDED"}, {"kind": "macro", "line": 117, "name": "ML_DONTPEGTOP", "signature": "#define ML_DONTPEGTOP"}, {"kind": "macro", "line": 120, "name": "ML_DONTPEGBOTTOM", "signature": "#define ML_DONTPEGBOTTOM"}, {"kind": "macro", "line": 123, "name": "ML_SECRET", "signature": "#define ML_SECRET"}, {"kind": "macro", "line": 126, "name": "ML_SOUNDBLOCK", "signature": "#define ML_SOUNDBLOCK"}, {"kind": "macro", "line": 129, "name": "ML_DONTDRAW", "signature": "#define ML_DONTDRAW"}, {"kind": "macro", "line": 132, "name": "ML_MAPPED", "signature": "#define ML_MAPPED"}, {"kind": "macro", "line": 175, "name": "NF_SUBSECTOR", "signature": "#define\tNF_SUBSECTOR"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: DoomDef - basic defines for DOOM, e.g. Version, game mode and skill level, and display parameters. include \"doomdef.h\" Location for any defines turned variables. None.", "id": "progs/doomgeneric/doomdef.c", "kind": "module", "label": "doomdef.c", "language": "c", "sha256": "2aebd7ef7ea9fa2d", "symbol_count": 0, "symbols": []}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Internally used data structures for virtually everything, lots of other stuff. ifndef __DOOMDEF__ define __DOOMDEF__ include include include \"doomtype.h\" include \"i_timer.h\" include \"d_mode.h\"", "id": "progs/doomgeneric/doomdef.h", "kind": "module", "label": "doomdef.h", "language": "h", "sha256": "bffb986830bcf569", "symbol_count": 9, "symbols": [{"kind": "macro", "line": 21, "name": "__DOOMDEF__", "signature": "#define __DOOMDEF__"}, {"kind": "macro", "line": 34, "name": "DOOM_VERSION", "signature": "#define DOOM_VERSION"}, {"kind": "macro", "line": 37, "name": "DOOM_191_VERSION", "signature": "#define DOOM_191_VERSION"}, {"kind": "macro", "line": 42, "name": "RANGECHECK", "signature": "#define RANGECHECK"}, {"kind": "macro", "line": 45, "name": "MAXPLAYERS", "signature": "#define MAXPLAYERS"}, {"kind": "macro", "line": 77, "name": "MTF_EASY", "signature": "#define\tMTF_EASY"}, {"kind": "macro", "line": 78, "name": "MTF_NORMAL", "signature": "#define\tMTF_NORMAL"}, {"kind": "macro", "line": 79, "name": "MTF_HARD", "signature": "#define\tMTF_HARD"}, {"kind": "macro", "line": 82, "name": "MTF_AMBUSH", "signature": "#define\tMTF_AMBUSH"}]}, {"doc": "Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: List of features which can be enabled/disabled to slim down the program. ifndef DOOM_FEATURES_H define DOOM_FEATURES_H Enables wad merging (the '-merge' command line parameter) undef FEATURE_WAD_MERGE Enables dehacked support ('-deh') undef FEATURE_DEHACKED Enables multiplayer support (network games)", "id": "progs/doomgeneric/doomfeatures.h", "kind": "module", "label": "doomfeatures.h", "language": "h", "sha256": "c66de1643cca80dd", "symbol_count": 2, "symbols": [{"kind": "macro", "line": 20, "name": "DOOM_FEATURES_H", "signature": "#define DOOM_FEATURES_H"}, {"kind": "macro", "line": 35, "name": "FEATURE_SOUND", "signature": "#define FEATURE_SOUND"}]}, {"doc": "include \"doomgeneric.h\"", "id": "progs/doomgeneric/doomgeneric.c", "kind": "module", "label": "doomgeneric.c", "language": "c", "sha256": "65f65d901ccaef9d", "symbol_count": 2, "symbols": [{"kind": "function", "line": 4, "name": "dg_Create", "signature": "void dg_Create()"}, {"kind": "function", "line": 9, "name": "DG_Init", "signature": "DG_Init();"}]}, {"doc": "ifndef DOOM_GENERIC define DOOM_GENERIC include include define DOOMGENERIC_RESX 320 define DOOMGENERIC_RESY 200", "id": "progs/doomgeneric/doomgeneric.h", "kind": "module", "label": "doomgeneric.h", "language": "h", "sha256": "d6971919f01e52b1", "symbol_count": 10, "symbols": [{"kind": "function", "line": 12, "name": "DG_Init", "signature": "void DG_Init();"}, {"kind": "function", "line": 15, "name": "DG_DrawFrame", "signature": "void DG_DrawFrame();"}, {"kind": "function", "line": 16, "name": "DG_SleepMs", "signature": "void DG_SleepMs(uint32_t ms);"}, {"kind": "function", "line": 17, "name": "DG_GetTicksMs", "signature": "uint32_t DG_GetTicksMs();"}, {"kind": "function", "line": 18, "name": "DG_GetKey", "signature": "int DG_GetKey(int* pressed, unsigned char* key);"}, {"kind": "function", "line": 19, "name": "DG_SetWindowTitle", "signature": "void DG_SetWindowTitle(const char * title);"}, {"doc": "define DOOMGENERIC_RESX 320 define DOOMGENERIC_RESY 200", "kind": "variable", "line": 9, "name": "DG_ScreenBuffer", "signature": "extern uint32_t* DG_ScreenBuffer;"}, {"kind": "macro", "line": 2, "name": "DOOM_GENERIC", "signature": "#define DOOM_GENERIC"}, {"kind": "macro", "line": 6, "name": "DOOMGENERIC_RESX", "signature": "#define DOOMGENERIC_RESX"}, {"kind": "macro", "line": 8, "name": "DOOMGENERIC_RESY", "signature": "#define DOOMGENERIC_RESY"}]}, {"doc": "doomgeneric_minios.c - MiniOS platform layer for doomgeneric.", "id": "progs/doomgeneric/doomgeneric_minios.c", "kind": "module", "label": "doomgeneric_minios.c", "language": "c", "sha256": "b855854254866d82", "symbol_count": 31, "symbols": [{"doc": "DOOM renders into a kernel-backed back-buffer in the user window; the * kernel composites it onto the desktop as a window on GFX_PRESENT/BUF_GAME. #define FB_ADDR ((volatile uint8_t *)MINIOS_DOOM_BACKBUF_ADDR) #define FB_WIDTH 320 #define FB_HEIGHT 200 /* ---------- Palette management ---------- /* Extern from i_video.c - the gamma-corrected palette colors", "kind": "struct", "line": 79, "name": "color"}, {"kind": "function", "line": 23, "name": "mini_parse_autoframes", "signature": "static void mini_parse_autoframes(int argc, char **argv)"}, {"doc": "static int mini_frames; static void mini_parse_autoframes(int argc, char **argv) { int i; mini_autoframes = 0; for (i = 1; i + 1 < argc; i++) { if (strcmp(argv[i], \"mini_autoframes\") == 0) { mini_autoframes = atoi(argv[i + 1]); if (mini_autoframes < 0) mini_autoframes = 0; return; } } } /* ---------- MiniOS syscalls (canonical table from minios_abi.h) ----------", "kind": "function", "line": 36, "name": "sys_time_ms", "signature": "static long sys_time_ms(void)"}, {"kind": "function", "line": 42, "name": "sys_kbd", "signature": "static long sys_kbd(void)"}, {"kind": "function", "line": 47, "name": "sys_palette", "signature": "static long sys_palette(const unsigned char *pal)"}, {"kind": "function", "line": 52, "name": "sys_kbd_raw", "signature": "static long sys_kbd_raw(int on)"}, {"kind": "function", "line": 57, "name": "sys_vga_mode", "signature": "static long sys_vga_mode(int on)"}, {"kind": "function", "line": 62, "name": "sys_doom_frame", "signature": "static long sys_doom_frame(void)"}, {"kind": "function", "line": 85, "name": "load_vga_palette", "signature": "static void load_vga_palette(void)"}, {"doc": "volatile int minios_palette_dirty = 1; static void load_vga_palette(void) { uint8_t dac[768]; int i; for (i = 0; i < 256; i++) { dac[i*3+0] = colors[i].r; dac[i*3+1] = colors[i].g; dac[i*3+2] = colors[i].b; } sys_palette(dac); } /* ---------- PS/2 Set 1 -> DOOM key ----------", "kind": "function", "line": 98, "name": "scancode_to_doom", "signature": "static unsigned char scancode_to_doom(unsigned char raw)"}, {"kind": "function", "line": 157, "name": "kbd_enqueue", "signature": "static void kbd_enqueue(unsigned char doom_key, int pressed)"}, {"kind": "function", "line": 164, "name": "kbd_poll", "signature": "static void kbd_poll(void)"}, {"kind": "function", "line": 207, "name": "DG_Init", "signature": "void DG_Init(void)"}, {"kind": "function", "line": 215, "name": "DG_DrawFrame", "signature": "void DG_DrawFrame(void)"}, {"kind": "function", "line": 245, "name": "DG_SleepMs", "signature": "void DG_SleepMs(uint32_t ms)"}, {"kind": "function", "line": 251, "name": "DG_GetTicksMs", "signature": "uint32_t DG_GetTicksMs(void)"}, {"kind": "function", "line": 255, "name": "DG_GetKey", "signature": "int DG_GetKey(int *pressed, unsigned char *key)"}, {"kind": "function", "line": 266, "name": "DG_SetWindowTitle", "signature": "void DG_SetWindowTitle(const char *title)"}, {"kind": "function", "line": 4, "name": "MINIOS_DOOM_BACKBUF_ADDR", "signature": "* MINIOS_DOOM_BACKBUF_ADDR (minios_abi.h);"}, {"kind": "function", "line": 39, "name": "volatile", "signature": "__asm__ volatile(\"syscall\" : \"=a\"(ret) : \"a\"(MINIOS_SYS_TIME), \"D\"(0) : \"rcx\",\"r11\",\"memory\");"}, {"kind": "function", "line": 240, "name": "printf", "signature": "printf(\"minios: played %d frames, quitting\\n\", mini_frames);"}, {"kind": "function", "line": 241, "name": "fflush", "signature": "fflush(stdout);"}, {"kind": "function", "line": 242, "name": "exit", "signature": "exit(0);"}, {"kind": "variable", "line": 80, "name": "colors", "signature": "extern struct color colors[256];"}, {"doc": "if (raw & 0x80) { /* Break code: key released unsigned char doom_key = scancode_to_doom(raw); if (doom_key) kbd_enqueue(doom_key, 0); } else { /* Make code: key pressed unsigned char doom_key = scancode_to_doom(raw); if (doom_key) kbd_enqueue(doom_key, 1); } } } /* ---------- doomgeneric interface ----------", "kind": "variable", "line": 205, "name": "I_VideoBuffer", "signature": "extern unsigned char *I_VideoBuffer;"}, {"kind": "variable", "line": 209, "name": "myargc", "signature": "extern int myargc;"}, {"kind": "variable", "line": 210, "name": "myargv", "signature": "extern char **myargv;"}, {"kind": "macro", "line": 72, "name": "FB_ADDR", "signature": "#define FB_ADDR"}, {"kind": "macro", "line": 73, "name": "FB_WIDTH", "signature": "#define FB_WIDTH"}, {"kind": "macro", "line": 74, "name": "FB_HEIGHT", "signature": "#define FB_HEIGHT"}, {"kind": "macro", "line": 153, "name": "KBD_QUEUE_SIZE", "signature": "#define KBD_QUEUE_SIZE"}]}, {"doc": "doomgeneric for soso os include \"doomkeys.h\" include \"m_argv.h\" include \"doomgeneric.h\" include include include include ", "id": "progs/doomgeneric/doomgeneric_sdl.c", "kind": "module", "label": "doomgeneric_sdl.c", "language": "c", "sha256": "894d4b32f9c31596", "symbol_count": 20, "symbols": [{"kind": "function", "line": 22, "name": "convertToDoomKey", "signature": "static unsigned char convertToDoomKey(unsigned int key)"}, {"kind": "function", "line": 62, "name": "addKeyToQueue", "signature": "static void addKeyToQueue(int pressed, unsigned int keyCode)"}, {"kind": "function", "line": 72, "name": "handleKeyInput", "signature": "static void handleKeyInput()"}, {"kind": "function", "line": 91, "name": "DG_Init", "signature": "void DG_Init()"}, {"kind": "function", "line": 111, "name": "DG_DrawFrame", "signature": "void DG_DrawFrame()"}, {"kind": "function", "line": 122, "name": "DG_SleepMs", "signature": "void DG_SleepMs(uint32_t ms)"}, {"kind": "function", "line": 127, "name": "DG_GetTicksMs", "signature": "uint32_t DG_GetTicksMs()"}, {"kind": "function", "line": 132, "name": "DG_GetKey", "signature": "int DG_GetKey(int* pressed, unsigned char* doomKey)"}, {"kind": "function", "line": 151, "name": "DG_SetWindowTitle", "signature": "void DG_SetWindowTitle(const char * title)"}, {"kind": "function", "line": 76, "name": "puts", "signature": "puts(\"Quit requested\");"}, {"kind": "function", "line": 77, "name": "atexit", "signature": "atexit(SDL_Quit);"}, {"kind": "function", "line": 78, "name": "exit", "signature": "exit(1);"}, {"doc": "Clear winow", "kind": "function", "line": 105, "name": "SDL_RenderClear", "signature": "SDL_RenderClear( renderer );"}, {"doc": "Render the rect to the screen", "kind": "function", "line": 107, "name": "SDL_RenderPresent", "signature": "SDL_RenderPresent(renderer);"}, {"kind": "function", "line": 114, "name": "SDL_UpdateTexture", "signature": "SDL_UpdateTexture(texture, NULL, DG_ScreenBuffer, DOOMGENERIC_RESX*sizeof(uint32_t));"}, {"kind": "function", "line": 117, "name": "SDL_RenderCopy", "signature": "SDL_RenderCopy(renderer, texture, NULL, NULL);"}, {"kind": "function", "line": 125, "name": "SDL_Delay", "signature": "SDL_Delay(ms);"}, {"kind": "function", "line": 130, "name": "SDL_GetTicks", "signature": "return SDL_GetTicks();"}, {"kind": "function", "line": 155, "name": "SDL_SetWindowTitle", "signature": "SDL_SetWindowTitle(window, title);"}, {"kind": "macro", "line": 16, "name": "KEYQUEUE_SIZE", "signature": "#define KEYQUEUE_SIZE"}]}, {"doc": "doomgeneric for soso os include \"doomkeys.h\" include \"m_argv.h\" include \"doomgeneric.h\" include include include include include include include include ", "id": "progs/doomgeneric/doomgeneric_soso.c", "kind": "module", "label": "doomgeneric_soso.c", "language": "c", "sha256": "8a9598bcece85691", "symbol_count": 23, "symbols": [{"kind": "enum", "line": 36, "name": "EnFrameBuferIoctl"}, {"kind": "function", "line": 42, "name": "convertToDoomKey", "signature": "static unsigned char convertToDoomKey(unsigned char scancode)"}, {"kind": "function", "line": 91, "name": "addKeyToQueue", "signature": "static void addKeyToQueue(int pressed, unsigned char keyCode)"}, {"kind": "function", "line": 107, "name": "disableRawMode", "signature": "void disableRawMode()"}, {"kind": "function", "line": 113, "name": "enableRawMode", "signature": "void enableRawMode()"}, {"kind": "function", "line": 123, "name": "DG_Init", "signature": "void DG_Init()"}, {"kind": "function", "line": 185, "name": "handleKeyInput", "signature": "static void handleKeyInput()"}, {"kind": "function", "line": 213, "name": "DG_DrawFrame", "signature": "void DG_DrawFrame()"}, {"kind": "function", "line": 226, "name": "DG_SleepMs", "signature": "void DG_SleepMs(uint32_t ms)"}, {"kind": "function", "line": 231, "name": "DG_GetTicksMs", "signature": "uint32_t DG_GetTicksMs()"}, {"kind": "function", "line": 236, "name": "DG_GetKey", "signature": "int DG_GetKey(int* pressed, unsigned char* doomKey)"}, {"kind": "function", "line": 257, "name": "DG_SetWindowTitle", "signature": "void DG_SetWindowTitle(const char * title)"}, {"doc": "printf(\"returning original termios\\n\");", "kind": "function", "line": 111, "name": "tcsetattr", "signature": "tcsetattr(STDIN_FILENO, TCSAFLUSH, &orig_termios);"}, {"kind": "function", "line": 116, "name": "tcgetattr", "signature": "tcgetattr(STDIN_FILENO, &orig_termios);"}, {"kind": "function", "line": 117, "name": "atexit", "signature": "atexit(disableRawMode);"}, {"kind": "function", "line": 130, "name": "printf", "signature": "printf(\"Getting screen width...\");"}, {"kind": "function", "line": 141, "name": "exit", "signature": "exit(1);"}, {"doc": "enter non-blocking mode", "kind": "function", "line": 167, "name": "ioctl", "signature": "ioctl(KeyboardFd, 1, (void*)1);"}, {"kind": "function", "line": 176, "name": "sscanf", "signature": "sscanf(myargv[argPosX + 1], \"%d\", &s_PositionX);"}, {"kind": "function", "line": 220, "name": "memcpy", "signature": "memcpy(FrameBuffer + s_PositionX + (i + s_PositionY) * s_ScreenWidth, DG_ScreenBuffer + i * DOOMGENERIC_RESX, DOOMGENERIC_RESX * 4);"}, {"kind": "function", "line": 229, "name": "sleep_ms", "signature": "sleep_ms(ms);"}, {"kind": "function", "line": 234, "name": "get_uptime_ms", "signature": "return get_uptime_ms();"}, {"kind": "macro", "line": 23, "name": "KEYQUEUE_SIZE", "signature": "#define KEYQUEUE_SIZE"}]}, {"doc": "doomgeneric for soso os (nano-x version) TODO: get keys from X, not using direct keyboard access! include \"doomkeys.h\" include \"m_argv.h\" include \"doomgeneric.h\" include include include include include include include include ", "id": "progs/doomgeneric/doomgeneric_sosox.c", "kind": "module", "label": "doomgeneric_sosox.c", "language": "c", "sha256": "19b86704e002c574", "symbol_count": 29, "symbols": [{"kind": "function", "line": 37, "name": "convert_to_doom_key", "signature": "static unsigned char convert_to_doom_key(unsigned char scancode)"}, {"kind": "function", "line": 87, "name": "add_key_to_queue", "signature": "static void add_key_to_queue(int pressed, unsigned char key_code)"}, {"kind": "function", "line": 101, "name": "disable_raw_mode", "signature": "void disable_raw_mode()"}, {"kind": "function", "line": 106, "name": "enable_raw_mode", "signature": "void enable_raw_mode()"}, {"kind": "function", "line": 116, "name": "DG_Init", "signature": "void DG_Init()"}, {"kind": "function", "line": 158, "name": "handle_key_input", "signature": "static void handle_key_input()"}, {"kind": "function", "line": 186, "name": "DG_DrawFrame", "signature": "void DG_DrawFrame()"}, {"kind": "function", "line": 224, "name": "DG_SleepMs", "signature": "void DG_SleepMs(uint32_t ms)"}, {"kind": "function", "line": 229, "name": "DG_GetTicksMs", "signature": "uint32_t DG_GetTicksMs()"}, {"kind": "function", "line": 234, "name": "DG_GetKey", "signature": "int DG_GetKey(int* pressed, unsigned char* doomKey)"}, {"kind": "function", "line": 255, "name": "DG_SetWindowTitle", "signature": "void DG_SetWindowTitle(const char * title)"}, {"kind": "function", "line": 104, "name": "tcsetattr", "signature": "tcsetattr(STDIN_FILENO, TCSAFLUSH, &orig_termios);"}, {"kind": "function", "line": 109, "name": "tcgetattr", "signature": "tcgetattr(STDIN_FILENO, &orig_termios);"}, {"kind": "function", "line": 110, "name": "atexit", "signature": "atexit(disable_raw_mode);"}, {"kind": "function", "line": 121, "name": "GrError", "signature": "GrError(\"GrOpen failed\");"}, {"kind": "function", "line": 126, "name": "GrSetGCUseBackground", "signature": "GrSetGCUseBackground(gc, GR_FALSE);"}, {"kind": "function", "line": 127, "name": "GrSetGCForeground", "signature": "GrSetGCForeground(gc, MWRGB( 255, 0, 0 ));"}, {"kind": "function", "line": 137, "name": "GrSelectEvents", "signature": "GrSelectEvents(wid, GR_EVENT_MASK_EXPOSURE | GR_EVENT_MASK_TIMER | GR_EVENT_MASK_CLOSE_REQ | GR_EVENT_MASK_BUTTON_DOWN | GR_EVENT_MASK_BUTTON_UP);"}, {"kind": "function", "line": 143, "name": "GrMapWindow", "signature": "GrMapWindow (wid);"}, {"doc": "enter non-blocking mode", "kind": "function", "line": 155, "name": "ioctl", "signature": "ioctl(g_keyboard_fd, 1, (void*)1);"}, {"kind": "function", "line": 192, "name": "GrGetNextEvent", "signature": "GrGetNextEvent(&event);"}, {"kind": "function", "line": 202, "name": "GrClose", "signature": "case GR_EVENT_TYPE_CLOSE_REQ: GrClose();"}, {"kind": "function", "line": 205, "name": "exit", "signature": "exit (0);"}, {"kind": "function", "line": 217, "name": "memcpy", "signature": "memcpy(windowBuffer, DG_ScreenBuffer, DOOMGENERIC_RESX * DOOMGENERIC_RESY * 4);"}, {"kind": "function", "line": 218, "name": "GrFlushWindow", "signature": "GrFlushWindow(wid);"}, {"kind": "function", "line": 227, "name": "sleep_ms", "signature": "sleep_ms(ms);"}, {"kind": "function", "line": 232, "name": "get_uptime_ms", "signature": "return get_uptime_ms();"}, {"kind": "function", "line": 258, "name": "GrSetWindowTitle", "signature": "GrSetWindowTitle(wid, title);"}, {"kind": "macro", "line": 23, "name": "KEYQUEUE_SIZE", "signature": "#define KEYQUEUE_SIZE"}]}, {"doc": "include \"doomkeys.h\" include \"doomgeneric.h\" include include ", "id": "progs/doomgeneric/doomgeneric_win.c", "kind": "module", "label": "doomgeneric_win.c", "language": "c", "sha256": "fdafcdda7375ad85", "symbol_count": 26, "symbols": [{"kind": "function", "line": 19, "name": "convertToDoomKey", "signature": "static unsigned char convertToDoomKey(unsigned char key)"}, {"kind": "function", "line": 58, "name": "addKeyToQueue", "signature": "static void addKeyToQueue(int pressed, unsigned char keyCode)"}, {"kind": "function", "line": 69, "name": "wndProc", "signature": "static LRESULT CALLBACK wndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)"}, {"kind": "function", "line": 94, "name": "DG_Init", "signature": "void DG_Init()"}, {"kind": "function", "line": 145, "name": "DG_DrawFrame", "signature": "void DG_DrawFrame()"}, {"kind": "function", "line": 161, "name": "DG_SleepMs", "signature": "void DG_SleepMs(uint32_t ms)"}, {"kind": "function", "line": 166, "name": "DG_GetTicksMs", "signature": "uint32_t DG_GetTicksMs()"}, {"kind": "function", "line": 171, "name": "DG_GetKey", "signature": "int DG_GetKey(int* pressed, unsigned char* doomKey)"}, {"kind": "function", "line": 192, "name": "DG_SetWindowTitle", "signature": "void DG_SetWindowTitle(const char * title)"}, {"kind": "function", "line": 74, "name": "DestroyWindow", "signature": "case WM_CLOSE: DestroyWindow(hwnd);"}, {"kind": "function", "line": 77, "name": "PostQuitMessage", "signature": "case WM_DESTROY: PostQuitMessage(0);"}, {"kind": "function", "line": 79, "name": "ExitProcess", "signature": "ExitProcess(0);"}, {"kind": "function", "line": 81, "name": "printf", "signature": "case WM_KEYDOWN: printf(\" ****** WM_KEYDOWN : 0x%x\\n\", wParam);"}, {"kind": "function", "line": 89, "name": "DefWindowProcA", "signature": "default: return DefWindowProcA(hwnd, msg, wParam, lParam);"}, {"kind": "function", "line": 118, "name": "exit", "signature": "exit(-1);"}, {"kind": "function", "line": 126, "name": "AdjustWindowRect", "signature": "AdjustWindowRect(&rect, WS_OVERLAPPEDWINDOW, FALSE);"}, {"kind": "function", "line": 134, "name": "ShowWindow", "signature": "ShowWindow(hwnd, SW_SHOW);"}, {"kind": "function", "line": 142, "name": "memset", "signature": "memset(s_KeyQueue, 0, KEYQUEUE_SIZE * sizeof(unsigned short));"}, {"kind": "function", "line": 153, "name": "TranslateMessage", "signature": "TranslateMessage(&msg);"}, {"kind": "function", "line": 154, "name": "DispatchMessageA", "signature": "DispatchMessageA(&msg);"}, {"kind": "function", "line": 156, "name": "StretchDIBits", "signature": "StretchDIBits(s_Hdc, 0, 0, DOOMGENERIC_RESX, DOOMGENERIC_RESY, 0, 0, DOOMGENERIC_RESX, DOOMGENERIC_RESY, DG_ScreenBuffer, &s_Bmi, 0, SRCCOPY);"}, {"kind": "function", "line": 158, "name": "SwapBuffers", "signature": "SwapBuffers(s_Hdc);"}, {"kind": "function", "line": 164, "name": "Sleep", "signature": "Sleep(ms);"}, {"kind": "function", "line": 169, "name": "GetTickCount", "signature": "return GetTickCount();"}, {"kind": "function", "line": 197, "name": "SetWindowTextA", "signature": "SetWindowTextA(s_Hwnd, title);"}, {"kind": "macro", "line": 12, "name": "KEYQUEUE_SIZE", "signature": "#define KEYQUEUE_SIZE"}]}, {"doc": "include \"doomkeys.h\" include \"doomgeneric.h\" include include include include include include include include ", "id": "progs/doomgeneric/doomgeneric_xlib.c", "kind": "module", "label": "doomgeneric_xlib.c", "language": "c", "sha256": "efb616090b7f422e", "symbol_count": 21, "symbols": [{"kind": "function", "line": 26, "name": "convertToDoomKey", "signature": "static unsigned char convertToDoomKey(unsigned int key)"}, {"kind": "function", "line": 67, "name": "addKeyToQueue", "signature": "static void addKeyToQueue(int pressed, unsigned int keyCode)"}, {"kind": "function", "line": 78, "name": "DG_Init", "signature": "void DG_Init()"}, {"kind": "function", "line": 125, "name": "DG_DrawFrame", "signature": "void DG_DrawFrame()"}, {"kind": "function", "line": 171, "name": "DG_SleepMs", "signature": "void DG_SleepMs(uint32_t ms)"}, {"kind": "function", "line": 176, "name": "DG_GetTicksMs", "signature": "uint32_t DG_GetTicksMs()"}, {"kind": "function", "line": 186, "name": "DG_GetKey", "signature": "int DG_GetKey(int* pressed, unsigned char* doomKey)"}, {"kind": "function", "line": 207, "name": "DG_SetWindowTitle", "signature": "void DG_SetWindowTitle(const char * title)"}, {"kind": "function", "line": 81, "name": "memset", "signature": "memset(s_KeyQueue, 0, KEYQUEUE_SIZE * sizeof(unsigned short));"}, {"kind": "function", "line": 100, "name": "XSelectInput", "signature": "XSelectInput(s_Display, s_Window, StructureNotifyMask | KeyPressMask | KeyReleaseMask);"}, {"kind": "function", "line": 102, "name": "XMapWindow", "signature": "XMapWindow(s_Display, s_Window);"}, {"kind": "function", "line": 106, "name": "XSetForeground", "signature": "XSetForeground(s_Display, s_Gc, whiteColor);"}, {"kind": "function", "line": 108, "name": "XkbSetDetectableAutoRepeat", "signature": "XkbSetDetectableAutoRepeat(s_Display, 1, 0);"}, {"kind": "function", "line": 116, "name": "XNextEvent", "signature": "XNextEvent(s_Display, &e);"}, {"kind": "function", "line": 151, "name": "XFillRectangle", "signature": "XFillRectangle(s_Display, s_Pixmap, s_Gc, 0, 0, DOOMGENERIC_RESX, DOOMGENERIC_RESY);"}, {"kind": "function", "line": 159, "name": "XDrawPoint", "signature": "XDrawPoint(s_Display, s_Pixmap, s_Gc, c, r);"}, {"kind": "function", "line": 162, "name": "XCopyArea", "signature": "XCopyArea(s_Display, s_Pixmap, s_Window, s_Gc, 0, 0, DOOMGENERIC_RESX, DOOMGENERIC_RESY, 0, 0);"}, {"kind": "function", "line": 174, "name": "usleep", "signature": "usleep (ms * 1000);"}, {"kind": "function", "line": 181, "name": "gettimeofday", "signature": "gettimeofday(&tp, &tzp);"}, {"kind": "function", "line": 212, "name": "XChangeProperty", "signature": "XChangeProperty(s_Display, s_Window, XA_WM_NAME, XA_STRING, 8, PropModeReplace, title, strlen(title));"}, {"kind": "macro", "line": 20, "name": "KEYQUEUE_SIZE", "signature": "#define KEYQUEUE_SIZE"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Key definitions ifndef __DOOMKEYS__ define __DOOMKEYS__ DOOM keyboard definition. This is the stuff configured by Setup.Exe. Most key data are simple ascii (uppercased). define KEY_RIGHTARROW\t0xae define KEY_LEFTARROW\t0xac define KEY_UPARROW\t\t0xad define KEY_DOWNARROW\t0xaf", "id": "progs/doomgeneric/doomkeys.h", "kind": "module", "label": "doomkeys.h", "language": "h", "sha256": "de35009e7b9f93d6", "symbol_count": 59, "symbols": [{"kind": "macro", "line": 20, "name": "__DOOMKEYS__", "signature": "#define __DOOMKEYS__"}, {"kind": "macro", "line": 27, "name": "KEY_RIGHTARROW", "signature": "#define KEY_RIGHTARROW"}, {"kind": "macro", "line": 28, "name": "KEY_LEFTARROW", "signature": "#define KEY_LEFTARROW"}, {"kind": "macro", "line": 29, "name": "KEY_UPARROW", "signature": "#define KEY_UPARROW"}, {"kind": "macro", "line": 30, "name": "KEY_DOWNARROW", "signature": "#define KEY_DOWNARROW"}, {"kind": "macro", "line": 31, "name": "KEY_STRAFE_L", "signature": "#define KEY_STRAFE_L"}, {"kind": "macro", "line": 32, "name": "KEY_STRAFE_R", "signature": "#define KEY_STRAFE_R"}, {"kind": "macro", "line": 33, "name": "KEY_USE", "signature": "#define KEY_USE"}, {"kind": "macro", "line": 34, "name": "KEY_FIRE", "signature": "#define KEY_FIRE"}, {"kind": "macro", "line": 35, "name": "KEY_ESCAPE", "signature": "#define KEY_ESCAPE"}, {"kind": "macro", "line": 36, "name": "KEY_ENTER", "signature": "#define KEY_ENTER"}, {"kind": "macro", "line": 37, "name": "KEY_TAB", "signature": "#define KEY_TAB"}, {"kind": "macro", "line": 38, "name": "KEY_F1", "signature": "#define KEY_F1"}, {"kind": "macro", "line": 39, "name": "KEY_F2", "signature": "#define KEY_F2"}, {"kind": "macro", "line": 40, "name": "KEY_F3", "signature": "#define KEY_F3"}, {"kind": "macro", "line": 41, "name": "KEY_F4", "signature": "#define KEY_F4"}, {"kind": "macro", "line": 42, "name": "KEY_F5", "signature": "#define KEY_F5"}, {"kind": "macro", "line": 43, "name": "KEY_F6", "signature": "#define KEY_F6"}, {"kind": "macro", "line": 44, "name": "KEY_F7", "signature": "#define KEY_F7"}, {"kind": "macro", "line": 45, "name": "KEY_F8", "signature": "#define KEY_F8"}, {"kind": "macro", "line": 46, "name": "KEY_F9", "signature": "#define KEY_F9"}, {"kind": "macro", "line": 47, "name": "KEY_F10", "signature": "#define KEY_F10"}, {"kind": "macro", "line": 48, "name": "KEY_F11", "signature": "#define KEY_F11"}, {"kind": "macro", "line": 49, "name": "KEY_F12", "signature": "#define KEY_F12"}, {"kind": "macro", "line": 50, "name": "KEY_BACKSPACE", "signature": "#define KEY_BACKSPACE"}, {"kind": "macro", "line": 52, "name": "KEY_PAUSE", "signature": "#define KEY_PAUSE"}, {"kind": "macro", "line": 53, "name": "KEY_EQUALS", "signature": "#define KEY_EQUALS"}, {"kind": "macro", "line": 55, "name": "KEY_MINUS", "signature": "#define KEY_MINUS"}, {"kind": "macro", "line": 56, "name": "KEY_RSHIFT", "signature": "#define KEY_RSHIFT"}, {"kind": "macro", "line": 58, "name": "KEY_RCTRL", "signature": "#define KEY_RCTRL"}, {"kind": "macro", "line": 59, "name": "KEY_RALT", "signature": "#define KEY_RALT"}, {"kind": "macro", "line": 60, "name": "KEY_LALT", "signature": "#define KEY_LALT"}, {"kind": "macro", "line": 64, "name": "KEY_CAPSLOCK", "signature": "#define KEY_CAPSLOCK"}, {"kind": "macro", "line": 66, "name": "KEY_NUMLOCK", "signature": "#define KEY_NUMLOCK"}, {"kind": "macro", "line": 67, "name": "KEY_SCRLCK", "signature": "#define KEY_SCRLCK"}, {"kind": "macro", "line": 68, "name": "KEY_PRTSCR", "signature": "#define KEY_PRTSCR"}, {"kind": "macro", "line": 69, "name": "KEY_HOME", "signature": "#define KEY_HOME"}, {"kind": "macro", "line": 71, "name": "KEY_END", "signature": "#define KEY_END"}, {"kind": "macro", "line": 72, "name": "KEY_PGUP", "signature": "#define KEY_PGUP"}, {"kind": "macro", "line": 73, "name": "KEY_PGDN", "signature": "#define KEY_PGDN"}, {"kind": "macro", "line": 74, "name": "KEY_INS", "signature": "#define KEY_INS"}, {"kind": "macro", "line": 75, "name": "KEY_DEL", "signature": "#define KEY_DEL"}, {"kind": "macro", "line": 76, "name": "KEYP_0", "signature": "#define KEYP_0"}, {"kind": "macro", "line": 78, "name": "KEYP_1", "signature": "#define KEYP_1"}, {"kind": "macro", "line": 79, "name": "KEYP_2", "signature": "#define KEYP_2"}, {"kind": "macro", "line": 80, "name": "KEYP_3", "signature": "#define KEYP_3"}, {"kind": "macro", "line": 81, "name": "KEYP_4", "signature": "#define KEYP_4"}, {"kind": "macro", "line": 82, "name": "KEYP_5", "signature": "#define KEYP_5"}, {"kind": "macro", "line": 83, "name": "KEYP_6", "signature": "#define KEYP_6"}, {"kind": "macro", "line": 84, "name": "KEYP_7", "signature": "#define KEYP_7"}, {"kind": "macro", "line": 85, "name": "KEYP_8", "signature": "#define KEYP_8"}, {"kind": "macro", "line": 86, "name": "KEYP_9", "signature": "#define KEYP_9"}, {"kind": "macro", "line": 87, "name": "KEYP_DIVIDE", "signature": "#define KEYP_DIVIDE"}, {"kind": "macro", "line": 89, "name": "KEYP_PLUS", "signature": "#define KEYP_PLUS"}, {"kind": "macro", "line": 90, "name": "KEYP_MINUS", "signature": "#define KEYP_MINUS"}, {"kind": "macro", "line": 91, "name": "KEYP_MULTIPLY", "signature": "#define KEYP_MULTIPLY"}, {"kind": "macro", "line": 92, "name": "KEYP_PERIOD", "signature": "#define KEYP_PERIOD"}, {"kind": "macro", "line": 93, "name": "KEYP_EQUALS", "signature": "#define KEYP_EQUALS"}, {"kind": "macro", "line": 94, "name": "KEYP_ENTER", "signature": "#define KEYP_ENTER"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Put all global tate variables here. include include \"doomstat.h\" Game Mode - identify IWAD as shareware, retail etc.", "id": "progs/doomgeneric/doomstat.c", "kind": "module", "label": "doomstat.c", "language": "c", "sha256": "6c26994f9ece76c1", "symbol_count": 0, "symbols": []}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: All the global variables that store the internal state. Theoretically speaking, the internal state of the engine should be found by looking at the variables collected here, and every relevant module will have to include this header file. In practice, things are a bit messy. ifndef __D_STATE__ define __D_STATE__ We need globally shared data structures, for defining the global state variables. include \"doomdata.h\"", "id": "progs/doomgeneric/doomstat.h", "kind": "module", "label": "doomstat.h", "language": "h", "sha256": "4b605fc43ca72868", "symbol_count": 68, "symbols": [{"doc": "----------------------- Command line parameters.", "kind": "variable", "line": 46, "name": "nomonsters", "signature": "extern boolean nomonsters;"}, {"kind": "variable", "line": 47, "name": "respawnparm", "signature": "extern boolean respawnparm;"}, {"kind": "variable", "line": 48, "name": "fastparm", "signature": "extern boolean fastparm;"}, {"kind": "variable", "line": 49, "name": "devparm", "signature": "extern boolean devparm;"}, {"doc": "---------------------------------------------------- Game Mode - identify IWAD as shareware, retail etc.", "kind": "variable", "line": 56, "name": "gamemode", "signature": "extern GameMode_t gamemode;"}, {"kind": "variable", "line": 57, "name": "gamemission", "signature": "extern GameMission_t gamemission;"}, {"kind": "variable", "line": 58, "name": "gameversion", "signature": "extern GameVersion_t gameversion;"}, {"kind": "variable", "line": 59, "name": "gamedescription", "signature": "extern char *gamedescription;"}, {"doc": "If true, we're using one of the mangled BFG edition IWADs.", "kind": "variable", "line": 62, "name": "bfgedition", "signature": "extern boolean bfgedition;"}, {"doc": "Set if homebrew PWAD stuff has been added.", "kind": "variable", "line": 74, "name": "modifiedgame", "signature": "extern boolean modifiedgame;"}, {"doc": "Defaults for menu, methinks.", "kind": "variable", "line": 82, "name": "startskill", "signature": "extern skill_t startskill;"}, {"kind": "variable", "line": 83, "name": "startepisode", "signature": "extern int startepisode;"}, {"kind": "variable", "line": 84, "name": "startmap", "signature": "extern int startmap;"}, {"doc": "Savegame slot to load on startup. This is the value provided to the -loadgame option. If this has not been provided, this is -1.", "kind": "variable", "line": 88, "name": "startloadgame", "signature": "extern int startloadgame;"}, {"kind": "variable", "line": 90, "name": "autostart", "signature": "extern boolean autostart;"}, {"doc": "Selected by user.", "kind": "variable", "line": 94, "name": "gameskill", "signature": "extern skill_t gameskill;"}, {"kind": "variable", "line": 95, "name": "gameepisode", "signature": "extern int gameepisode;"}, {"kind": "variable", "line": 96, "name": "gamemap", "signature": "extern int gamemap;"}, {"doc": "If non-zero, exit the level after this number of minutes", "kind": "variable", "line": 99, "name": "timelimit", "signature": "extern int timelimit;"}, {"doc": "Nightmare mode flag, single player.", "kind": "variable", "line": 102, "name": "respawnmonsters", "signature": "extern boolean respawnmonsters;"}, {"doc": "Netgame? Only true if >1 player.", "kind": "variable", "line": 105, "name": "netgame", "signature": "extern boolean netgame;"}, {"doc": "0=Cooperative; 1=Deathmatch; 2=Altdeath", "kind": "variable", "line": 108, "name": "deathmatch", "signature": "extern int deathmatch;"}, {"doc": "From m_menu.c: Sound FX volume has default, 0 - 15 Music volume has default, 0 - 15 These are multiplied by 8.", "kind": "variable", "line": 120, "name": "sfxVolume", "signature": "extern int sfxVolume;"}, {"kind": "variable", "line": 121, "name": "musicVolume", "signature": "extern int musicVolume;"}, {"doc": "Current music/sfx card - index useless w/o a reference LUT in a sound module. Ideally, this would use indices found in: /usr/include/linux/soundcard.h", "kind": "variable", "line": 127, "name": "snd_MusicDevice", "signature": "extern int snd_MusicDevice;"}, {"kind": "variable", "line": 128, "name": "snd_SfxDevice", "signature": "extern int snd_SfxDevice;"}, {"doc": "Config file? Same disclaimer as above.", "kind": "variable", "line": 130, "name": "snd_DesiredMusicDevice", "signature": "extern int snd_DesiredMusicDevice;"}, {"kind": "variable", "line": 131, "name": "snd_DesiredSfxDevice", "signature": "extern int snd_DesiredSfxDevice;"}, {"doc": "Depending on view size - no status bar? Note that there is no way to disable the status bar explicitely.", "kind": "variable", "line": 141, "name": "statusbaractive", "signature": "extern boolean statusbaractive;"}, {"kind": "variable", "line": 142, "name": "automapactive", "signature": "extern boolean automapactive;"}, {"kind": "variable", "line": 144, "name": "menuactive", "signature": "extern boolean menuactive;"}, {"kind": "variable", "line": 145, "name": "paused", "signature": "extern boolean paused;"}, {"kind": "variable", "line": 146, "name": "viewactive", "signature": "extern boolean viewactive;"}, {"kind": "variable", "line": 149, "name": "nodrawers", "signature": "extern boolean nodrawers;"}, {"kind": "variable", "line": 151, "name": "testcontrols", "signature": "extern boolean testcontrols;"}, {"kind": "variable", "line": 154, "name": "testcontrols_mousespeed", "signature": "extern int testcontrols_mousespeed;"}, {"doc": "This one is related to the 3-screen display mode. ANG90 = left side, ANG270 = right", "kind": "variable", "line": 161, "name": "viewangleoffset", "signature": "extern int viewangleoffset;"}, {"doc": "Player taking events, and displaying.", "kind": "variable", "line": 164, "name": "consoleplayer", "signature": "extern int consoleplayer;"}, {"kind": "variable", "line": 165, "name": "displayplayer", "signature": "extern int displayplayer;"}, {"doc": "------------------------------------ Scores, rating. Statistics on a given map, for intermission.", "kind": "variable", "line": 172, "name": "totalkills", "signature": "extern int totalkills;"}, {"kind": "variable", "line": 173, "name": "totalitems", "signature": "extern int totalitems;"}, {"kind": "variable", "line": 174, "name": "totalsecret", "signature": "extern int totalsecret;"}, {"doc": "Timer, for scores.", "kind": "variable", "line": 177, "name": "levelstarttic", "signature": "extern int levelstarttic;"}, {"kind": "variable", "line": 178, "name": "leveltime", "signature": "extern int leveltime;"}, {"doc": "------------------------------------- DEMO playback/recording related stuff. No demo, there is a human player in charge? Disable save/end game?", "kind": "variable", "line": 186, "name": "usergame", "signature": "extern boolean usergame;"}, {"doc": "?", "kind": "variable", "line": 189, "name": "demoplayback", "signature": "extern boolean demoplayback;"}, {"kind": "variable", "line": 190, "name": "demorecording", "signature": "extern boolean demorecording;"}, {"doc": "Round angleturn in ticcmds to the nearest 256. This is used when recording Vanilla demos in netgames.", "kind": "variable", "line": 194, "name": "lowres_turn", "signature": "extern boolean lowres_turn;"}, {"doc": "Quit after playing a demo from cmdline.", "kind": "variable", "line": 198, "name": "singledemo", "signature": "extern boolean singledemo;"}, {"doc": "?", "kind": "variable", "line": 204, "name": "gamestate", "signature": "extern gamestate_t gamestate;"}, {"doc": "Bookkeeping on players - state.", "kind": "variable", "line": 220, "name": "players", "signature": "extern player_t players[MAXPLAYERS];"}, {"doc": "Alive? Disconnected?", "kind": "variable", "line": 223, "name": "playeringame", "signature": "extern boolean playeringame[MAXPLAYERS];"}, {"doc": "Player spawn spots for deathmatch. define MAX_DM_STARTS 10", "kind": "variable", "line": 228, "name": "deathmatchstarts", "signature": "extern mapthing_t deathmatchstarts[MAX_DM_STARTS];"}, {"kind": "variable", "line": 229, "name": "deathmatch_p", "signature": "extern mapthing_t* deathmatch_p;"}, {"doc": "Player spawn spots.", "kind": "variable", "line": 232, "name": "playerstarts", "signature": "extern mapthing_t playerstarts[MAXPLAYERS];"}, {"doc": "Intermission stats. Parameters for world map / intermission.", "kind": "variable", "line": 236, "name": "wminfo", "signature": "extern wbstartstruct_t wminfo;"}, {"doc": "File handling stuff.", "kind": "variable", "line": 249, "name": "savegamedir", "signature": "extern char * savegamedir;"}, {"kind": "variable", "line": 250, "name": "basedefault", "signature": "extern char basedefault[1024];"}, {"doc": "if true, load all graphics at level load", "kind": "variable", "line": 253, "name": "precache", "signature": "extern boolean precache;"}, {"doc": "wipegamestate can be set to -1 to force a wipe on the next draw", "kind": "variable", "line": 258, "name": "wipegamestate", "signature": "extern gamestate_t wipegamestate;"}, {"kind": "variable", "line": 259, "name": "mouseSensitivity", "signature": "extern int mouseSensitivity;"}, {"kind": "variable", "line": 261, "name": "bodyqueslot", "signature": "extern int bodyqueslot;"}, {"doc": "Needed to store the number of the dummy sky flat. Used for rendering, as well as tracking projectiles etc.", "kind": "variable", "line": 269, "name": "skyflatnum", "signature": "extern int skyflatnum;"}, {"doc": "Netgame stuff (buffers and pointers, i.e. indices).", "kind": "variable", "line": 274, "name": "rndindex", "signature": "extern int rndindex;"}, {"kind": "variable", "line": 277, "name": "netcmds", "signature": "extern ticcmd_t *netcmds;"}, {"kind": "macro", "line": 26, "name": "__D_STATE__", "signature": "#define __D_STATE__"}, {"kind": "macro", "line": 68, "name": "logical_gamemission", "signature": "#define logical_gamemission"}, {"kind": "macro", "line": 227, "name": "MAX_DM_STARTS", "signature": "#define MAX_DM_STARTS"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Simple basic typedefs, isolated here to make it easier separating modules. ifndef __DOOMTYPE__ define __DOOMTYPE__ #define macros to provide functions missing in Windows. Outside Windows, we use strings.h for str[n]casecmp. ifdef _WIN32 define strcasecmp _stricmp", "id": "progs/doomgeneric/doomtype.h", "kind": "module", "label": "doomtype.h", "language": "h", "sha256": "5ca2cbcc1f666f4e", "symbol_count": 14, "symbols": [{"doc": "Use builtin bool type with C++.", "kind": "type_alias", "line": 68, "name": "boolean", "signature": "typedef bool boolean;"}, {"doc": "endif", "kind": "type_alias", "line": 81, "name": "byte", "signature": "typedef uint8_t byte;"}, {"kind": "macro", "line": 22, "name": "__DOOMTYPE__", "signature": "#define __DOOMTYPE__"}, {"kind": "macro", "line": 29, "name": "strcasecmp", "signature": "#define strcasecmp"}, {"kind": "macro", "line": 31, "name": "strncasecmp", "signature": "#define strncasecmp"}, {"kind": "macro", "line": 50, "name": "PACKEDATTR", "signature": "#define PACKEDATTR"}, {"kind": "macro", "line": 52, "name": "PACKEDATTR", "signature": "#define PACKEDATTR"}, {"kind": "macro", "line": 87, "name": "DIR_SEPARATOR", "signature": "#define DIR_SEPARATOR"}, {"kind": "macro", "line": 89, "name": "DIR_SEPARATOR_S", "signature": "#define DIR_SEPARATOR_S"}, {"kind": "macro", "line": 90, "name": "PATH_SEPARATOR", "signature": "#define PATH_SEPARATOR"}, {"kind": "macro", "line": 93, "name": "DIR_SEPARATOR", "signature": "#define DIR_SEPARATOR"}, {"kind": "macro", "line": 95, "name": "DIR_SEPARATOR_S", "signature": "#define DIR_SEPARATOR_S"}, {"kind": "macro", "line": 96, "name": "PATH_SEPARATOR", "signature": "#define PATH_SEPARATOR"}, {"kind": "macro", "line": 99, "name": "arrlen", "signature": "#define arrlen(array)"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Globally defined strings. include \"dstrings.h\"", "id": "progs/doomgeneric/dstrings.c", "kind": "module", "label": "dstrings.c", "language": "c", "sha256": "ca23811dfb9766f3", "symbol_count": 0, "symbols": []}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: DOOM strings, by language. ifndef __DSTRINGS__ define __DSTRINGS__ All important printed strings. include \"d_englsh.h\" Misc. other strings. define SAVEGAMENAME\t\"doomsav\"", "id": "progs/doomgeneric/dstrings.h", "kind": "module", "label": "dstrings.h", "language": "h", "sha256": "4630292b8f0f2bd1", "symbol_count": 5, "symbols": [{"doc": "QuitDOOM messages 8 per each game type define NUM_QUITMESSAGES 8", "kind": "variable", "line": 36, "name": "doom1_endmsg", "signature": "extern char *doom1_endmsg[];"}, {"kind": "variable", "line": 38, "name": "doom2_endmsg", "signature": "extern char *doom2_endmsg[];"}, {"kind": "macro", "line": 22, "name": "__DSTRINGS__", "signature": "#define __DSTRINGS__"}, {"kind": "macro", "line": 30, "name": "SAVEGAMENAME", "signature": "#define SAVEGAMENAME"}, {"kind": "macro", "line": 35, "name": "NUM_QUITMESSAGES", "signature": "#define NUM_QUITMESSAGES"}]}, {"id": "progs/doomgeneric/dummy.c", "kind": "module", "label": "dummy.c", "language": "c", "sha256": "1dd884aea54284e5", "symbol_count": 1, "symbols": [{"doc": "--------------------------------------------------------------------* public functions * *---------------------------------------------------------------------", "kind": "function", "line": 42, "name": "I_InitTimidityConfig", "signature": "void I_InitTimidityConfig(void)"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Game completion, final screen animation. include include Functions. include \"deh_main.h\" include \"i_system.h\" include \"i_swap.h\" include \"z_zone.h\" include \"v_video.h\" include \"w_wad.h\" include \"s_sound.h\"", "id": "progs/doomgeneric/f_finale.c", "kind": "module", "label": "f_finale.c", "language": "c", "sha256": "c8940488160f741c", "symbol_count": 24, "symbols": [{"kind": "struct", "line": 60, "name": "textscreen_t"}, {"doc": "Final DOOM 2 animation Casting by id Software. in order of appearance", "kind": "struct", "line": 300, "name": "castinfo_t"}, {"doc": "F_StartFinale", "kind": "function", "line": 108, "name": "F_StartFinale", "signature": "void F_StartFinale (void)"}, {"kind": "function", "line": 157, "name": "F_Responder", "signature": "boolean F_Responder (event_t *event)"}, {"doc": "F_Ticker", "kind": "function", "line": 172, "name": "F_Ticker", "signature": "void F_Ticker (void)"}, {"kind": "function", "line": 225, "name": "F_TextWrite", "signature": "void F_TextWrite (void)"}, {"doc": "F_StartCast", "kind": "function", "line": 340, "name": "F_StartCast", "signature": "void F_StartCast (void)"}, {"doc": "F_CastTicker", "kind": "function", "line": 358, "name": "F_CastTicker", "signature": "void F_CastTicker (void)"}, {"doc": "F_CastResponder", "kind": "function", "line": 464, "name": "F_CastResponder", "signature": "boolean F_CastResponder (event_t* ev)"}, {"kind": "function", "line": 484, "name": "F_CastPrint", "signature": "void F_CastPrint (char* text)"}, {"doc": "F_CastDrawer", "kind": "function", "line": 540, "name": "F_CastDrawer", "signature": "void F_CastDrawer (void)"}, {"doc": "F_DrawPatchCol", "kind": "function", "line": 571, "name": "F_DrawPatchCol", "signature": "void\nF_DrawPatchCol\n( int\t\tx,\n patch_t*\tpatch,\n int\t\tcol )"}, {"doc": "F_BunnyScroll", "kind": "function", "line": 606, "name": "F_BunnyScroll", "signature": "void F_BunnyScroll (void)"}, {"kind": "function", "line": 660, "name": "F_ArtScreenDrawer", "signature": "static void F_ArtScreenDrawer(void)"}, {"doc": "F_Drawer", "kind": "function", "line": 702, "name": "F_Drawer", "signature": "void F_Drawer (void)"}, {"kind": "function", "line": 119, "name": "S_ChangeMusic", "signature": "S_ChangeMusic(mus_victor, true);"}, {"kind": "function", "line": 247, "name": "memcpy", "signature": "memcpy (dest, src+((y&63)<<6), 64);"}, {"kind": "function", "line": 256, "name": "V_MarkRect", "signature": "V_MarkRect (0, 0, SCREENWIDTH, SCREENHEIGHT);"}, {"kind": "function", "line": 289, "name": "V_DrawPatch", "signature": "V_DrawPatch(cx, cy, hu_font[c]);"}, {"kind": "function", "line": 651, "name": "S_StartSound", "signature": "S_StartSound (NULL, sfx_pistol);"}, {"kind": "function", "line": 654, "name": "DEH_snprintf", "signature": "DEH_snprintf(name, 10, \"END%i\", stage);"}, {"doc": "include \"hu_stuff.h\"", "kind": "variable", "line": 224, "name": "hu_font", "signature": "extern patch_t *hu_font[HU_FONTSIZE];"}, {"kind": "macro", "line": 56, "name": "TEXTSPEED", "signature": "#define\tTEXTSPEED"}, {"kind": "macro", "line": 58, "name": "TEXTWAIT", "signature": "#define\tTEXTWAIT"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: ifndef __F_FINALE__ define __F_FINALE__ include \"doomtype.h\" include \"d_event.h\" FINALE Called by main loop.", "id": "progs/doomgeneric/f_finale.h", "kind": "module", "label": "f_finale.h", "language": "h", "sha256": "e440d3244d4cf8c5", "symbol_count": 5, "symbols": [{"doc": "Called by main loop.", "kind": "function", "line": 31, "name": "F_Responder", "signature": "boolean F_Responder (event_t* ev);"}, {"doc": "Called by main loop.", "kind": "function", "line": 34, "name": "F_Ticker", "signature": "void F_Ticker (void);"}, {"doc": "Called by main loop.", "kind": "function", "line": 37, "name": "F_Drawer", "signature": "void F_Drawer (void);"}, {"kind": "function", "line": 38, "name": "F_StartFinale", "signature": "void F_StartFinale (void);"}, {"kind": "macro", "line": 21, "name": "__F_FINALE__", "signature": "#define __F_FINALE__"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Mission begin melt/wipe screen special effect. include include \"z_zone.h\" include \"i_video.h\" include \"v_video.h\" include \"m_random.h\" include \"doomtype.h\" include \"f_wipe.h\"", "id": "progs/doomgeneric/f_wipe.c", "kind": "module", "label": "f_wipe.c", "language": "c", "sha256": "731d8aab83f25a2a", "symbol_count": 15, "symbols": [{"kind": "function", "line": 40, "name": "wipe_shittyColMajorXform", "signature": "void\nwipe_shittyColMajorXform\n( short*\tarray,\n int\t\twidth,\n int\t\theight )"}, {"kind": "function", "line": 63, "name": "wipe_initColorXForm", "signature": "int\nwipe_initColorXForm\n( int\twidth,\n int\theight,\n int\tticks )"}, {"kind": "function", "line": 73, "name": "wipe_doColorXForm", "signature": "int\nwipe_doColorXForm\n( int\twidth,\n int\theight,\n int\tticks )"}, {"kind": "function", "line": 119, "name": "wipe_exitColorXForm", "signature": "int\nwipe_exitColorXForm\n( int\twidth,\n int\theight,\n int\tticks )"}, {"kind": "function", "line": 131, "name": "wipe_initMelt", "signature": "int\nwipe_initMelt\n( int\twidth,\n int\theight,\n int\tticks )"}, {"kind": "function", "line": 162, "name": "wipe_doMelt", "signature": "int\nwipe_doMelt\n( int\twidth,\n int\theight,\n int\tticks )"}, {"kind": "function", "line": 217, "name": "wipe_exitMelt", "signature": "int\nwipe_exitMelt\n( int\twidth,\n int\theight,\n int\tticks )"}, {"kind": "function", "line": 229, "name": "wipe_StartScreen", "signature": "int\nwipe_StartScreen\n( int\tx,\n int\ty,\n int\twidth,\n int\theight )"}, {"kind": "function", "line": 241, "name": "wipe_EndScreen", "signature": "int\nwipe_EndScreen\n( int\tx,\n int\ty,\n int\twidth,\n int\theight )"}, {"kind": "function", "line": 254, "name": "wipe_ScreenWipe", "signature": "int\nwipe_ScreenWipe\n( int\twipeno,\n int\tx,\n int\ty,\n int\twidth,\n int\theight,\n int\tticks )"}, {"kind": "function", "line": 57, "name": "memcpy", "signature": "memcpy(array, dest, width*height*2);"}, {"kind": "function", "line": 59, "name": "Z_Free", "signature": "Z_Free(dest);"}, {"kind": "function", "line": 238, "name": "I_ReadScreen", "signature": "I_ReadScreen(wipe_scr_start);"}, {"kind": "function", "line": 251, "name": "V_DrawBlock", "signature": "V_DrawBlock(x, y, width, height, wipe_scr_start);"}, {"doc": "do a piece of wipe-in", "kind": "function", "line": 281, "name": "V_MarkRect", "signature": "V_MarkRect(0, 0, width, height);"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Mission start screen wipe/melt, special effects. ifndef __F_WIPE_H__ define __F_WIPE_H__ SCREEN WIPE PACKAGE", "id": "progs/doomgeneric/f_wipe.h", "kind": "module", "label": "f_wipe.h", "language": "h", "sha256": "9dc8e0652e3a369e", "symbol_count": 4, "symbols": [{"kind": "function", "line": 37, "name": "wipe_StartScreen", "signature": "int wipe_StartScreen ( int x, int y, int width, int height );"}, {"kind": "function", "line": 44, "name": "wipe_EndScreen", "signature": "int wipe_EndScreen ( int x, int y, int width, int height );"}, {"kind": "function", "line": 52, "name": "wipe_ScreenWipe", "signature": "int wipe_ScreenWipe ( int wipeno, int x, int y, int width, int height, int ticks );"}, {"kind": "macro", "line": 21, "name": "__F_WIPE_H__", "signature": "#define __F_WIPE_H__"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: none include include include include \"doomdef.h\" include \"doomkeys.h\" include \"doomstat.h\" include \"deh_main.h\" include \"deh_misc.h\"", "id": "progs/doomgeneric/g_game.c", "kind": "module", "label": "g_game.c", "language": "c", "sha256": "d5e4dd4b3a24952e", "symbol_count": 97, "symbols": [{"kind": "function", "line": 232, "name": "G_CmdChecksum", "signature": "int G_CmdChecksum (ticcmd_t* cmd)"}, {"kind": "function", "line": 243, "name": "WeaponSelectable", "signature": "static boolean WeaponSelectable(weapontype_t weapon)"}, {"kind": "function", "line": 280, "name": "G_NextWeapon", "signature": "static int G_NextWeapon(int direction)"}, {"doc": "G_BuildTiccmd Builds a ticcmd from all of the available inputs or reads it from the demo buffer. If recording a demo, write it out", "kind": "function", "line": 322, "name": "G_BuildTiccmd", "signature": "void G_BuildTiccmd (ticcmd_t* cmd, int maketic)"}, {"doc": "G_DoLoadLevel", "kind": "function", "line": 603, "name": "G_DoLoadLevel", "signature": "void G_DoLoadLevel (void)"}, {"kind": "function", "line": 674, "name": "SetJoyButtons", "signature": "static void SetJoyButtons(unsigned int buttons_mask)"}, {"kind": "function", "line": 702, "name": "SetMouseButtons", "signature": "static void SetMouseButtons(unsigned int buttons_mask)"}, {"doc": "G_Responder Get info needed to make ticcmd_ts for the players.", "kind": "function", "line": 733, "name": "G_Responder", "signature": "boolean G_Responder (event_t* ev)"}, {"doc": "G_Ticker Make ticcmd_ts for the players.", "kind": "function", "line": 854, "name": "G_Ticker", "signature": "void G_Ticker (void)"}, {"doc": "G_InitPlayer Called at the start. Called by the game initialization functions.", "kind": "function", "line": 1039, "name": "G_InitPlayer", "signature": "void G_InitPlayer (int player)"}, {"doc": "G_PlayerFinishLevel Can when a player completes a level.", "kind": "function", "line": 1051, "name": "G_PlayerFinishLevel", "signature": "void G_PlayerFinishLevel (int player)"}, {"doc": "G_PlayerReborn Called after a player dies almost everything is cleared and initialized", "kind": "function", "line": 1072, "name": "G_PlayerReborn", "signature": "void G_PlayerReborn (int player)"}, {"kind": "function", "line": 1114, "name": "G_CheckSpot", "signature": "boolean\nG_CheckSpot\n( int\t\tplayernum,\n mapthing_t*\tmthing )"}, {"doc": "G_DeathMatchSpawnPlayer Spawns a player at one of the random death match spots called at level load and each death", "kind": "function", "line": 1223, "name": "G_DeathMatchSpawnPlayer", "signature": "void G_DeathMatchSpawnPlayer (int playernum)"}, {"doc": "G_DoReborn", "kind": "function", "line": 1250, "name": "G_DoReborn", "signature": "void G_DoReborn (int playernum)"}, {"kind": "function", "line": 1294, "name": "G_ScreenShot", "signature": "void G_ScreenShot (void)"}, {"kind": "function", "line": 1327, "name": "G_ExitLevel", "signature": "void G_ExitLevel (void)"}, {"doc": "Here's for the german edition.", "kind": "function", "line": 1335, "name": "G_SecretExitLevel", "signature": "void G_SecretExitLevel (void)"}, {"kind": "function", "line": 1345, "name": "G_DoCompleted", "signature": "void G_DoCompleted (void)"}, {"doc": "G_WorldDone", "kind": "function", "line": 1494, "name": "G_WorldDone", "signature": "void G_WorldDone (void)"}, {"kind": "function", "line": 1518, "name": "G_DoWorldDone", "signature": "void G_DoWorldDone (void)"}, {"kind": "function", "line": 1538, "name": "G_LoadGame", "signature": "void G_LoadGame (char* name)"}, {"doc": "define VERSIONSIZE\t\t16", "kind": "function", "line": 1546, "name": "G_DoLoadGame", "signature": "void G_DoLoadGame (void)"}, {"doc": "G_SaveGame Called by the menu task. Description is a 24 byte text string", "kind": "function", "line": 1600, "name": "G_SaveGame", "signature": "void\nG_SaveGame\n( int\tslot,\n char*\tdescription )"}, {"kind": "function", "line": 1609, "name": "G_DoSaveGame", "signature": "void G_DoSaveGame (void)"}, {"kind": "function", "line": 1696, "name": "G_DeferedInitNew", "signature": "void\nG_DeferedInitNew\n( skill_t\tskill,\n int\t\tepisode,\n int\t\tmap)"}, {"kind": "function", "line": 1708, "name": "G_DoNewGame", "signature": "void G_DoNewGame (void)"}, {"kind": "function", "line": 1724, "name": "G_InitNew", "signature": "void\nG_InitNew\n( skill_t\tskill,\n int\t\tepisode,\n int\t\tmap )"}, {"doc": "DEMO RECORDING define DEMOMARKER\t\t0x80", "kind": "function", "line": 1896, "name": "G_ReadDemoTiccmd", "signature": "void G_ReadDemoTiccmd (ticcmd_t* cmd)"}, {"doc": "Increase the size of the demo buffer to allow unlimited demos", "kind": "function", "line": 1925, "name": "IncreaseDemoBuffer", "signature": "static void IncreaseDemoBuffer(void)"}, {"kind": "function", "line": 1955, "name": "G_WriteDemoTiccmd", "signature": "void G_WriteDemoTiccmd (ticcmd_t* cmd)"}, {"doc": "G_RecordDemo", "kind": "function", "line": 2010, "name": "G_RecordDemo", "signature": "void G_RecordDemo (char *name)"}, {"doc": "Get the demo version code appropriate for the version set in gameversion.", "kind": "function", "line": 2040, "name": "G_VanillaVersionCode", "signature": "int G_VanillaVersionCode(void)"}, {"kind": "function", "line": 2057, "name": "G_BeginRecording", "signature": "void G_BeginRecording (void)"}, {"kind": "function", "line": 2106, "name": "G_DeferedPlayDemo", "signature": "void G_DeferedPlayDemo (char* name)"}, {"doc": "Generate a string describing a demo version", "kind": "function", "line": 2114, "name": "DemoVersionDescription", "signature": "static char *DemoVersionDescription(int version)"}, {"kind": "function", "line": 2151, "name": "G_DoPlayDemo", "signature": "void G_DoPlayDemo (void)"}, {"doc": "G_TimeDemo", "kind": "function", "line": 2215, "name": "G_TimeDemo", "signature": "void G_TimeDemo (char* name)"}, {"doc": "=================== = = G_CheckDemoStatus = = Called after a death or level completion to allow demos to be cleaned up = Returns true if a new demo loop action will take place ===================", "kind": "function", "line": 2242, "name": "G_CheckDemoStatus", "signature": "boolean G_CheckDemoStatus (void)"}, {"kind": "function", "line": 88, "name": "G_DoVictory", "signature": "void G_DoVictory (void);"}, {"kind": "function", "line": 331, "name": "memset", "signature": "memset(cmd, 0, sizeof(ticcmd_t));"}, {"kind": "function", "line": 654, "name": "P_SetupLevel", "signature": "P_SetupLevel (gameepisode, gamemap, 0, gameskill);"}, {"kind": "function", "line": 658, "name": "Z_CheckHeap", "signature": "Z_CheckHeap ();"}, {"kind": "function", "line": 758, "name": "M_StartControlPanel", "signature": "M_StartControlPanel ();"}, {"kind": "function", "line": 888, "name": "F_StartFinale", "signature": "case ga_victory: F_StartFinale ();"}, {"kind": "function", "line": 894, "name": "V_ScreenShot", "signature": "case ga_screenshot: V_ScreenShot(\"DOOM%02i.%s\");"}, {"kind": "function", "line": 913, "name": "memcpy", "signature": "memcpy(cmd, &netcmds[i], sizeof(ticcmd_t));"}, {"kind": "function", "line": 940, "name": "M_snprintf", "signature": "M_snprintf(turbomessage, sizeof(turbomessage), \"%s is turbo!\", player_names[i]);"}, {"kind": "function", "line": 951, "name": "I_Error", "signature": "I_Error (\"consistency failure (%i should be %i)\", cmd->consistancy, consistancy[i][buf]);"}, {"kind": "function", "line": 975, "name": "S_ResumeSound", "signature": "else S_ResumeSound ();"}, {"kind": "function", "line": 982, "name": "M_StringCopy", "signature": "M_StringCopy(savedescription, \"NET GAME\", sizeof(savedescription));"}, {"kind": "function", "line": 999, "name": "WI_End", "signature": "WI_End();"}, {"kind": "function", "line": 1007, "name": "P_Ticker", "signature": "case GS_LEVEL: P_Ticker ();"}, {"kind": "function", "line": 1009, "name": "ST_Ticker", "signature": "ST_Ticker ();"}, {"kind": "function", "line": 1010, "name": "AM_Ticker", "signature": "AM_Ticker ();"}, {"kind": "function", "line": 1011, "name": "HU_Ticker", "signature": "HU_Ticker ();"}, {"kind": "function", "line": 1013, "name": "WI_Ticker", "signature": "case GS_INTERMISSION: WI_Ticker ();"}, {"kind": "function", "line": 1017, "name": "F_Ticker", "signature": "case GS_FINALE: F_Ticker ();"}, {"kind": "function", "line": 1021, "name": "D_PageTicker", "signature": "case GS_DEMOSCREEN: D_PageTicker ();"}, {"doc": "G_CheckSpot Returns false if the player cannot be respawned at the given mapthing_t spot because something is occupying it", "kind": "function", "line": 1113, "name": "P_SpawnPlayer", "signature": "void P_SpawnPlayer (mapthing_t* mthing);"}, {"kind": "function", "line": 1484, "name": "StatCopy", "signature": "StatCopy(&wminfo);"}, {"kind": "function", "line": 1486, "name": "WI_Start", "signature": "WI_Start (&wminfo);"}, {"kind": "function", "line": 1535, "name": "R_ExecuteSetViewSize", "signature": "void R_ExecuteSetViewSize (void);"}, {"kind": "function", "line": 1565, "name": "fclose", "signature": "fclose(save_stream);"}, {"doc": "dearchive all the modifications", "kind": "function", "line": 1577, "name": "P_UnArchivePlayers", "signature": "P_UnArchivePlayers ();"}, {"kind": "function", "line": 1578, "name": "P_UnArchiveWorld", "signature": "P_UnArchiveWorld ();"}, {"kind": "function", "line": 1579, "name": "P_UnArchiveThinkers", "signature": "P_UnArchiveThinkers ();"}, {"kind": "function", "line": 1580, "name": "P_UnArchiveSpecials", "signature": "P_UnArchiveSpecials ();"}, {"doc": "draw the pattern into the back screen", "kind": "function", "line": 1591, "name": "R_FillBackScreen", "signature": "R_FillBackScreen ();"}, {"kind": "function", "line": 1640, "name": "P_WriteSaveGameHeader", "signature": "P_WriteSaveGameHeader(savedescription);"}, {"kind": "function", "line": 1642, "name": "P_ArchivePlayers", "signature": "P_ArchivePlayers ();"}, {"kind": "function", "line": 1644, "name": "P_ArchiveWorld", "signature": "P_ArchiveWorld ();"}, {"kind": "function", "line": 1645, "name": "P_ArchiveThinkers", "signature": "P_ArchiveThinkers ();"}, {"kind": "function", "line": 1646, "name": "P_ArchiveSpecials", "signature": "P_ArchiveSpecials ();"}, {"kind": "function", "line": 1647, "name": "P_WriteSaveGameEOF", "signature": "P_WriteSaveGameEOF();"}, {"doc": "Now rename the temporary savegame file to the actual savegame file, overwriting the old savegame if there was one there.", "kind": "function", "line": 1674, "name": "remove", "signature": "remove(savegame_file);"}, {"kind": "function", "line": 1676, "name": "rename", "signature": "rename(temp_savegame_file, savegame_file);"}, {"kind": "function", "line": 1804, "name": "M_ClearRandom", "signature": "M_ClearRandom ();"}, {"doc": "Free the old buffer and point the demo pointers at the new buffer.", "kind": "function", "line": 1948, "name": "Z_Free", "signature": "Z_Free(demobuffer);"}, {"kind": "function", "line": 2174, "name": "printf", "signature": "printf(\"Demo is from a different game version (read %i, expected %i). Skipping demo.\\n\", demoversion, G_VanillaVersionCode());"}, {"kind": "function", "line": 2176, "name": "Z_ChangeTag", "signature": "Z_ChangeTag(demobuffer, PU_CACHE);"}, {"kind": "function", "line": 2179, "name": "D_StartTitle", "signature": "D_StartTitle();"}, {"kind": "function", "line": 2266, "name": "W_ReleaseLumpName", "signature": "W_ReleaseLumpName(defdemoname);"}, {"kind": "function", "line": 2279, "name": "D_AdvanceDemo", "signature": "else D_AdvanceDemo ();"}, {"kind": "function", "line": 2288, "name": "M_WriteFile", "signature": "M_WriteFile (demoname, demobuffer, demo_p - demobuffer);"}, {"kind": "variable", "line": 939, "name": "player_names", "signature": "extern char *player_names[4];"}, {"kind": "variable", "line": 1326, "name": "pagename", "signature": "extern char* pagename;"}, {"doc": "G_InitFromSavegame Can be called by the startup code or the menu task.", "kind": "variable", "line": 1534, "name": "setsizeneeded", "signature": "extern boolean setsizeneeded;"}, {"kind": "macro", "line": 74, "name": "SAVEGAMESIZE", "signature": "#define SAVEGAMESIZE"}, {"kind": "macro", "line": 151, "name": "MAXPLMOVE", "signature": "#define MAXPLMOVE"}, {"kind": "macro", "line": 153, "name": "TURBOTHRESHOLD", "signature": "#define TURBOTHRESHOLD"}, {"kind": "macro", "line": 192, "name": "SLOWTURNTICS", "signature": "#define SLOWTURNTICS"}, {"kind": "macro", "line": 194, "name": "NUMKEYS", "signature": "#define NUMKEYS"}, {"kind": "macro", "line": 196, "name": "MAX_JOY_BUTTONS", "signature": "#define MAX_JOY_BUTTONS"}, {"kind": "macro", "line": 224, "name": "BODYQUESIZE", "signature": "#define\tBODYQUESIZE"}, {"kind": "macro", "line": 1544, "name": "VERSIONSIZE", "signature": "#define VERSIONSIZE"}, {"kind": "macro", "line": 1895, "name": "DEMOMARKER", "signature": "#define DEMOMARKER"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Duh. ifndef __G_GAME__ define __G_GAME__ include \"doomdef.h\" include \"d_event.h\" include \"d_ticcmd.h\" GAME", "id": "progs/doomgeneric/g_game.h", "kind": "module", "label": "g_game.h", "language": "h", "sha256": "24c881330997d4a0", "symbol_count": 24, "symbols": [{"doc": "GAME", "kind": "function", "line": 31, "name": "G_DeathMatchSpawnPlayer", "signature": "void G_DeathMatchSpawnPlayer (int playernum);"}, {"kind": "function", "line": 32, "name": "G_InitNew", "signature": "void G_InitNew (skill_t skill, int episode, int map);"}, {"doc": "Can be called by the startup code or M_Responder. A normal game starts at map 1, but a warp test can start elsewhere", "kind": "function", "line": 38, "name": "G_DeferedInitNew", "signature": "void G_DeferedInitNew (skill_t skill, int episode, int map);"}, {"kind": "function", "line": 39, "name": "G_DeferedPlayDemo", "signature": "void G_DeferedPlayDemo (char* demo);"}, {"doc": "Can be called by the startup code or M_Responder, calls P_SetupLevel or W_EnterWorld.", "kind": "function", "line": 44, "name": "G_LoadGame", "signature": "void G_LoadGame (char* name);"}, {"kind": "function", "line": 45, "name": "G_DoLoadGame", "signature": "void G_DoLoadGame (void);"}, {"doc": "Called by M_Responder.", "kind": "function", "line": 49, "name": "G_SaveGame", "signature": "void G_SaveGame (int slot, char* description);"}, {"doc": "Only called by startup code.", "kind": "function", "line": 52, "name": "G_RecordDemo", "signature": "void G_RecordDemo (char* name);"}, {"kind": "function", "line": 53, "name": "G_BeginRecording", "signature": "void G_BeginRecording (void);"}, {"kind": "function", "line": 55, "name": "G_PlayDemo", "signature": "void G_PlayDemo (char* name);"}, {"kind": "function", "line": 57, "name": "G_TimeDemo", "signature": "void G_TimeDemo (char* name);"}, {"kind": "function", "line": 58, "name": "G_CheckDemoStatus", "signature": "boolean G_CheckDemoStatus (void);"}, {"kind": "function", "line": 59, "name": "G_ExitLevel", "signature": "void G_ExitLevel (void);"}, {"kind": "function", "line": 61, "name": "G_SecretExitLevel", "signature": "void G_SecretExitLevel (void);"}, {"kind": "function", "line": 62, "name": "G_WorldDone", "signature": "void G_WorldDone (void);"}, {"doc": "Read current data from inputs and build a player movement command.", "kind": "function", "line": 66, "name": "G_BuildTiccmd", "signature": "void G_BuildTiccmd (ticcmd_t *cmd, int maketic);"}, {"kind": "function", "line": 68, "name": "G_Ticker", "signature": "void G_Ticker (void);"}, {"kind": "function", "line": 70, "name": "G_Responder", "signature": "boolean G_Responder (event_t* ev);"}, {"kind": "function", "line": 71, "name": "G_ScreenShot", "signature": "void G_ScreenShot (void);"}, {"kind": "function", "line": 73, "name": "G_DrawMouseSpeedBox", "signature": "void G_DrawMouseSpeedBox(void);"}, {"kind": "function", "line": 75, "name": "G_VanillaVersionCode", "signature": "int G_VanillaVersionCode(void);"}, {"kind": "variable", "line": 76, "name": "vanilla_savegame_limit", "signature": "extern int vanilla_savegame_limit;"}, {"kind": "variable", "line": 78, "name": "vanilla_demo_limit", "signature": "extern int vanilla_demo_limit;"}, {"kind": "macro", "line": 21, "name": "__G_GAME__", "signature": "#define __G_GAME__"}]}, {"doc": "Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: GUS emulation code. Actually emulating a GUS is far too much work; fortunately GUS \"emulation\" already exists in the form of Timidity, which supports GUS patch files. This code therefore converts Doom's DMXGUS lump into an equivalent Timidity configuration file. include include include include include \"w_wad.h\" include \"z_zone.h\"", "id": "progs/doomgeneric/gusconf.c", "kind": "module", "label": "gusconf.c", "language": "c", "sha256": "8d06e7870abd92ae", "symbol_count": 17, "symbols": [{"kind": "struct", "line": 34, "name": "gus_config_t"}, {"kind": "function", "line": 42, "name": "MappingIndex", "signature": "static unsigned int MappingIndex(void)"}, {"kind": "function", "line": 60, "name": "SplitLine", "signature": "static int SplitLine(char *line, char **fields, unsigned int max_fields)"}, {"kind": "function", "line": 107, "name": "ParseLine", "signature": "static void ParseLine(gus_config_t *config, char *line)"}, {"kind": "function", "line": 128, "name": "ParseDMXConfig", "signature": "static void ParseDMXConfig(char *dmxconf, gus_config_t *config)"}, {"kind": "function", "line": 164, "name": "FreeDMXConfig", "signature": "static void FreeDMXConfig(gus_config_t *config)"}, {"kind": "function", "line": 174, "name": "ReadDMXConfig", "signature": "static char *ReadDMXConfig(void)"}, {"kind": "function", "line": 196, "name": "WriteTimidityConfig", "signature": "static boolean WriteTimidityConfig(char *path, gus_config_t *config)"}, {"kind": "function", "line": 243, "name": "GUS_WriteConfig", "signature": "boolean GUS_WriteConfig(char *path)"}, {"kind": "function", "line": 123, "name": "free", "signature": "free(config->patch_names[instr_id]);"}, {"kind": "function", "line": 133, "name": "memset", "signature": "memset(config, 0, sizeof(gus_config_t));"}, {"kind": "function", "line": 192, "name": "W_ReadLump", "signature": "W_ReadLump(lumpnum, data);"}, {"kind": "function", "line": 208, "name": "fprintf", "signature": "fprintf(fstream, \"# Autogenerated Timidity config.\\n\\n\");"}, {"kind": "function", "line": 238, "name": "fclose", "signature": "fclose(fstream);"}, {"kind": "function", "line": 252, "name": "printf", "signature": "printf(\"You haven't configured gus_patch_path.\\n\");"}, {"kind": "function", "line": 267, "name": "Z_Free", "signature": "Z_Free(dmxconf);"}, {"kind": "macro", "line": 31, "name": "MAX_INSTRUMENTS", "signature": "#define MAX_INSTRUMENTS"}]}, {"doc": "Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: GUS emulation code. ifndef __GUSCONF_H__ define __GUSCONF_H__ include \"doomtype.h\"", "id": "progs/doomgeneric/gusconf.h", "kind": "module", "label": "gusconf.h", "language": "h", "sha256": "1fc4d54d1d731f3a", "symbol_count": 4, "symbols": [{"kind": "function", "line": 25, "name": "GUS_WriteConfig", "signature": "boolean GUS_WriteConfig(char *path);"}, {"doc": "include \"doomtype.h\"", "kind": "variable", "line": 22, "name": "gus_patch_path", "signature": "extern char *gus_patch_path;"}, {"kind": "variable", "line": 24, "name": "gus_ram_kb", "signature": "extern unsigned int gus_ram_kb;"}, {"kind": "macro", "line": 19, "name": "__GUSCONF_H__", "signature": "#define __GUSCONF_H__"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: heads-up text and input code include include \"doomdef.h\" include \"doomkeys.h\" include \"v_video.h\" include \"i_swap.h\" include \"hu_lib.h\" include \"r_local.h\" include \"r_draw.h\"", "id": "progs/doomgeneric/hu_lib.c", "kind": "module", "label": "hu_lib.c", "language": "c", "sha256": "fe744d8641d0b721", "symbol_count": 24, "symbols": [{"kind": "function", "line": 35, "name": "HUlib_init", "signature": "void HUlib_init(void)"}, {"kind": "function", "line": 39, "name": "HUlib_clearTextLine", "signature": "void HUlib_clearTextLine(hu_textline_t* t)"}, {"kind": "function", "line": 46, "name": "HUlib_initTextLine", "signature": "void\nHUlib_initTextLine\n( hu_textline_t*\tt,\n int\t\t\tx,\n int\t\t\ty,\n patch_t**\t\tf,\n int\t\t\tsc )"}, {"kind": "function", "line": 61, "name": "HUlib_addCharToTextLine", "signature": "boolean\nHUlib_addCharToTextLine\n( hu_textline_t*\tt,\n char\t\t\tch )"}, {"kind": "function", "line": 79, "name": "HUlib_delCharFromTextLine", "signature": "boolean HUlib_delCharFromTextLine(hu_textline_t* t)"}, {"kind": "function", "line": 92, "name": "HUlib_drawTextLine", "signature": "void\nHUlib_drawTextLine\n( hu_textline_t*\tl,\n boolean\t\tdrawcursor )"}, {"doc": "sorta called by HU_Erase and just better darn get things straight", "kind": "function", "line": 137, "name": "HUlib_eraseTextLine", "signature": "void HUlib_eraseTextLine(hu_textline_t* l)"}, {"kind": "function", "line": 167, "name": "HUlib_initSText", "signature": "void\nHUlib_initSText\n( hu_stext_t*\ts,\n int\t\tx,\n int\t\ty,\n int\t\th,\n patch_t**\tfont,\n int\t\tstar..."}, {"kind": "function", "line": 191, "name": "HUlib_addLineToSText", "signature": "void HUlib_addLineToSText(hu_stext_t* s)"}, {"kind": "function", "line": 207, "name": "HUlib_addMessageToSText", "signature": "void\nHUlib_addMessageToSText\n( hu_stext_t*\ts,\n char*\t\tprefix,\n char*\t\tmsg )"}, {"kind": "function", "line": 222, "name": "HUlib_drawSText", "signature": "void HUlib_drawSText(hu_stext_t* s)"}, {"kind": "function", "line": 245, "name": "HUlib_eraseSText", "signature": "void HUlib_eraseSText(hu_stext_t* s)"}, {"kind": "function", "line": 260, "name": "HUlib_initIText", "signature": "void\nHUlib_initIText\n( hu_itext_t*\tit,\n int\t\tx,\n int\t\ty,\n patch_t**\tfont,\n int\t\tstartchar,\n ..."}, {"doc": "The following deletion routines adhere to the left margin restriction", "kind": "function", "line": 278, "name": "HUlib_delCharFromIText", "signature": "void HUlib_delCharFromIText(hu_itext_t* it)"}, {"kind": "function", "line": 283, "name": "HUlib_eraseLineFromIText", "signature": "void HUlib_eraseLineFromIText(hu_itext_t* it)"}, {"doc": "Resets left margin as well", "kind": "function", "line": 291, "name": "HUlib_resetIText", "signature": "void HUlib_resetIText(hu_itext_t* it)"}, {"kind": "function", "line": 296, "name": "HUlib_addPrefixToIText", "signature": "void\nHUlib_addPrefixToIText\n( hu_itext_t*\tit,\n char*\t\tstr )"}, {"doc": "wrapper function for handling general keyed input. returns true if it ate the key", "kind": "function", "line": 309, "name": "HUlib_keyInIText", "signature": "boolean\nHUlib_keyInIText\n( hu_itext_t*\tit,\n unsigned char ch )"}, {"kind": "function", "line": 328, "name": "HUlib_drawIText", "signature": "void HUlib_drawIText(hu_itext_t* it)"}, {"kind": "function", "line": 339, "name": "HUlib_eraseIText", "signature": "void HUlib_eraseIText(hu_itext_t* it)"}, {"kind": "function", "line": 116, "name": "V_DrawPatchDirect", "signature": "V_DrawPatchDirect(x, l->y, l->f[c - l->sc]);"}, {"kind": "function", "line": 157, "name": "R_VideoErase", "signature": "R_VideoErase(yoffset, viewwindowx);"}, {"doc": "boolean : whether the screen is always erased define noterased viewwindowx", "kind": "variable", "line": 33, "name": "automapactive", "signature": "extern boolean automapactive;"}, {"kind": "macro", "line": 32, "name": "noterased", "signature": "#define noterased"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: none ifndef __HULIB__ define __HULIB__ We are referring to patches. include \"r_defs.h\" font stuff define HU_CHARERASE\tKEY_BACKSPACE define HU_MAXLINES\t\t4 define HU_MAXLINELENGTH\t80", "id": "progs/doomgeneric/hu_lib.h", "kind": "module", "label": "hu_lib.h", "language": "h", "sha256": "33bb0317cf3c8bc5", "symbol_count": 27, "symbols": [{"doc": "Text Line widget (parent of Scrolling Text and Input Text widgets)", "kind": "struct", "line": 36, "name": "hu_textline_t"}, {"doc": "Scrolling Text window widget (child of Text Line widget)", "kind": "struct", "line": 56, "name": "hu_stext_t"}, {"doc": "Input Text Line widget (child of Text Line widget)", "kind": "struct", "line": 72, "name": "hu_itext_t"}, {"doc": "initializes heads-up widget library", "kind": "function", "line": 91, "name": "HUlib_init", "signature": "void HUlib_init(void);"}, {"doc": "clear a line of text", "kind": "function", "line": 98, "name": "HUlib_clearTextLine", "signature": "void HUlib_clearTextLine(hu_textline_t *t);"}, {"kind": "function", "line": 99, "name": "HUlib_initTextLine", "signature": "void HUlib_initTextLine(hu_textline_t *t, int x, int y, patch_t **f, int sc);"}, {"doc": "returns success", "kind": "function", "line": 103, "name": "HUlib_addCharToTextLine", "signature": "boolean HUlib_addCharToTextLine(hu_textline_t *t, char ch);"}, {"doc": "returns success", "kind": "function", "line": 106, "name": "HUlib_delCharFromTextLine", "signature": "boolean HUlib_delCharFromTextLine(hu_textline_t *t);"}, {"doc": "draws tline", "kind": "function", "line": 109, "name": "HUlib_drawTextLine", "signature": "void HUlib_drawTextLine(hu_textline_t *l, boolean drawcursor);"}, {"doc": "erases text line", "kind": "function", "line": 112, "name": "HUlib_eraseTextLine", "signature": "void HUlib_eraseTextLine(hu_textline_t *l);"}, {"doc": "?", "kind": "function", "line": 120, "name": "HUlib_initSText", "signature": "void HUlib_initSText ( hu_stext_t* s, int x, int y, int h, patch_t** font, int startchar, boolean* on );"}, {"doc": "add a new line", "kind": "function", "line": 131, "name": "HUlib_addLineToSText", "signature": "void HUlib_addLineToSText(hu_stext_t* s);"}, {"doc": "?", "kind": "function", "line": 134, "name": "HUlib_addMessageToSText", "signature": "void HUlib_addMessageToSText ( hu_stext_t* s, char* prefix, char* msg );"}, {"doc": "draws stext", "kind": "function", "line": 141, "name": "HUlib_drawSText", "signature": "void HUlib_drawSText(hu_stext_t* s);"}, {"doc": "erases all stext lines", "kind": "function", "line": 144, "name": "HUlib_eraseSText", "signature": "void HUlib_eraseSText(hu_stext_t* s);"}, {"doc": "Input Text Line widget routines", "kind": "function", "line": 147, "name": "HUlib_initIText", "signature": "void HUlib_initIText ( hu_itext_t* it, int x, int y, patch_t** font, int startchar, boolean* on );"}, {"doc": "enforces left margin", "kind": "function", "line": 157, "name": "HUlib_delCharFromIText", "signature": "void HUlib_delCharFromIText(hu_itext_t* it);"}, {"doc": "enforces left margin", "kind": "function", "line": 160, "name": "HUlib_eraseLineFromIText", "signature": "void HUlib_eraseLineFromIText(hu_itext_t* it);"}, {"doc": "resets line and left margin", "kind": "function", "line": 163, "name": "HUlib_resetIText", "signature": "void HUlib_resetIText(hu_itext_t* it);"}, {"doc": "left of left-margin", "kind": "function", "line": 166, "name": "HUlib_addPrefixToIText", "signature": "void HUlib_addPrefixToIText ( hu_itext_t* it, char* str );"}, {"doc": "whether eaten", "kind": "function", "line": 172, "name": "HUlib_keyInIText", "signature": "boolean HUlib_keyInIText ( hu_itext_t* it, unsigned char ch );"}, {"kind": "function", "line": 176, "name": "HUlib_drawIText", "signature": "void HUlib_drawIText(hu_itext_t* it);"}, {"doc": "erases all itext lines", "kind": "function", "line": 180, "name": "HUlib_eraseIText", "signature": "void HUlib_eraseIText(hu_itext_t* it);"}, {"kind": "macro", "line": 19, "name": "__HULIB__", "signature": "#define __HULIB__"}, {"kind": "macro", "line": 25, "name": "HU_CHARERASE", "signature": "#define HU_CHARERASE"}, {"kind": "macro", "line": 26, "name": "HU_MAXLINES", "signature": "#define HU_MAXLINES"}, {"kind": "macro", "line": 28, "name": "HU_MAXLINELENGTH", "signature": "#define HU_MAXLINELENGTH"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Heads-up displays include include \"doomdef.h\" include \"doomkeys.h\" include \"z_zone.h\" include \"deh_main.h\" include \"i_swap.h\" include \"i_video.h\" include \"hu_stuff.h\"", "id": "progs/doomgeneric/hu_stuff.c", "kind": "module", "label": "hu_stuff.c", "language": "c", "sha256": "ce0e642d4b4f16e9", "symbol_count": 37, "symbols": [{"kind": "function", "line": 285, "name": "HU_Init", "signature": "void HU_Init(void)"}, {"kind": "function", "line": 302, "name": "HU_Stop", "signature": "void HU_Stop(void)"}, {"kind": "function", "line": 307, "name": "HU_Start", "signature": "void HU_Start(void)"}, {"kind": "function", "line": 382, "name": "HU_Drawer", "signature": "void HU_Drawer(void)"}, {"kind": "function", "line": 392, "name": "HU_Erase", "signature": "void HU_Erase(void)"}, {"kind": "function", "line": 401, "name": "HU_Ticker", "signature": "void HU_Ticker(void)"}, {"kind": "function", "line": 480, "name": "HU_queueChatChar", "signature": "void HU_queueChatChar(char c)"}, {"kind": "function", "line": 494, "name": "HU_dequeueChatChar", "signature": "char HU_dequeueChatChar(void)"}, {"kind": "function", "line": 511, "name": "HU_Responder", "signature": "boolean HU_Responder(event_t *ev)"}, {"kind": "function", "line": 297, "name": "DEH_snprintf", "signature": "DEH_snprintf(buffer, 9, \"STCFN%.3d\", j++);"}, {"doc": "create the message widget", "kind": "function", "line": 324, "name": "HUlib_initSText", "signature": "HUlib_initSText(&w_message, HU_MSGX, HU_MSGY, HU_MSGHEIGHT, hu_font, HU_FONTSTART, &message_on);"}, {"doc": "create the map title widget", "kind": "function", "line": 330, "name": "HUlib_initTextLine", "signature": "HUlib_initTextLine(&w_title, HU_TITLEX, HU_TITLEY, hu_font, HU_FONTSTART);"}, {"doc": "create the chat widget", "kind": "function", "line": 370, "name": "HUlib_initIText", "signature": "HUlib_initIText(&w_chat, HU_INPUTX, HU_INPUTY, hu_font, HU_FONTSTART, &chat_on);"}, {"kind": "function", "line": 385, "name": "HUlib_drawSText", "signature": "HUlib_drawSText(&w_message);"}, {"kind": "function", "line": 387, "name": "HUlib_drawIText", "signature": "HUlib_drawIText(&w_chat);"}, {"kind": "function", "line": 395, "name": "HUlib_eraseSText", "signature": "HUlib_eraseSText(&w_message);"}, {"kind": "function", "line": 397, "name": "HUlib_eraseIText", "signature": "HUlib_eraseIText(&w_chat);"}, {"kind": "function", "line": 398, "name": "HUlib_eraseTextLine", "signature": "HUlib_eraseTextLine(&w_title);"}, {"kind": "function", "line": 422, "name": "HUlib_addMessageToSText", "signature": "HUlib_addMessageToSText(&w_message, 0, plr->message);"}, {"kind": "function", "line": 462, "name": "S_StartSound", "signature": "else S_StartSound(0, sfx_tink);"}, {"kind": "function", "line": 465, "name": "HUlib_resetIText", "signature": "HUlib_resetIText(&w_inputbuffer[i]);"}, {"kind": "function", "line": 608, "name": "M_StringCopy", "signature": "M_StringCopy(lastmessage, chat_macros[c], sizeof(lastmessage));"}, {"kind": "variable", "line": 102, "name": "showMessages", "signature": "extern int showMessages;"}, {"kind": "macro", "line": 47, "name": "HU_TITLE", "signature": "#define HU_TITLE"}, {"kind": "macro", "line": 48, "name": "HU_TITLE2", "signature": "#define HU_TITLE2"}, {"kind": "macro", "line": 49, "name": "HU_TITLEP", "signature": "#define HU_TITLEP"}, {"kind": "macro", "line": 50, "name": "HU_TITLET", "signature": "#define HU_TITLET"}, {"kind": "macro", "line": 51, "name": "HU_TITLE_CHEX", "signature": "#define HU_TITLE_CHEX"}, {"kind": "macro", "line": 52, "name": "HU_TITLEHEIGHT", "signature": "#define HU_TITLEHEIGHT"}, {"kind": "macro", "line": 53, "name": "HU_TITLEX", "signature": "#define HU_TITLEX"}, {"kind": "macro", "line": 54, "name": "HU_TITLEY", "signature": "#define HU_TITLEY"}, {"kind": "macro", "line": 55, "name": "HU_INPUTTOGGLE", "signature": "#define HU_INPUTTOGGLE"}, {"kind": "macro", "line": 57, "name": "HU_INPUTX", "signature": "#define HU_INPUTX"}, {"kind": "macro", "line": 58, "name": "HU_INPUTY", "signature": "#define HU_INPUTY"}, {"kind": "macro", "line": 59, "name": "HU_INPUTWIDTH", "signature": "#define HU_INPUTWIDTH"}, {"kind": "macro", "line": 60, "name": "HU_INPUTHEIGHT", "signature": "#define HU_INPUTHEIGHT"}, {"kind": "macro", "line": 474, "name": "QUEUESIZE", "signature": "#define QUEUESIZE"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Head up display ifndef __HU_STUFF_H__ define __HU_STUFF_H__ include \"d_event.h\" Globally visible constants. define HU_FONTSTART\t'!'\t// the first font characters define HU_FONTEND\t'_'\t// the last font characters Calculate # of glyphs in font.", "id": "progs/doomgeneric/hu_stuff.h", "kind": "module", "label": "hu_stuff.h", "language": "h", "sha256": "6300e3d73d57f53e", "symbol_count": 18, "symbols": [{"doc": "HEADS UP TEXT", "kind": "function", "line": 45, "name": "HU_Init", "signature": "void HU_Init(void);"}, {"kind": "function", "line": 47, "name": "HU_Start", "signature": "void HU_Start(void);"}, {"kind": "function", "line": 48, "name": "HU_Responder", "signature": "boolean HU_Responder(event_t* ev);"}, {"kind": "function", "line": 50, "name": "HU_Ticker", "signature": "void HU_Ticker(void);"}, {"kind": "function", "line": 52, "name": "HU_Drawer", "signature": "void HU_Drawer(void);"}, {"kind": "function", "line": 53, "name": "HU_dequeueChatChar", "signature": "char HU_dequeueChatChar(void);"}, {"kind": "function", "line": 54, "name": "HU_Erase", "signature": "void HU_Erase(void);"}, {"kind": "variable", "line": 55, "name": "chat_macros", "signature": "extern char *chat_macros[10];"}, {"kind": "macro", "line": 19, "name": "__HU_STUFF_H__", "signature": "#define __HU_STUFF_H__"}, {"kind": "macro", "line": 27, "name": "HU_FONTSTART", "signature": "#define HU_FONTSTART"}, {"kind": "macro", "line": 28, "name": "HU_FONTEND", "signature": "#define HU_FONTEND"}, {"kind": "macro", "line": 31, "name": "HU_FONTSIZE", "signature": "#define HU_FONTSIZE"}, {"kind": "macro", "line": 32, "name": "HU_BROADCAST", "signature": "#define HU_BROADCAST"}, {"kind": "macro", "line": 34, "name": "HU_MSGX", "signature": "#define HU_MSGX"}, {"kind": "macro", "line": 36, "name": "HU_MSGY", "signature": "#define HU_MSGY"}, {"kind": "macro", "line": 37, "name": "HU_MSGWIDTH", "signature": "#define HU_MSGWIDTH"}, {"kind": "macro", "line": 38, "name": "HU_MSGHEIGHT", "signature": "#define HU_MSGHEIGHT"}, {"kind": "macro", "line": 39, "name": "HU_MSGTIMEOUT", "signature": "#define HU_MSGTIMEOUT"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 1993-2008 Raven Software This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. SDL implementation of the Hexen CD interface. include ifdef ORIGCODE include \"SDL.h\" include \"SDL_cdrom.h\" endif include \"doomtype.h\" include \"i_cdmus.h\" ifdef ORIGCODE", "id": "progs/doomgeneric/i_cdmus.c", "kind": "module", "label": "i_cdmus.c", "language": "c", "sha256": "9c1b45fd88f5764c", "symbol_count": 11, "symbols": [{"kind": "function", "line": 37, "name": "I_CDMusInit", "signature": "int I_CDMusInit(void)"}, {"doc": "We cannot print status messages inline during startup, they must be deferred until after I_CDMusInit has returned.", "kind": "function", "line": 91, "name": "I_CDMusPrintStartup", "signature": "void I_CDMusPrintStartup(void)"}, {"kind": "function", "line": 106, "name": "I_CDMusPlay", "signature": "int I_CDMusPlay(int track)"}, {"kind": "function", "line": 129, "name": "I_CDMusStop", "signature": "int I_CDMusStop(void)"}, {"kind": "function", "line": 144, "name": "I_CDMusResume", "signature": "int I_CDMusResume(void)"}, {"kind": "function", "line": 159, "name": "I_CDMusSetVolume", "signature": "int I_CDMusSetVolume(int volume)"}, {"kind": "function", "line": 168, "name": "I_CDMusFirstTrack", "signature": "int I_CDMusFirstTrack(void)"}, {"kind": "function", "line": 201, "name": "I_CDMusLastTrack", "signature": "int I_CDMusLastTrack(void)"}, {"kind": "function", "line": 218, "name": "I_CDMusTrackLength", "signature": "int I_CDMusTrackLength(int track_num)"}, {"kind": "function", "line": 97, "name": "printf", "signature": "printf(\"I_CDMusInit: Using CD-ROM drive: %s\\n\", cd_name);"}, {"kind": "function", "line": 102, "name": "fprintf", "signature": "fprintf(stderr, \"I_CDMusInit: %s\\n\", startup_error);"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 1993-2008 Raven Software This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. i_cdmus.h ifndef __ICDMUS__ define __ICDMUS__ define CDERR_NOTINSTALLED 10 // MSCDEX not installed define CDERR_NOAUDIOSUPPORT 11 // CD-ROM Doesn't support audio define CDERR_NOAUDIOTRACKS 12 // Current CD has no audio tracks define CDERR_BADDRIVE 20 // Bad drive number define CDERR_BADTRACK 21 // Bad track number define CDERR_IOCTLBUFFMEM 22 // Not enough low memory for IOCTL define CDERR_DEVREQBASE 100 // DevReq errors", "id": "progs/doomgeneric/i_cdmus.h", "kind": "module", "label": "i_cdmus.h", "language": "h", "sha256": "6c0670bfc435e06f", "symbol_count": 18, "symbols": [{"kind": "function", "line": 30, "name": "I_CDMusInit", "signature": "int I_CDMusInit(void);"}, {"kind": "function", "line": 32, "name": "I_CDMusPrintStartup", "signature": "void I_CDMusPrintStartup(void);"}, {"kind": "function", "line": 33, "name": "I_CDMusPlay", "signature": "int I_CDMusPlay(int track);"}, {"kind": "function", "line": 34, "name": "I_CDMusStop", "signature": "int I_CDMusStop(void);"}, {"kind": "function", "line": 35, "name": "I_CDMusResume", "signature": "int I_CDMusResume(void);"}, {"kind": "function", "line": 36, "name": "I_CDMusSetVolume", "signature": "int I_CDMusSetVolume(int volume);"}, {"kind": "function", "line": 37, "name": "I_CDMusFirstTrack", "signature": "int I_CDMusFirstTrack(void);"}, {"kind": "function", "line": 38, "name": "I_CDMusLastTrack", "signature": "int I_CDMusLastTrack(void);"}, {"kind": "function", "line": 39, "name": "I_CDMusTrackLength", "signature": "int I_CDMusTrackLength(int track);"}, {"doc": "define CDERR_NOTINSTALLED 10 // MSCDEX not installed define CDERR_NOAUDIOSUPPORT 11 // CD-ROM Doesn't support audio define CDERR_NOAUDIOTRACKS 12 // Current CD has no audio tracks define CDERR_BADDRIVE 20 // Bad drive number define CDERR_BADTRACK 21 // Bad track number define CDERR_IOCTLBUFFMEM 22 // Not enough low memory for IOCTL define CDERR_DEVREQBASE 100 // DevReq errors", "kind": "variable", "line": 28, "name": "cd_Error", "signature": "extern int cd_Error;"}, {"kind": "macro", "line": 19, "name": "__ICDMUS__", "signature": "#define __ICDMUS__"}, {"kind": "macro", "line": 20, "name": "CDERR_NOTINSTALLED", "signature": "#define CDERR_NOTINSTALLED"}, {"kind": "macro", "line": 22, "name": "CDERR_NOAUDIOSUPPORT", "signature": "#define CDERR_NOAUDIOSUPPORT"}, {"kind": "macro", "line": 23, "name": "CDERR_NOAUDIOTRACKS", "signature": "#define CDERR_NOAUDIOTRACKS"}, {"kind": "macro", "line": 24, "name": "CDERR_BADDRIVE", "signature": "#define CDERR_BADDRIVE"}, {"kind": "macro", "line": 25, "name": "CDERR_BADTRACK", "signature": "#define CDERR_BADTRACK"}, {"kind": "macro", "line": 26, "name": "CDERR_IOCTLBUFFMEM", "signature": "#define CDERR_IOCTLBUFFMEM"}, {"kind": "macro", "line": 27, "name": "CDERR_DEVREQBASE", "signature": "#define CDERR_DEVREQBASE"}]}, {"doc": "Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Exit text-mode ENDOOM screen. include include include \"config.h\" include \"doomtype.h\" include \"i_video.h\" ifdef ORIGCODE include \"txt_main.h\" endif define ENDOOM_W 80 define ENDOOM_H 25", "id": "progs/doomgeneric/i_endoom.c", "kind": "module", "label": "i_endoom.c", "language": "c", "sha256": "6d7555a6535f2db1", "symbol_count": 10, "symbols": [{"doc": "Displays the text mode ending screen after the game quits", "kind": "function", "line": 35, "name": "I_Endoom", "signature": "void I_Endoom(byte *endoom_data)"}, {"doc": "Set up text mode screen", "kind": "function", "line": 44, "name": "TXT_Init", "signature": "TXT_Init();"}, {"kind": "function", "line": 46, "name": "I_InitWindowTitle", "signature": "I_InitWindowTitle();"}, {"kind": "function", "line": 47, "name": "I_InitWindowIcon", "signature": "I_InitWindowIcon();"}, {"kind": "function", "line": 57, "name": "memcpy", "signature": "memcpy(screendata + (y * TXT_SCREEN_W * 2), endoom_data + (y * ENDOOM_W + indent) * 2, TXT_SCREEN_W * 2);"}, {"kind": "function", "line": 66, "name": "TXT_UpdateScreen", "signature": "TXT_UpdateScreen();"}, {"kind": "function", "line": 72, "name": "TXT_Sleep", "signature": "TXT_Sleep(0);"}, {"doc": "Shut down text mode screen", "kind": "function", "line": 77, "name": "TXT_Shutdown", "signature": "TXT_Shutdown();"}, {"kind": "macro", "line": 28, "name": "ENDOOM_W", "signature": "#define ENDOOM_W"}, {"kind": "macro", "line": 30, "name": "ENDOOM_H", "signature": "#define ENDOOM_H"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Exit text-mode ENDOOM screen. ifndef __I_ENDOOM__ define __I_ENDOOM__ Display the Endoom screen on shutdown. Pass a pointer to the ENDOOM lump.", "id": "progs/doomgeneric/i_endoom.h", "kind": "module", "label": "i_endoom.h", "language": "h", "sha256": "6d1ab4694c4662f3", "symbol_count": 2, "symbols": [{"doc": "Display the Endoom screen on shutdown. Pass a pointer to the ENDOOM lump.", "kind": "function", "line": 25, "name": "I_Endoom", "signature": "void I_Endoom(byte *data);"}, {"kind": "macro", "line": 21, "name": "__I_ENDOOM__", "signature": "#define __I_ENDOOM__"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. include include include include include include include \"config.h\" include \"deh_str.h\" include \"doomtype.h\" include \"doomkeys.h\" include \"i_joystick.h\" include \"i_system.h\" include \"i_swap.h\"", "id": "progs/doomgeneric/i_input.c", "kind": "module", "label": "i_input.c", "language": "c", "sha256": "e1f3fd219f80419c", "symbol_count": 6, "symbols": [{"kind": "function", "line": 223, "name": "TranslateKey", "signature": "static unsigned char TranslateKey(unsigned char key)"}, {"doc": "Get the equivalent ASCII (Unicode?) character for a keypress.", "kind": "function", "line": 241, "name": "GetTypedChar", "signature": "static unsigned char GetTypedChar(unsigned char key)"}, {"kind": "function", "line": 262, "name": "UpdateShiftStatus", "signature": "static void UpdateShiftStatus(int pressed, unsigned char key)"}, {"kind": "function", "line": 277, "name": "I_GetEvent", "signature": "void I_GetEvent(void)"}, {"kind": "function", "line": 337, "name": "I_InitInput", "signature": "void I_InitInput(void)"}, {"kind": "function", "line": 302, "name": "D_PostEvent", "signature": "D_PostEvent(&event);"}]}, {"doc": "Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: SDL Joystick code. ifdef ORIGCODE include \"SDL.h\" include \"SDL_joystick.h\" endif include include include include \"doomtype.h\" include \"d_event.h\" include \"i_joystick.h\" include \"i_system.h\"", "id": "progs/doomgeneric/i_joystick.c", "kind": "module", "label": "i_joystick.c", "language": "c", "sha256": "fd41b8db4f507bb0", "symbol_count": 20, "symbols": [{"kind": "function", "line": 76, "name": "I_ShutdownJoystick", "signature": "void I_ShutdownJoystick(void)"}, {"doc": "ifdef ORIGCODE", "kind": "function", "line": 90, "name": "IsValidAxis", "signature": "static boolean IsValidAxis(int axis)"}, {"doc": "endif", "kind": "function", "line": 114, "name": "I_InitJoystick", "signature": "void I_InitJoystick(void)"}, {"doc": "ifdef ORIGCODE", "kind": "function", "line": 171, "name": "IsAxisButton", "signature": "static boolean IsAxisButton(int physbutton)"}, {"doc": "Get the state of the given virtual button.", "kind": "function", "line": 202, "name": "ReadButtonState", "signature": "static int ReadButtonState(int vbutton)"}, {"doc": "Get a bitmask of all currently-pressed buttons", "kind": "function", "line": 227, "name": "GetButtonsState", "signature": "static int GetButtonsState(void)"}, {"doc": "Read the state of an axis, inverting if necessary.", "kind": "function", "line": 247, "name": "GetAxisState", "signature": "static int GetAxisState(int axis, int invert)"}, {"doc": "endif", "kind": "function", "line": 321, "name": "I_UpdateJoystick", "signature": "void I_UpdateJoystick(void)"}, {"kind": "function", "line": 338, "name": "I_BindJoystickVariables", "signature": "void I_BindJoystickVariables(void)"}, {"kind": "function", "line": 82, "name": "SDL_JoystickClose", "signature": "SDL_JoystickClose(joystick);"}, {"kind": "function", "line": 84, "name": "SDL_QuitSubSystem", "signature": "SDL_QuitSubSystem(SDL_INIT_JOYSTICK);"}, {"kind": "function", "line": 106, "name": "HAT_AXIS_HAT", "signature": "return HAT_AXIS_HAT(axis) < SDL_JoystickNumHats(joystick);"}, {"kind": "function", "line": 130, "name": "printf", "signature": "printf(\"I_InitJoystick: Invalid joystick ID: %i\\n\", joystick_index);"}, {"kind": "function", "line": 159, "name": "SDL_JoystickEventState", "signature": "SDL_JoystickEventState(SDL_ENABLE);"}, {"kind": "function", "line": 165, "name": "I_AtExit", "signature": "I_AtExit(I_ShutdownJoystick, true);"}, {"kind": "function", "line": 222, "name": "SDL_JoystickGetButton", "signature": "return SDL_JoystickGetButton(joystick, physbutton);"}, {"kind": "function", "line": 333, "name": "D_PostEvent", "signature": "D_PostEvent(&ev);"}, {"kind": "function", "line": 342, "name": "M_BindVariable", "signature": "M_BindVariable(\"use_joystick\", &usejoystick);"}, {"kind": "function", "line": 355, "name": "M_snprintf", "signature": "M_snprintf(name, sizeof(name), \"joystick_physical_button%i\", i);"}, {"kind": "macro", "line": 37, "name": "DEAD_ZONE", "signature": "#define DEAD_ZONE"}]}, {"doc": "Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: System-specific joystick interface. ifndef __I_JOYSTICK__ define __I_JOYSTICK__ Number of \"virtual\" joystick buttons defined in configuration files. This needs to be at least as large as the number of different key bindings supported by the higher-level game code (joyb* variables). define NUM_VIRTUAL_BUTTONS 10 If this bit is set in a configuration file axis value, the axis is not actually a joystick axis, but instead is a \"button axis\". This means that instead of reading an SDL joystick axis, we read the state of two buttons to get the axis value. This is needed for eg.", "id": "progs/doomgeneric/i_joystick.h", "kind": "module", "label": "i_joystick.h", "language": "h", "sha256": "fb8464dcf67b1bfd", "symbol_count": 18, "symbols": [{"doc": "define HAT_AXIS_HORIZONTAL 1 define HAT_AXIS_VERTICAL 2", "kind": "function", "line": 62, "name": "I_InitJoystick", "signature": "void I_InitJoystick(void);"}, {"kind": "function", "line": 64, "name": "I_ShutdownJoystick", "signature": "void I_ShutdownJoystick(void);"}, {"kind": "function", "line": 65, "name": "I_UpdateJoystick", "signature": "void I_UpdateJoystick(void);"}, {"kind": "function", "line": 66, "name": "I_BindJoystickVariables", "signature": "void I_BindJoystickVariables(void);"}, {"kind": "macro", "line": 20, "name": "__I_JOYSTICK__", "signature": "#define __I_JOYSTICK__"}, {"kind": "macro", "line": 25, "name": "NUM_VIRTUAL_BUTTONS", "signature": "#define NUM_VIRTUAL_BUTTONS"}, {"kind": "macro", "line": 33, "name": "BUTTON_AXIS", "signature": "#define BUTTON_AXIS"}, {"kind": "macro", "line": 36, "name": "IS_BUTTON_AXIS", "signature": "#define IS_BUTTON_AXIS(axis)"}, {"kind": "macro", "line": 39, "name": "BUTTON_AXIS_NEG", "signature": "#define BUTTON_AXIS_NEG(axis)"}, {"kind": "macro", "line": 40, "name": "BUTTON_AXIS_POS", "signature": "#define BUTTON_AXIS_POS(axis)"}, {"kind": "macro", "line": 43, "name": "CREATE_BUTTON_AXIS", "signature": "#define CREATE_BUTTON_AXIS(neg, pos)"}, {"kind": "macro", "line": 48, "name": "HAT_AXIS", "signature": "#define HAT_AXIS"}, {"kind": "macro", "line": 49, "name": "IS_HAT_AXIS", "signature": "#define IS_HAT_AXIS(axis)"}, {"kind": "macro", "line": 53, "name": "HAT_AXIS_HAT", "signature": "#define HAT_AXIS_HAT(axis)"}, {"kind": "macro", "line": 55, "name": "HAT_AXIS_DIRECTION", "signature": "#define HAT_AXIS_DIRECTION(axis)"}, {"kind": "macro", "line": 56, "name": "CREATE_HAT_AXIS", "signature": "#define CREATE_HAT_AXIS(hat, direction)"}, {"kind": "macro", "line": 59, "name": "HAT_AXIS_HORIZONTAL", "signature": "#define HAT_AXIS_HORIZONTAL"}, {"kind": "macro", "line": 61, "name": "HAT_AXIS_VERTICAL", "signature": "#define HAT_AXIS_VERTICAL"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Main program, simply calls D_DoomMain high level loop. #include \"config.h\" include #include \"doomtype.h\" #include \"i_system.h\" include \"m_argv.h\" D_DoomMain() Not a globally visible function, just included for source reference, calls all startup code, parses command line options.", "id": "progs/doomgeneric/i_main.c", "kind": "module", "label": "i_main.c", "language": "c", "sha256": "2ba20d9510c2c90b", "symbol_count": 5, "symbols": [{"kind": "function", "line": 38, "name": "main", "signature": "int main(int argc, char **argv)"}, {"doc": "D_DoomMain() Not a globally visible function, just included for source reference, calls all startup code, parses command line options.", "kind": "function", "line": 32, "name": "D_DoomMain", "signature": "void D_DoomMain (void);"}, {"kind": "function", "line": 34, "name": "M_FindResponseFile", "signature": "void M_FindResponseFile(void);"}, {"kind": "function", "line": 36, "name": "dg_Create", "signature": "void dg_Create();"}, {"doc": "start doom", "kind": "function", "line": 50, "name": "printf", "signature": "printf(\"Starting D_DoomMain\\r\\n\");"}]}, {"doc": "include include include include \"doomtype.h\" include \"doomfeatures.h\" include \"i_sound.h\" include \"w_wad.h\" include \"z_zone.h\" include \"doomgeneric.h\" include \"minios_abi.h\" define PCSPK_CHANNELS 4 define PCSPK_TICK_MS 14", "id": "progs/doomgeneric/i_minios_sound.c", "kind": "module", "label": "i_minios_sound.c", "language": "c", "sha256": "917863b709110f92", "symbol_count": 45, "symbols": [{"kind": "struct", "line": 17, "name": "pcspk_channel_t"}, {"kind": "struct", "line": 84, "name": "mus_player_t"}, {"kind": "function", "line": 31, "name": "sys_tone", "signature": "static long sys_tone(unsigned f)"}, {"kind": "function", "line": 35, "name": "sys_time", "signature": "static long sys_time(void)"}, {"kind": "function", "line": 100, "name": "mus_read_varlen", "signature": "static int mus_read_varlen(mus_player_t *m, unsigned long *out)"}, {"doc": "Process one full block of events at the current tick and advance pos past * its delta. Returns the delta in *out. Returns 0 at end of score.", "kind": "function", "line": 115, "name": "mus_next_block", "signature": "static int mus_next_block(mus_player_t *m, unsigned long *out)"}, {"kind": "function", "line": 153, "name": "mus_note_cmp", "signature": "static int mus_note_cmp(const void *a, const void *b)"}, {"doc": "Split the sounding notes into a bass pedal (the lowest note below the bass line) and the melody arpeggio (the highest MUS_ARP_MAX melody * notes). Percussion never enters active[], so it is skipped here too.", "kind": "function", "line": 162, "name": "mus_build_chord", "signature": "static void mus_build_chord(mus_player_t *m)"}, {"doc": "} else { if (n < 16) all[n++] = (unsigned short)note; } } m->bass = bass; m->mel_len = 0; if (n > 1) qsort(all, n, sizeof(all[0]), mus_note_cmp); int start = n > MUS_ARP_MAX ? n - MUS_ARP_MAX : 0; for (i = start; i < n; i++) m->mel[m->mel_len++] = all[i]; m->arp_index = 0; } /* Hold a tone for the given number of milliseconds.", "kind": "function", "line": 185, "name": "mus_hold_tone", "signature": "static void mus_hold_tone(unsigned freq, unsigned long ms)"}, {"doc": "Play one full cycle of the pseudo-polyphony: the bass pedal first, held long like the NES triangle voice, then the melody notes arpeggiated rapidly. The repeated cycle at this cadence is what the ear integrates * into a chord instead of one voice.", "kind": "function", "line": 196, "name": "mus_play_chord", "signature": "static void mus_play_chord(mus_player_t *m)"}, {"kind": "function", "line": 209, "name": "mus_advance", "signature": "static void mus_advance(mus_player_t *m, unsigned long ms)"}, {"kind": "function", "line": 230, "name": "MUS_Init", "signature": "static boolean MUS_Init(void)"}, {"kind": "function", "line": 235, "name": "MUS_Shutdown", "signature": "static void MUS_Shutdown(void)"}, {"kind": "function", "line": 240, "name": "MUS_SetMusicVolume", "signature": "static void MUS_SetMusicVolume(int volume)"}, {"kind": "function", "line": 242, "name": "MUS_Pause", "signature": "static void MUS_Pause(void)"}, {"kind": "function", "line": 244, "name": "MUS_Resume", "signature": "static void MUS_Resume(void)"}, {"kind": "function", "line": 245, "name": "MUS_RegisterSong", "signature": "static void *MUS_RegisterSong(void *data, int len)"}, {"kind": "function", "line": 260, "name": "MUS_UnRegisterSong", "signature": "static void MUS_UnRegisterSong(void *handle)"}, {"kind": "function", "line": 266, "name": "MUS_PlaySong", "signature": "static void MUS_PlaySong(void *handle, boolean looping)"}, {"kind": "function", "line": 279, "name": "MUS_StopSong", "signature": "static void MUS_StopSong(void)"}, {"kind": "function", "line": 284, "name": "MUS_MusicIsPlaying", "signature": "static boolean MUS_MusicIsPlaying(void)"}, {"kind": "function", "line": 288, "name": "MUS_Poll", "signature": "static void MUS_Poll(void)"}, {"kind": "function", "line": 317, "name": "PCSPK_Init", "signature": "static boolean PCSPK_Init(boolean use_sfx_prefix)"}, {"kind": "function", "line": 324, "name": "PCSPK_Shutdown", "signature": "static void PCSPK_Shutdown(void)"}, {"kind": "function", "line": 329, "name": "PCSPK_GetSfxLumpNum", "signature": "static int PCSPK_GetSfxLumpNum(sfxinfo_t *sfx)"}, {"kind": "function", "line": 340, "name": "free_channel", "signature": "static void free_channel(int i)"}, {"kind": "function", "line": 349, "name": "PCSPK_Update", "signature": "static void PCSPK_Update(void)"}, {"kind": "function", "line": 381, "name": "PCSPK_UpdateSoundParams", "signature": "static void PCSPK_UpdateSoundParams(int ch, int v, int s)"}, {"kind": "function", "line": 385, "name": "PCSPK_StartSound", "signature": "static int PCSPK_StartSound(sfxinfo_t *sfx, int channel, int vol, int sep)"}, {"kind": "function", "line": 435, "name": "PCSPK_StopSound", "signature": "static void PCSPK_StopSound(int channel)"}, {"kind": "function", "line": 441, "name": "PCSPK_SoundIsPlaying", "signature": "static boolean PCSPK_SoundIsPlaying(int channel)"}, {"kind": "function", "line": 447, "name": "PCSPK_CacheSounds", "signature": "static void PCSPK_CacheSounds(sfxinfo_t *s, int n)"}, {"kind": "function", "line": 218, "name": "memset", "signature": "memset(m->active, 0, sizeof(m->active));"}, {"kind": "function", "line": 250, "name": "Z_Free", "signature": "Z_Free(m);"}, {"kind": "function", "line": 333, "name": "snprintf", "signature": "snprintf(n, sizeof(n), \"dp%s\", sfx->name);"}, {"kind": "function", "line": 338, "name": "W_CheckNumForName", "signature": "return W_CheckNumForName(n);"}, {"kind": "function", "line": 405, "name": "W_ReadLump", "signature": "W_ReadLump(lump, tmp);"}, {"kind": "macro", "line": 11, "name": "PCSPK_CHANNELS", "signature": "#define PCSPK_CHANNELS"}, {"kind": "macro", "line": 13, "name": "PCSPK_TICK_MS", "signature": "#define PCSPK_TICK_MS"}, {"kind": "macro", "line": 57, "name": "MUS_TICKS_PER_SEC", "signature": "#define MUS_TICKS_PER_SEC"}, {"kind": "macro", "line": 59, "name": "MUS_PERCUSSION_CHAN", "signature": "#define MUS_PERCUSSION_CHAN"}, {"kind": "macro", "line": 60, "name": "MUS_ARP_SLOT_MS", "signature": "#define MUS_ARP_SLOT_MS"}, {"kind": "macro", "line": 61, "name": "MUS_BASS_HOLD_MS", "signature": "#define MUS_BASS_HOLD_MS"}, {"kind": "macro", "line": 62, "name": "MUS_BASS_LINE_MIDI", "signature": "#define MUS_BASS_LINE_MIDI"}, {"kind": "macro", "line": 63, "name": "MUS_ARP_MAX", "signature": "#define MUS_ARP_MAX"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Screen scale-up code: 1x,2x,3x,4x pixel doubling Aspect ratio-correcting stretch functions include include include include \"doomtype.h\" include \"i_video.h\" include \"m_argv.h\" include \"z_zone.h\"", "id": "progs/doomgeneric/i_scale.c", "kind": "module", "label": "i_scale.c", "language": "c", "sha256": "e2d9496759cd6c43", "symbol_count": 45, "symbols": [{"doc": "Called to set the source and destination buffers before doing the scale.", "kind": "function", "line": 60, "name": "I_InitScale", "signature": "void I_InitScale(byte *_src_buffer, byte *_dest_buffer, int _dest_pitch)"}, {"doc": "1x scale doesn't really do any scaling: it just copies the buffer a line at a time for when pitch != SCREENWIDTH (!native_surface)", "kind": "function", "line": 74, "name": "I_Scale1x", "signature": "static boolean I_Scale1x(int x1, int y1, int x2, int y2)"}, {"doc": "2x scale (640x400)", "kind": "function", "line": 104, "name": "I_Scale2x", "signature": "static boolean I_Scale2x(int x1, int y1, int x2, int y2)"}, {"doc": "3x scale (960x600)", "kind": "function", "line": 145, "name": "I_Scale3x", "signature": "static boolean I_Scale3x(int x1, int y1, int x2, int y2)"}, {"doc": "4x scale (1280x800)", "kind": "function", "line": 190, "name": "I_Scale4x", "signature": "static boolean I_Scale4x(int x1, int y1, int x2, int y2)"}, {"doc": "5x scale (1600x1000)", "kind": "function", "line": 239, "name": "I_Scale5x", "signature": "static boolean I_Scale5x(int x1, int y1, int x2, int y2)"}, {"doc": "Search through the given palette, finding the nearest color that matches the given color.", "kind": "function", "line": 294, "name": "FindNearestColor", "signature": "static int FindNearestColor(byte *palette, int r, int g, int b)"}, {"doc": "Create a stretch table. This is a lookup table for blending colors. pct specifies the bias between the two colors: 0 = all y, 100 = all x. NB: This is identical to the lookup tables used in other ports for translucency.", "kind": "function", "line": 331, "name": "GenerateStretchTable", "signature": "static byte *GenerateStretchTable(byte *palette, int pct)"}, {"doc": "Called at startup to generate the lookup tables for aspect ratio correcting scale up.", "kind": "function", "line": 360, "name": "I_InitStretchTables", "signature": "static void I_InitStretchTables(byte *palette)"}, {"doc": "Create 50%/50% table for 800x600 squash mode", "kind": "function", "line": 386, "name": "I_InitSquashTable", "signature": "static void I_InitSquashTable(byte *palette)"}, {"doc": "Destroy the scaling lookup tables. This should only ever be called if switching to a completely different palette from the normal one (in which case the mappings no longer make any sense).", "kind": "function", "line": 403, "name": "I_ResetScaleTables", "signature": "void I_ResetScaleTables(byte *palette)"}, {"doc": "Aspect ratio correcting scale up functions. These double up pixels to stretch the screen when using a 4:3 screen mode.", "kind": "function", "line": 433, "name": "WriteBlendedLine1x", "signature": "static inline void WriteBlendedLine1x(byte *dest, byte *src1, byte *src2, \n ..."}, {"doc": "1x stretch (320x240)", "kind": "function", "line": 449, "name": "I_Stretch1x", "signature": "static boolean I_Stretch1x(int x1, int y1, int x2, int y2)"}, {"kind": "function", "line": 506, "name": "WriteLine2x", "signature": "static inline void WriteLine2x(byte *dest, byte *src)"}, {"kind": "function", "line": 519, "name": "WriteBlendedLine2x", "signature": "static inline void WriteBlendedLine2x(byte *dest, byte *src1, byte *src2, \n ..."}, {"doc": "2x stretch (640x480)", "kind": "function", "line": 538, "name": "I_Stretch2x", "signature": "static boolean I_Stretch2x(int x1, int y1, int x2, int y2)"}, {"kind": "function", "line": 619, "name": "WriteLine3x", "signature": "static inline void WriteLine3x(byte *dest, byte *src)"}, {"kind": "function", "line": 633, "name": "WriteBlendedLine3x", "signature": "static inline void WriteBlendedLine3x(byte *dest, byte *src1, byte *src2, \n ..."}, {"doc": "3x stretch (960x720)", "kind": "function", "line": 653, "name": "I_Stretch3x", "signature": "static boolean I_Stretch3x(int x1, int y1, int x2, int y2)"}, {"kind": "function", "line": 758, "name": "WriteLine4x", "signature": "static inline void WriteLine4x(byte *dest, byte *src)"}, {"kind": "function", "line": 773, "name": "WriteBlendedLine4x", "signature": "static inline void WriteBlendedLine4x(byte *dest, byte *src1, byte *src2, \n ..."}, {"doc": "4x stretch (1280x960)", "kind": "function", "line": 794, "name": "I_Stretch4x", "signature": "static boolean I_Stretch4x(int x1, int y1, int x2, int y2)"}, {"kind": "function", "line": 923, "name": "WriteLine5x", "signature": "static inline void WriteLine5x(byte *dest, byte *src)"}, {"doc": "5x stretch (1600x1200)", "kind": "function", "line": 941, "name": "I_Stretch5x", "signature": "static boolean I_Stretch5x(int x1, int y1, int x2, int y2)"}, {"doc": "1x squashed scale (256x200)", "kind": "function", "line": 1029, "name": "WriteSquashedLine1x", "signature": "static inline void WriteSquashedLine1x(byte *dest, byte *src)"}, {"doc": "1x squashed (256x200)", "kind": "function", "line": 1060, "name": "I_Squash1x", "signature": "static boolean I_Squash1x(int x1, int y1, int x2, int y2)"}, {"kind": "function", "line": 1101, "name": "WriteSquashedLine2x", "signature": "static inline void WriteSquashedLine2x(byte *dest, byte *src)"}, {"doc": "2x squash (512x400)", "kind": "function", "line": 1159, "name": "I_Squash2x", "signature": "static boolean I_Squash2x(int x1, int y1, int x2, int y2)"}, {"kind": "function", "line": 1196, "name": "WriteSquashedLine3x", "signature": "static inline void WriteSquashedLine3x(byte *dest, byte *src)"}, {"doc": "3x scale squashed (800x600) This is a special case that uses the half_stretch_table (50%) rather than the normal stretch_tables(20,40%), to scale up to 800x600 exactly.", "kind": "function", "line": 1242, "name": "I_Squash3x", "signature": "static boolean I_Squash3x(int x1, int y1, int x2, int y2)"}, {"kind": "function", "line": 1278, "name": "WriteSquashedLine4x", "signature": "static inline void WriteSquashedLine4x(byte *dest, byte *src)"}, {"doc": "4x squashed (1024x800)", "kind": "function", "line": 1353, "name": "I_Squash4x", "signature": "static boolean I_Squash4x(int x1, int y1, int x2, int y2)"}, {"kind": "function", "line": 1389, "name": "WriteSquashedLine5x", "signature": "static inline void WriteSquashedLine5x(byte *dest, byte *src)"}, {"doc": "5x squashed (1280x1000)", "kind": "function", "line": 1418, "name": "I_Squash5x", "signature": "static boolean I_Squash5x(int x1, int y1, int x2, int y2)"}, {"kind": "function", "line": 88, "name": "memcpy", "signature": "memcpy(screenp, bufp, w);"}, {"doc": "We only actually need two lookup tables: mix 0% = just write line 1 mix 20% = stretch_tables[0] mix 40% = stretch_tables[1] mix 60% = stretch_tables[1] used backwards mix 80% = stretch_tables[0] used backwards mix 100% = just write line 2", "kind": "function", "line": 376, "name": "printf", "signature": "printf(\"I_InitStretchTables: Generating lookup tables..\");"}, {"kind": "function", "line": 378, "name": "fflush", "signature": "fflush(stdout);"}, {"kind": "function", "line": 382, "name": "puts", "signature": "puts(\"\");"}, {"kind": "function", "line": 408, "name": "Z_Free", "signature": "Z_Free(stretch_tables[0]);"}, {"kind": "function", "line": 998, "name": "memset", "signature": "memset(screenp, 0, 1600);"}, {"kind": "macro", "line": 32, "name": "inline", "signature": "#define inline"}, {"kind": "macro", "line": 1098, "name": "DRAW_PIXEL2", "signature": "#define DRAW_PIXEL2"}, {"kind": "macro", "line": 1192, "name": "DRAW_PIXEL3", "signature": "#define DRAW_PIXEL3"}, {"kind": "macro", "line": 1275, "name": "DRAW_PIXEL4", "signature": "#define DRAW_PIXEL4"}, {"kind": "macro", "line": 1386, "name": "DRAW_PIXEL5", "signature": "#define DRAW_PIXEL5"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Pixel-doubling scale up functions. ifndef __I_SCALE__ define __I_SCALE__ include \"doomtype.h\"", "id": "progs/doomgeneric/i_scale.h", "kind": "module", "label": "i_scale.h", "language": "h", "sha256": "24b4469936c0abbb", "symbol_count": 18, "symbols": [{"doc": "include \"doomtype.h\"", "kind": "function", "line": 24, "name": "I_InitScale", "signature": "void I_InitScale(byte *_src_buffer, byte *_dest_buffer, int _dest_pitch);"}, {"kind": "function", "line": 26, "name": "I_ResetScaleTables", "signature": "void I_ResetScaleTables(byte *palette);"}, {"doc": "Scaled modes (direct multiples of 320x200)", "kind": "variable", "line": 29, "name": "mode_scale_1x", "signature": "extern screen_mode_t mode_scale_1x;"}, {"kind": "variable", "line": 31, "name": "mode_scale_2x", "signature": "extern screen_mode_t mode_scale_2x;"}, {"kind": "variable", "line": 32, "name": "mode_scale_3x", "signature": "extern screen_mode_t mode_scale_3x;"}, {"kind": "variable", "line": 33, "name": "mode_scale_4x", "signature": "extern screen_mode_t mode_scale_4x;"}, {"kind": "variable", "line": 34, "name": "mode_scale_5x", "signature": "extern screen_mode_t mode_scale_5x;"}, {"doc": "Vertically stretched modes (320x200 -> multiples of 320x240)", "kind": "variable", "line": 37, "name": "mode_stretch_1x", "signature": "extern screen_mode_t mode_stretch_1x;"}, {"kind": "variable", "line": 39, "name": "mode_stretch_2x", "signature": "extern screen_mode_t mode_stretch_2x;"}, {"kind": "variable", "line": 40, "name": "mode_stretch_3x", "signature": "extern screen_mode_t mode_stretch_3x;"}, {"kind": "variable", "line": 41, "name": "mode_stretch_4x", "signature": "extern screen_mode_t mode_stretch_4x;"}, {"kind": "variable", "line": 42, "name": "mode_stretch_5x", "signature": "extern screen_mode_t mode_stretch_5x;"}, {"doc": "Horizontally squashed modes (320x200 -> multiples of 256x200)", "kind": "variable", "line": 45, "name": "mode_squash_1x", "signature": "extern screen_mode_t mode_squash_1x;"}, {"kind": "variable", "line": 47, "name": "mode_squash_2x", "signature": "extern screen_mode_t mode_squash_2x;"}, {"kind": "variable", "line": 48, "name": "mode_squash_3x", "signature": "extern screen_mode_t mode_squash_3x;"}, {"kind": "variable", "line": 49, "name": "mode_squash_4x", "signature": "extern screen_mode_t mode_squash_4x;"}, {"kind": "variable", "line": 50, "name": "mode_squash_5x", "signature": "extern screen_mode_t mode_squash_5x;"}, {"kind": "macro", "line": 21, "name": "__I_SCALE__", "signature": "#define __I_SCALE__"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: none include include ifdef ORIGCODE include \"SDL_mixer.h\" endif include \"config.h\" include \"doomfeatures.h\" include \"doomtype.h\" ifdef ORIGCODE include \"gusconf.h\"", "id": "progs/doomgeneric/i_sound.c", "kind": "module", "label": "i_sound.c", "language": "c", "sha256": "fbe0b122adb099a1", "symbol_count": 35, "symbols": [{"doc": "Check if a sound device is in the given list of devices", "kind": "function", "line": 115, "name": "SndDeviceInList", "signature": "static boolean SndDeviceInList(snddevice_t device, snddevice_t *list,\n ..."}, {"doc": "Find and initialize a sound_module_t appropriate for the setting in snd_sfxdevice.", "kind": "function", "line": 134, "name": "InitSfxModule", "signature": "static void InitSfxModule(boolean use_sfx_prefix)"}, {"doc": "Initialize music according to snd_musicdevice.", "kind": "function", "line": 162, "name": "InitMusicModule", "signature": "static void InitMusicModule(void)"}, {"doc": "Initializes sound stuff, including volume Sets channels, SFX and music volume, allocates channel buffer, sets S_sfx lookup.", "kind": "function", "line": 194, "name": "I_InitSound", "signature": "void I_InitSound(boolean use_sfx_prefix)"}, {"kind": "function", "line": 249, "name": "I_ShutdownSound", "signature": "void I_ShutdownSound(void)"}, {"kind": "function", "line": 262, "name": "I_GetSfxLumpNum", "signature": "int I_GetSfxLumpNum(sfxinfo_t *sfxinfo)"}, {"kind": "function", "line": 274, "name": "I_UpdateSound", "signature": "void I_UpdateSound(void)"}, {"kind": "function", "line": 287, "name": "CheckVolumeSeparation", "signature": "static void CheckVolumeSeparation(int *vol, int *sep)"}, {"kind": "function", "line": 308, "name": "I_UpdateSoundParams", "signature": "void I_UpdateSoundParams(int channel, int vol, int sep)"}, {"kind": "function", "line": 317, "name": "I_StartSound", "signature": "int I_StartSound(sfxinfo_t *sfxinfo, int channel, int vol, int sep)"}, {"kind": "function", "line": 330, "name": "I_StopSound", "signature": "void I_StopSound(int channel)"}, {"kind": "function", "line": 338, "name": "I_SoundIsPlaying", "signature": "boolean I_SoundIsPlaying(int channel)"}, {"kind": "function", "line": 350, "name": "I_PrecacheSounds", "signature": "void I_PrecacheSounds(sfxinfo_t *sounds, int num_sounds)"}, {"kind": "function", "line": 358, "name": "I_InitMusic", "signature": "void I_InitMusic(void)"}, {"kind": "function", "line": 362, "name": "I_ShutdownMusic", "signature": "void I_ShutdownMusic(void)"}, {"kind": "function", "line": 367, "name": "I_SetMusicVolume", "signature": "void I_SetMusicVolume(int volume)"}, {"kind": "function", "line": 375, "name": "I_PauseSong", "signature": "void I_PauseSong(void)"}, {"kind": "function", "line": 383, "name": "I_ResumeSong", "signature": "void I_ResumeSong(void)"}, {"kind": "function", "line": 391, "name": "I_RegisterSong", "signature": "void *I_RegisterSong(void *data, int len)"}, {"kind": "function", "line": 403, "name": "I_UnRegisterSong", "signature": "void I_UnRegisterSong(void *handle)"}, {"kind": "function", "line": 411, "name": "I_PlaySong", "signature": "void I_PlaySong(void *handle, boolean looping)"}, {"kind": "function", "line": 419, "name": "I_StopSong", "signature": "void I_StopSong(void)"}, {"kind": "function", "line": 427, "name": "I_MusicIsPlaying", "signature": "boolean I_MusicIsPlaying(void)"}, {"kind": "function", "line": 439, "name": "I_BindSoundVariables", "signature": "void I_BindSoundVariables(void)"}, {"doc": "Sound modules", "kind": "function", "line": 64, "name": "I_InitTimidityConfig", "signature": "extern void I_InitTimidityConfig(void);"}, {"kind": "function", "line": 445, "name": "M_BindVariable", "signature": "M_BindVariable(\"snd_musicdevice\", &snd_musicdevice);"}, {"kind": "variable", "line": 66, "name": "sound_sdl_module", "signature": "extern sound_module_t sound_sdl_module;"}, {"kind": "variable", "line": 67, "name": "sound_pcsound_module", "signature": "extern sound_module_t sound_pcsound_module;"}, {"kind": "variable", "line": 68, "name": "music_sdl_module", "signature": "extern music_module_t music_sdl_module;"}, {"kind": "variable", "line": 69, "name": "music_opl_module", "signature": "extern music_module_t music_opl_module;"}, {"kind": "variable", "line": 70, "name": "music_pcspeaker_module", "signature": "extern music_module_t music_pcspeaker_module;"}, {"doc": "For OPL module:", "kind": "variable", "line": 73, "name": "opl_io_port", "signature": "extern int opl_io_port;"}, {"doc": "For native music module:", "kind": "variable", "line": 77, "name": "timidity_cfg_path", "signature": "extern char *timidity_cfg_path;"}, {"doc": "ifdef ORIGCODE", "kind": "variable", "line": 443, "name": "use_libsamplerate", "signature": "extern int use_libsamplerate;"}, {"kind": "variable", "line": 444, "name": "libsamplerate_scale", "signature": "extern float libsamplerate_scale;"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: The not so system specific sound interface. ifndef __I_SOUND__ define __I_SOUND__ include \"doomtype.h\" SoundFX struct.", "id": "progs/doomgeneric/i_sound.h", "kind": "module", "label": "i_sound.h", "language": "h", "sha256": "75d48a041d7f61e5", "symbol_count": 35, "symbols": [{"kind": "struct", "line": 31, "name": "sfxinfo_struct"}, {"doc": "MusicInfo struct.", "kind": "struct", "line": 72, "name": "musicinfo_t"}, {"kind": "struct", "line": 105, "name": "sound_module_t"}, {"kind": "struct", "line": 164, "name": "music_module_t"}, {"doc": "SoundFX struct.", "kind": "type_alias", "line": 29, "name": "sfxinfo_t", "signature": "typedef struct sfxinfo_struct sfxinfo_t;"}, {"doc": "Initialise sound module Returns true if successfully initialised", "kind": "function", "line": 114, "name": "boolean", "signature": "boolean (*Init)(boolean use_sfx_prefix);"}, {"doc": "Shutdown sound module", "kind": "function", "line": 118, "name": "void", "signature": "void (*Shutdown)(void);"}, {"doc": "Returns the lump index of the given sound.", "kind": "function", "line": 122, "name": "int", "signature": "int (*GetSfxLumpNum)(sfxinfo_t *sfxinfo);"}, {"kind": "function", "line": 151, "name": "I_InitSound", "signature": "void I_InitSound(boolean use_sfx_prefix);"}, {"kind": "function", "line": 153, "name": "I_ShutdownSound", "signature": "void I_ShutdownSound(void);"}, {"kind": "function", "line": 154, "name": "I_GetSfxLumpNum", "signature": "int I_GetSfxLumpNum(sfxinfo_t *sfxinfo);"}, {"kind": "function", "line": 155, "name": "I_UpdateSound", "signature": "void I_UpdateSound(void);"}, {"kind": "function", "line": 156, "name": "I_UpdateSoundParams", "signature": "void I_UpdateSoundParams(int channel, int vol, int sep);"}, {"kind": "function", "line": 157, "name": "I_StartSound", "signature": "int I_StartSound(sfxinfo_t *sfxinfo, int channel, int vol, int sep);"}, {"kind": "function", "line": 158, "name": "I_StopSound", "signature": "void I_StopSound(int channel);"}, {"kind": "function", "line": 159, "name": "I_SoundIsPlaying", "signature": "boolean I_SoundIsPlaying(int channel);"}, {"kind": "function", "line": 160, "name": "I_PrecacheSounds", "signature": "void I_PrecacheSounds(sfxinfo_t *sounds, int num_sounds);"}, {"kind": "function", "line": 216, "name": "I_InitMusic", "signature": "void I_InitMusic(void);"}, {"kind": "function", "line": 218, "name": "I_ShutdownMusic", "signature": "void I_ShutdownMusic(void);"}, {"kind": "function", "line": 219, "name": "I_SetMusicVolume", "signature": "void I_SetMusicVolume(int volume);"}, {"kind": "function", "line": 220, "name": "I_PauseSong", "signature": "void I_PauseSong(void);"}, {"kind": "function", "line": 221, "name": "I_ResumeSong", "signature": "void I_ResumeSong(void);"}, {"kind": "function", "line": 222, "name": "I_RegisterSong", "signature": "void *I_RegisterSong(void *data, int len);"}, {"kind": "function", "line": 223, "name": "I_UnRegisterSong", "signature": "void I_UnRegisterSong(void *handle);"}, {"kind": "function", "line": 224, "name": "I_PlaySong", "signature": "void I_PlaySong(void *handle, boolean looping);"}, {"kind": "function", "line": 225, "name": "I_StopSong", "signature": "void I_StopSong(void);"}, {"kind": "function", "line": 226, "name": "I_MusicIsPlaying", "signature": "boolean I_MusicIsPlaying(void);"}, {"kind": "function", "line": 234, "name": "I_BindSoundVariables", "signature": "void I_BindSoundVariables(void);"}, {"kind": "variable", "line": 227, "name": "snd_sfxdevice", "signature": "extern int snd_sfxdevice;"}, {"kind": "variable", "line": 229, "name": "snd_musicdevice", "signature": "extern int snd_musicdevice;"}, {"kind": "variable", "line": 230, "name": "snd_samplerate", "signature": "extern int snd_samplerate;"}, {"kind": "variable", "line": 231, "name": "snd_cachesize", "signature": "extern int snd_cachesize;"}, {"kind": "variable", "line": 232, "name": "snd_maxslicetime_ms", "signature": "extern int snd_maxslicetime_ms;"}, {"kind": "variable", "line": 233, "name": "snd_musiccmd", "signature": "extern char *snd_musiccmd;"}, {"kind": "macro", "line": 21, "name": "__I_SOUND__", "signature": "#define __I_SOUND__"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Endianess handling, swapping 16bit and 32bit. ifndef __I_SWAP__ define __I_SWAP__ ifdef ORIGCODE include \"SDL_endian.h\" Endianess handling. WAD files are stored little endian. Just use SDL's endianness swapping functions.", "id": "progs/doomgeneric/i_swap.h", "kind": "module", "label": "i_swap.h", "language": "h", "sha256": "9d714e64f58af4c4", "symbol_count": 8, "symbols": [{"kind": "macro", "line": 21, "name": "__I_SWAP__", "signature": "#define __I_SWAP__"}, {"kind": "macro", "line": 33, "name": "SHORT", "signature": "#define SHORT(x)"}, {"kind": "macro", "line": 35, "name": "LONG", "signature": "#define LONG(x)"}, {"kind": "macro", "line": 40, "name": "SYS_LITTLE_ENDIAN", "signature": "#define SYS_LITTLE_ENDIAN"}, {"kind": "macro", "line": 42, "name": "SYS_BIG_ENDIAN", "signature": "#define SYS_BIG_ENDIAN"}, {"kind": "macro", "line": 46, "name": "SHORT", "signature": "#define SHORT(x)"}, {"kind": "macro", "line": 48, "name": "LONG", "signature": "#define LONG(x)"}, {"kind": "macro", "line": 49, "name": "SYS_LITTLE_ENDIAN", "signature": "#define SYS_LITTLE_ENDIAN"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: include include include include ifdef _WIN32 define WIN32_LEAN_AND_MEAN include else include ", "id": "progs/doomgeneric/i_system.c", "kind": "module", "label": "i_system.c", "language": "c", "sha256": "10e65705df96a389", "symbol_count": 46, "symbols": [{"kind": "struct", "line": 64, "name": "atexit_listentry_s"}, {"doc": "#include \"i_timer.h\" #include \"i_video.h\" #include \"i_system.h\" #include \"w_wad.h\" #include \"z_zone.h\" #ifdef __MACOSX__ #include #endif #define DEFAULT_RAM 6 /* MiB #define MIN_RAM 6 /* MiB", "kind": "type_alias", "line": 60, "name": "atexit_listentry_t", "signature": "typedef struct atexit_listentry_s atexit_listentry_t;"}, {"kind": "function", "line": 72, "name": "I_AtExit", "signature": "void I_AtExit(atexit_func_t func, boolean run_on_error)"}, {"doc": "Tactile feedback function, probably used for the Logitech Cyberman", "kind": "function", "line": 86, "name": "I_Tactile", "signature": "void I_Tactile(int on, int off, int total)"}, {"doc": "Zone memory auto-allocation function that allocates the zone size by trying progressively smaller zone sizes until one is found that works.", "kind": "function", "line": 94, "name": "AutoAllocMemory", "signature": "static byte *AutoAllocMemory(int *size, int default_ram, int min_ram)"}, {"kind": "function", "line": 132, "name": "I_ZoneBase", "signature": "byte *I_ZoneBase (int *size)"}, {"kind": "function", "line": 165, "name": "I_PrintBanner", "signature": "void I_PrintBanner(char *msg)"}, {"kind": "function", "line": 176, "name": "I_PrintDivider", "signature": "void I_PrintDivider(void)"}, {"kind": "function", "line": 188, "name": "I_PrintStartupBanner", "signature": "void I_PrintStartupBanner(char *gamedescription)"}, {"doc": "I_ConsoleStdout Returns true if stdout is a real console, false if it is a file", "kind": "function", "line": 209, "name": "I_ConsoleStdout", "signature": "boolean I_ConsoleStdout(void)"}, {"doc": "I_Quit", "kind": "function", "line": 245, "name": "I_Quit", "signature": "void I_Quit (void)"}, {"doc": "returns non-zero if zenity is available", "kind": "function", "line": 271, "name": "ZenityAvailable", "signature": "static int ZenityAvailable(void)"}, {"doc": "Escape special characters in the given string so that they can be safely enclosed in shell quotes.", "kind": "function", "line": 279, "name": "EscapeShellString", "signature": "static char *EscapeShellString(char *string)"}, {"doc": "Open a native error box with a message using zenity", "kind": "function", "line": 322, "name": "ZenityErrorBox", "signature": "static int ZenityErrorBox(char *message)"}, {"kind": "function", "line": 358, "name": "I_Error", "signature": "void I_Error (char *error, ...)"}, {"kind": "function", "line": 501, "name": "I_GetMemoryValue", "signature": "boolean I_GetMemoryValue(unsigned int offset, void *value, int size)"}, {"kind": "function", "line": 159, "name": "printf", "signature": "printf(\"zone memory: %p, %x allocated for zone\\n\", zonemem, *size);"}, {"kind": "function", "line": 172, "name": "putchar", "signature": "putchar(' ');"}, {"kind": "function", "line": 173, "name": "puts", "signature": "puts(msg);"}, {"doc": "else if ORIGCODE", "kind": "function", "line": 217, "name": "isatty", "signature": "return isatty(fileno(stdout));"}, {"kind": "function", "line": 230, "name": "I_CheckIsScreensaver", "signature": "I_CheckIsScreensaver();"}, {"kind": "function", "line": 231, "name": "I_InitTimer", "signature": "I_InitTimer();"}, {"kind": "function", "line": 232, "name": "I_InitJoystick", "signature": "I_InitJoystick();"}, {"kind": "function", "line": 236, "name": "I_BindVideoVariables", "signature": "I_BindVideoVariables();"}, {"kind": "function", "line": 237, "name": "I_BindJoystickVariables", "signature": "I_BindJoystickVariables();"}, {"kind": "function", "line": 238, "name": "I_BindSoundVariables", "signature": "I_BindSoundVariables();"}, {"doc": "if ORIGCODE", "kind": "function", "line": 261, "name": "SDL_Quit", "signature": "SDL_Quit();"}, {"kind": "function", "line": 262, "name": "exit", "signature": "exit(0);"}, {"kind": "function", "line": 339, "name": "M_snprintf", "signature": "M_snprintf(errorboxpath, errorboxpath_size, \"%s --error --text=%s\", ZENITY_BINARY, escaped_message);"}, {"kind": "function", "line": 343, "name": "free", "signature": "free(errorboxpath);"}, {"kind": "function", "line": 368, "name": "fprintf", "signature": "fprintf(stderr, \"Warning: recursive call to I_Error detected.\\n\");"}, {"doc": "Message first.", "kind": "function", "line": 379, "name": "va_start", "signature": "va_start(argptr, error);"}, {"doc": "fprintf(stderr, \"\\nError: \");", "kind": "function", "line": 381, "name": "vfprintf", "signature": "vfprintf(stderr, error, argptr);"}, {"kind": "function", "line": 383, "name": "va_end", "signature": "va_end(argptr);"}, {"kind": "function", "line": 384, "name": "fflush", "signature": "fflush(stderr);"}, {"kind": "function", "line": 388, "name": "memset", "signature": "memset(msgbuf, 0, sizeof(msgbuf));"}, {"kind": "function", "line": 389, "name": "M_vsnprintf", "signature": "M_vsnprintf(msgbuf, sizeof(msgbuf), error, argptr);"}, {"kind": "function", "line": 415, "name": "MultiByteToWideChar", "signature": "MultiByteToWideChar(CP_ACP, 0, msgbuf, strlen(msgbuf) + 1, wmsgbuf, sizeof(wmsgbuf));"}, {"kind": "function", "line": 419, "name": "MessageBoxW", "signature": "MessageBoxW(NULL, wmsgbuf, L\"\", MB_OK);"}, {"kind": "function", "line": 441, "name": "CFUserNotificationDisplayNotice", "signature": "CFUserNotificationDisplayNotice(0, kCFUserNotificationCautionAlertLevel, NULL, NULL, NULL, CFSTR(PACKAGE_STRING), message, NULL);"}, {"kind": "function", "line": 548, "name": "M_StrToInt", "signature": "M_StrToInt(myargv[p], &val);"}, {"kind": "macro", "line": 27, "name": "WIN32_LEAN_AND_MEAN", "signature": "#define WIN32_LEAN_AND_MEAN"}, {"kind": "macro", "line": 57, "name": "DEFAULT_RAM", "signature": "#define DEFAULT_RAM"}, {"kind": "macro", "line": 59, "name": "MIN_RAM", "signature": "#define MIN_RAM"}, {"kind": "macro", "line": 268, "name": "ZENITY_BINARY", "signature": "#define ZENITY_BINARY"}, {"kind": "macro", "line": 489, "name": "DOS_MEM_DUMP_SIZE", "signature": "#define DOS_MEM_DUMP_SIZE"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: System specific interface stuff. ifndef __I_SYSTEM__ define __I_SYSTEM__ include \"d_ticcmd.h\" include \"d_event.h\"", "id": "progs/doomgeneric/i_system.h", "kind": "module", "label": "i_system.h", "language": "h", "sha256": "199659f86a25de51", "symbol_count": 15, "symbols": [{"doc": "include \"d_ticcmd.h\" include \"d_event.h\"", "kind": "function", "line": 25, "name": "void", "signature": "typedef void (*atexit_func_t)(void);"}, {"doc": "Called by DoomMain.", "kind": "function", "line": 30, "name": "I_Init", "signature": "void I_Init (void);"}, {"doc": "Called by startup code to get the ammount of memory to malloc for the zone management.", "kind": "function", "line": 35, "name": "I_ZoneBase", "signature": "byte* I_ZoneBase (int *size);"}, {"kind": "function", "line": 36, "name": "I_ConsoleStdout", "signature": "boolean I_ConsoleStdout(void);"}, {"doc": "Either returns a null ticcmd, or calls a loadable driver to build it. This ticcmd will then be modified by the gameloop for normal input.", "kind": "function", "line": 48, "name": "I_BaseTiccmd", "signature": "ticcmd_t* I_BaseTiccmd (void);"}, {"doc": "Called by M_Responder when quit is selected. Clean exit, displays sell blurb.", "kind": "function", "line": 53, "name": "I_Quit", "signature": "void I_Quit (void);"}, {"kind": "function", "line": 54, "name": "I_Error", "signature": "void I_Error (char *error, ...);"}, {"kind": "function", "line": 56, "name": "I_Tactile", "signature": "void I_Tactile (int on, int off, int total);"}, {"kind": "function", "line": 58, "name": "I_GetMemoryValue", "signature": "boolean I_GetMemoryValue(unsigned int offset, void *value, int size);"}, {"doc": "Schedule a function to be called when the program exits. If run_if_error is true, the function is called if the exit is due to an error (I_Error)", "kind": "function", "line": 64, "name": "I_AtExit", "signature": "void I_AtExit(atexit_func_t func, boolean run_if_error);"}, {"doc": "Add all system-specific config file variable bindings.", "kind": "function", "line": 68, "name": "I_BindVariables", "signature": "void I_BindVariables(void);"}, {"doc": "Print startup banner copyright message.", "kind": "function", "line": 72, "name": "I_PrintStartupBanner", "signature": "void I_PrintStartupBanner(char *gamedescription);"}, {"doc": "Print a centered text banner displaying the given string.", "kind": "function", "line": 76, "name": "I_PrintBanner", "signature": "void I_PrintBanner(char *text);"}, {"doc": "Print a dividing line for startup banners.", "kind": "function", "line": 80, "name": "I_PrintDivider", "signature": "void I_PrintDivider(void);"}, {"kind": "macro", "line": 21, "name": "__I_SYSTEM__", "signature": "#define __I_SYSTEM__"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Timer functions. include \"i_timer.h\" include \"doomtype.h\" include \"doomgeneric.h\" include #include #include I_GetTime", "id": "progs/doomgeneric/i_timer.c", "kind": "module", "label": "i_timer.c", "language": "c", "sha256": "f618e0341fdda850", "symbol_count": 8, "symbols": [{"kind": "function", "line": 35, "name": "I_GetTicks", "signature": "int I_GetTicks(void)"}, {"kind": "function", "line": 41, "name": "I_GetTime", "signature": "int I_GetTime (void)"}, {"doc": "Same as I_GetTime, but returns time in milliseconds", "kind": "function", "line": 60, "name": "I_GetTimeMS", "signature": "int I_GetTimeMS(void)"}, {"doc": "Sleep for a specified number of ms", "kind": "function", "line": 74, "name": "I_Sleep", "signature": "void I_Sleep(int ms)"}, {"kind": "function", "line": 82, "name": "I_WaitVBL", "signature": "void I_WaitVBL(int count)"}, {"kind": "function", "line": 87, "name": "I_InitTimer", "signature": "void I_InitTimer(void)"}, {"kind": "function", "line": 39, "name": "DG_GetTicksMs", "signature": "return DG_GetTicksMs();"}, {"doc": "SDL_Delay(ms); usleep (ms * 1000);", "kind": "function", "line": 79, "name": "DG_SleepMs", "signature": "DG_SleepMs(ms);"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: System-specific timer interface ifndef __I_TIMER__ define __I_TIMER__ define TICRATE 35 Called by D_DoomLoop, returns current time in tics.", "id": "progs/doomgeneric/i_timer.h", "kind": "module", "label": "i_timer.h", "language": "h", "sha256": "519e8e329748ec10", "symbol_count": 7, "symbols": [{"doc": "Called by D_DoomLoop, returns current time in tics.", "kind": "function", "line": 27, "name": "I_GetTime", "signature": "int I_GetTime (void);"}, {"doc": "returns current time in ms", "kind": "function", "line": 30, "name": "I_GetTimeMS", "signature": "int I_GetTimeMS (void);"}, {"doc": "Pause for a specified number of ms", "kind": "function", "line": 33, "name": "I_Sleep", "signature": "void I_Sleep(int ms);"}, {"doc": "Initialize timer", "kind": "function", "line": 36, "name": "I_InitTimer", "signature": "void I_InitTimer(void);"}, {"doc": "Wait for vertical retrace or pause a bit.", "kind": "function", "line": 39, "name": "I_WaitVBL", "signature": "void I_WaitVBL(int count);"}, {"kind": "macro", "line": 21, "name": "__I_TIMER__", "signature": "#define __I_TIMER__"}, {"kind": "macro", "line": 22, "name": "TICRATE", "signature": "#define TICRATE"}]}, {"doc": "Emacs style mode select -*- C++ -*- ----------------------------------------------------------------------------- $Id:$ Copyright (C) 1993-1996 by id Software, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. $Log:$ DESCRIPTION: DOOM graphics stuff for X11, UNIX. -----------------------------------------------------------------------------", "id": "progs/doomgeneric/i_video.c", "kind": "module", "label": "i_video.c", "language": "c", "sha256": "d25f74d92f548891", "symbol_count": 37, "symbols": [{"kind": "struct", "line": 54, "name": "FB_BitField"}, {"kind": "struct", "line": 60, "name": "FB_ScreenInfo"}, {"kind": "struct", "line": 80, "name": "color"}, {"kind": "struct", "line": 120, "name": "col_t"}, {"kind": "function", "line": 130, "name": "cmap_to_rgb565", "signature": "void cmap_to_rgb565(uint16_t * out, uint8_t * in, int in_pixels)"}, {"kind": "function", "line": 151, "name": "cmap_to_fb", "signature": "void cmap_to_fb(uint8_t * out, uint8_t * in, int in_pixels)"}, {"kind": "function", "line": 178, "name": "I_InitGraphics", "signature": "void I_InitGraphics (void)"}, {"kind": "function", "line": 231, "name": "I_ShutdownGraphics", "signature": "void I_ShutdownGraphics (void)"}, {"kind": "function", "line": 236, "name": "I_StartFrame", "signature": "void I_StartFrame (void)"}, {"kind": "function", "line": 241, "name": "I_StartTic", "signature": "void I_StartTic (void)"}, {"kind": "function", "line": 246, "name": "I_UpdateNoBlit", "signature": "void I_UpdateNoBlit (void)"}, {"doc": "I_FinishUpdate", "kind": "function", "line": 254, "name": "I_FinishUpdate", "signature": "void I_FinishUpdate (void)"}, {"doc": "I_ReadScreen", "kind": "function", "line": 302, "name": "I_ReadScreen", "signature": "void I_ReadScreen (byte* scr)"}, {"doc": "I_SetPalette define GFX_RGB565(r, g, b)\t\t\t((((r & 0xF8) >> 3) << 11) | (((g & 0xFC) >> 2) << 5) | ((b & 0xF8) >> 3)) define GFX_RGB565_R(color)\t\t\t((0xF800 & color) >> 11) define GFX_RGB565_G(color)\t\t\t((0x07E0 & color) >> 5) define GFX_RGB565_B(color)\t\t\t(0x001F & color)", "kind": "function", "line": 314, "name": "I_SetPalette", "signature": "void I_SetPalette (byte* palette)"}, {"doc": "Given an RGB value, find the closest matching palette index.", "kind": "function", "line": 332, "name": "I_GetPaletteIndex", "signature": "int I_GetPaletteIndex (int r, int g, int b)"}, {"kind": "function", "line": 368, "name": "I_BeginRead", "signature": "void I_BeginRead (void)"}, {"kind": "function", "line": 372, "name": "I_EndRead", "signature": "void I_EndRead (void)"}, {"kind": "function", "line": 376, "name": "I_SetWindowTitle", "signature": "void I_SetWindowTitle (char *title)"}, {"kind": "function", "line": 381, "name": "I_GraphicsCheckCommandLine", "signature": "void I_GraphicsCheckCommandLine (void)"}, {"kind": "function", "line": 385, "name": "I_SetGrabMouseCallback", "signature": "void I_SetGrabMouseCallback (grabmouse_callback_t func)"}, {"kind": "function", "line": 389, "name": "I_EnableLoadingDisk", "signature": "void I_EnableLoadingDisk(void)"}, {"kind": "function", "line": 393, "name": "I_BindVideoVariables", "signature": "void I_BindVideoVariables (void)"}, {"kind": "function", "line": 397, "name": "I_DisplayFPSDots", "signature": "void I_DisplayFPSDots (boolean dots_on)"}, {"kind": "function", "line": 401, "name": "I_CheckIsScreensaver", "signature": "void I_CheckIsScreensaver (void)"}, {"kind": "function", "line": 88, "name": "I_GetEvent", "signature": "void I_GetEvent(void);"}, {"kind": "function", "line": 182, "name": "memset", "signature": "memset(&s_Fb, 0, sizeof(struct FB_ScreenInfo));"}, {"kind": "function", "line": 199, "name": "printf", "signature": "printf(\"I_InitGraphics: framebuffer: x_res: %d, y_res: %d, x_virtual: %d, y_virtual: %d, bpp: %d\\n\", s_Fb.xres, s_Fb.yres, s_Fb.xres_virtual, s_Fb.yres_virtual, s_Fb.bits_per_pixel);"}, {"kind": "function", "line": 227, "name": "I_InitInput", "signature": "extern int I_InitInput(void);"}, {"kind": "function", "line": 234, "name": "Z_Free", "signature": "Z_Free (I_VideoBuffer);"}, {"kind": "function", "line": 283, "name": "memcpy", "signature": "memcpy(line_out, line_in, SCREENWIDTH);"}, {"kind": "function", "line": 295, "name": "DG_DrawFrame", "signature": "DG_DrawFrame();"}, {"kind": "function", "line": 379, "name": "DG_SetWindowTitle", "signature": "DG_SetWindowTitle(title);"}, {"doc": "#define CMAP256", "kind": "variable", "line": 51, "name": "minios_palette_dirty", "signature": "extern volatile int minios_palette_dirty;"}, {"kind": "macro", "line": 310, "name": "GFX_RGB565", "signature": "#define GFX_RGB565(r, g, b)"}, {"kind": "macro", "line": 311, "name": "GFX_RGB565_R", "signature": "#define GFX_RGB565_R(color)"}, {"kind": "macro", "line": 312, "name": "GFX_RGB565_G", "signature": "#define GFX_RGB565_G(color)"}, {"kind": "macro", "line": 313, "name": "GFX_RGB565_B", "signature": "#define GFX_RGB565_B(color)"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: System specific interface stuff. ifndef __I_VIDEO__ define __I_VIDEO__ include \"doomtype.h\" Screen width and height. define SCREENWIDTH 320 define SCREENHEIGHT 200 Screen width used for \"squash\" scale functions", "id": "progs/doomgeneric/i_video.h", "kind": "module", "label": "i_video.h", "language": "h", "sha256": "972ff7b907c76b6c", "symbol_count": 43, "symbols": [{"kind": "struct", "line": 40, "name": "screen_mode_t"}, {"doc": "Initialisation function to call when using this mode. Called with a pointer to the Doom palette. If NULL, no init function is called.", "kind": "function", "line": 51, "name": "void", "signature": "void (*InitMode)(byte *palette);"}, {"doc": "Function to call to draw the screen from the source buffer. Return true if draw was successful.", "kind": "function", "line": 56, "name": "boolean", "signature": "boolean (*DrawScreen)(int x1, int y1, int x2, int y2);"}, {"doc": "Called by D_DoomMain, determines the hardware configuration and sets up the video mode", "kind": "function", "line": 97, "name": "I_InitGraphics", "signature": "void I_InitGraphics (void);"}, {"kind": "function", "line": 98, "name": "I_GraphicsCheckCommandLine", "signature": "void I_GraphicsCheckCommandLine(void);"}, {"kind": "function", "line": 100, "name": "I_ShutdownGraphics", "signature": "void I_ShutdownGraphics(void);"}, {"doc": "Takes full 8 bit values.", "kind": "function", "line": 104, "name": "I_SetPalette", "signature": "void I_SetPalette (byte* palette);"}, {"kind": "function", "line": 105, "name": "I_GetPaletteIndex", "signature": "int I_GetPaletteIndex(int r, int g, int b);"}, {"kind": "function", "line": 106, "name": "I_UpdateNoBlit", "signature": "void I_UpdateNoBlit (void);"}, {"kind": "function", "line": 108, "name": "I_FinishUpdate", "signature": "void I_FinishUpdate (void);"}, {"kind": "function", "line": 109, "name": "I_ReadScreen", "signature": "void I_ReadScreen (byte* scr);"}, {"kind": "function", "line": 111, "name": "I_BeginRead", "signature": "void I_BeginRead (void);"}, {"kind": "function", "line": 113, "name": "I_SetWindowTitle", "signature": "void I_SetWindowTitle(char *title);"}, {"kind": "function", "line": 115, "name": "I_CheckIsScreensaver", "signature": "void I_CheckIsScreensaver(void);"}, {"kind": "function", "line": 117, "name": "I_SetGrabMouseCallback", "signature": "void I_SetGrabMouseCallback(grabmouse_callback_t func);"}, {"kind": "function", "line": 118, "name": "I_DisplayFPSDots", "signature": "void I_DisplayFPSDots(boolean dots_on);"}, {"kind": "function", "line": 120, "name": "I_BindVideoVariables", "signature": "void I_BindVideoVariables(void);"}, {"kind": "function", "line": 121, "name": "I_InitWindowTitle", "signature": "void I_InitWindowTitle(void);"}, {"kind": "function", "line": 123, "name": "I_InitWindowIcon", "signature": "void I_InitWindowIcon(void);"}, {"doc": "Called before processing any tics in a frame (just after displaying a frame). Time consuming syncronous operations are performed here (joystick reading).", "kind": "function", "line": 127, "name": "I_StartFrame", "signature": "void I_StartFrame (void);"}, {"doc": "Called before processing each tic in a frame. Quick syncronous operations are performed here.", "kind": "function", "line": 132, "name": "I_StartTic", "signature": "void I_StartTic (void);"}, {"doc": "Enable the loading disk image displayed when reading from disk.", "kind": "function", "line": 136, "name": "I_EnableLoadingDisk", "signature": "void I_EnableLoadingDisk(void);"}, {"kind": "variable", "line": 138, "name": "video_driver", "signature": "extern char *video_driver;"}, {"kind": "variable", "line": 140, "name": "screenvisible", "signature": "extern boolean screenvisible;"}, {"kind": "variable", "line": 141, "name": "mouse_acceleration", "signature": "extern float mouse_acceleration;"}, {"kind": "variable", "line": 143, "name": "mouse_threshold", "signature": "extern int mouse_threshold;"}, {"kind": "variable", "line": 144, "name": "vanilla_keyboard_mapping", "signature": "extern int vanilla_keyboard_mapping;"}, {"kind": "variable", "line": 145, "name": "screensaver_mode", "signature": "extern boolean screensaver_mode;"}, {"kind": "variable", "line": 146, "name": "usegamma", "signature": "extern int usegamma;"}, {"kind": "variable", "line": 147, "name": "I_VideoBuffer", "signature": "extern byte *I_VideoBuffer;"}, {"kind": "variable", "line": 148, "name": "screen_width", "signature": "extern int screen_width;"}, {"kind": "variable", "line": 150, "name": "screen_height", "signature": "extern int screen_height;"}, {"kind": "variable", "line": 151, "name": "screen_bpp", "signature": "extern int screen_bpp;"}, {"kind": "variable", "line": 152, "name": "fullscreen", "signature": "extern int fullscreen;"}, {"kind": "variable", "line": 153, "name": "aspect_ratio_correct", "signature": "extern int aspect_ratio_correct;"}, {"kind": "variable", "line": 154, "name": "show_diskicon", "signature": "extern int show_diskicon;"}, {"kind": "variable", "line": 156, "name": "diskicon_readbytes", "signature": "extern int diskicon_readbytes;"}, {"kind": "macro", "line": 21, "name": "__I_VIDEO__", "signature": "#define __I_VIDEO__"}, {"kind": "macro", "line": 26, "name": "SCREENWIDTH", "signature": "#define SCREENWIDTH"}, {"kind": "macro", "line": 28, "name": "SCREENHEIGHT", "signature": "#define SCREENHEIGHT"}, {"kind": "macro", "line": 31, "name": "SCREENWIDTH_4_3", "signature": "#define SCREENWIDTH_4_3"}, {"kind": "macro", "line": 35, "name": "SCREENHEIGHT_4_3", "signature": "#define SCREENHEIGHT_4_3"}, {"kind": "macro", "line": 37, "name": "MAX_MOUSE_BUTTONS", "signature": "#define MAX_MOUSE_BUTTONS"}]}, {"id": "progs/doomgeneric/icon.c", "kind": "module", "label": "icon.c", "language": "c", "sha256": "a2aacb813259f73d", "symbol_count": 0, "symbols": []}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Thing frame/state LUT, generated by multigen utilitiy. This one is the original DOOM version, preserved. include include Data. include \"sounds.h\" include \"m_fixed.h\" include \"info.h\" include \"p_mobj.h\"", "id": "progs/doomgeneric/info.c", "kind": "module", "label": "info.c", "language": "c", "sha256": "7bbbbd9504cb1aeb", "symbol_count": 74, "symbols": [{"doc": "Doesn't work with g++, needs actionf_p1", "kind": "function", "line": 51, "name": "A_Light0", "signature": "void A_Light0();"}, {"kind": "function", "line": 52, "name": "A_WeaponReady", "signature": "void A_WeaponReady();"}, {"kind": "function", "line": 53, "name": "A_Lower", "signature": "void A_Lower();"}, {"kind": "function", "line": 54, "name": "A_Raise", "signature": "void A_Raise();"}, {"kind": "function", "line": 55, "name": "A_Punch", "signature": "void A_Punch();"}, {"kind": "function", "line": 56, "name": "A_ReFire", "signature": "void A_ReFire();"}, {"kind": "function", "line": 57, "name": "A_FirePistol", "signature": "void A_FirePistol();"}, {"kind": "function", "line": 58, "name": "A_Light1", "signature": "void A_Light1();"}, {"kind": "function", "line": 59, "name": "A_FireShotgun", "signature": "void A_FireShotgun();"}, {"kind": "function", "line": 60, "name": "A_Light2", "signature": "void A_Light2();"}, {"kind": "function", "line": 61, "name": "A_FireShotgun2", "signature": "void A_FireShotgun2();"}, {"kind": "function", "line": 62, "name": "A_CheckReload", "signature": "void A_CheckReload();"}, {"kind": "function", "line": 63, "name": "A_OpenShotgun2", "signature": "void A_OpenShotgun2();"}, {"kind": "function", "line": 64, "name": "A_LoadShotgun2", "signature": "void A_LoadShotgun2();"}, {"kind": "function", "line": 65, "name": "A_CloseShotgun2", "signature": "void A_CloseShotgun2();"}, {"kind": "function", "line": 66, "name": "A_FireCGun", "signature": "void A_FireCGun();"}, {"kind": "function", "line": 67, "name": "A_GunFlash", "signature": "void A_GunFlash();"}, {"kind": "function", "line": 68, "name": "A_FireMissile", "signature": "void A_FireMissile();"}, {"kind": "function", "line": 69, "name": "A_Saw", "signature": "void A_Saw();"}, {"kind": "function", "line": 70, "name": "A_FirePlasma", "signature": "void A_FirePlasma();"}, {"kind": "function", "line": 71, "name": "A_BFGsound", "signature": "void A_BFGsound();"}, {"kind": "function", "line": 72, "name": "A_FireBFG", "signature": "void A_FireBFG();"}, {"kind": "function", "line": 73, "name": "A_BFGSpray", "signature": "void A_BFGSpray();"}, {"kind": "function", "line": 74, "name": "A_Explode", "signature": "void A_Explode();"}, {"kind": "function", "line": 75, "name": "A_Pain", "signature": "void A_Pain();"}, {"kind": "function", "line": 76, "name": "A_PlayerScream", "signature": "void A_PlayerScream();"}, {"kind": "function", "line": 77, "name": "A_Fall", "signature": "void A_Fall();"}, {"kind": "function", "line": 78, "name": "A_XScream", "signature": "void A_XScream();"}, {"kind": "function", "line": 79, "name": "A_Look", "signature": "void A_Look();"}, {"kind": "function", "line": 80, "name": "A_Chase", "signature": "void A_Chase();"}, {"kind": "function", "line": 81, "name": "A_FaceTarget", "signature": "void A_FaceTarget();"}, {"kind": "function", "line": 82, "name": "A_PosAttack", "signature": "void A_PosAttack();"}, {"kind": "function", "line": 83, "name": "A_Scream", "signature": "void A_Scream();"}, {"kind": "function", "line": 84, "name": "A_SPosAttack", "signature": "void A_SPosAttack();"}, {"kind": "function", "line": 85, "name": "A_VileChase", "signature": "void A_VileChase();"}, {"kind": "function", "line": 86, "name": "A_VileStart", "signature": "void A_VileStart();"}, {"kind": "function", "line": 87, "name": "A_VileTarget", "signature": "void A_VileTarget();"}, {"kind": "function", "line": 88, "name": "A_VileAttack", "signature": "void A_VileAttack();"}, {"kind": "function", "line": 89, "name": "A_StartFire", "signature": "void A_StartFire();"}, {"kind": "function", "line": 90, "name": "A_Fire", "signature": "void A_Fire();"}, {"kind": "function", "line": 91, "name": "A_FireCrackle", "signature": "void A_FireCrackle();"}, {"kind": "function", "line": 92, "name": "A_Tracer", "signature": "void A_Tracer();"}, {"kind": "function", "line": 93, "name": "A_SkelWhoosh", "signature": "void A_SkelWhoosh();"}, {"kind": "function", "line": 94, "name": "A_SkelFist", "signature": "void A_SkelFist();"}, {"kind": "function", "line": 95, "name": "A_SkelMissile", "signature": "void A_SkelMissile();"}, {"kind": "function", "line": 96, "name": "A_FatRaise", "signature": "void A_FatRaise();"}, {"kind": "function", "line": 97, "name": "A_FatAttack1", "signature": "void A_FatAttack1();"}, {"kind": "function", "line": 98, "name": "A_FatAttack2", "signature": "void A_FatAttack2();"}, {"kind": "function", "line": 99, "name": "A_FatAttack3", "signature": "void A_FatAttack3();"}, {"kind": "function", "line": 100, "name": "A_BossDeath", "signature": "void A_BossDeath();"}, {"kind": "function", "line": 101, "name": "A_CPosAttack", "signature": "void A_CPosAttack();"}, {"kind": "function", "line": 102, "name": "A_CPosRefire", "signature": "void A_CPosRefire();"}, {"kind": "function", "line": 103, "name": "A_TroopAttack", "signature": "void A_TroopAttack();"}, {"kind": "function", "line": 104, "name": "A_SargAttack", "signature": "void A_SargAttack();"}, {"kind": "function", "line": 105, "name": "A_HeadAttack", "signature": "void A_HeadAttack();"}, {"kind": "function", "line": 106, "name": "A_BruisAttack", "signature": "void A_BruisAttack();"}, {"kind": "function", "line": 107, "name": "A_SkullAttack", "signature": "void A_SkullAttack();"}, {"kind": "function", "line": 108, "name": "A_Metal", "signature": "void A_Metal();"}, {"kind": "function", "line": 109, "name": "A_SpidRefire", "signature": "void A_SpidRefire();"}, {"kind": "function", "line": 110, "name": "A_BabyMetal", "signature": "void A_BabyMetal();"}, {"kind": "function", "line": 111, "name": "A_BspiAttack", "signature": "void A_BspiAttack();"}, {"kind": "function", "line": 112, "name": "A_Hoof", "signature": "void A_Hoof();"}, {"kind": "function", "line": 113, "name": "A_CyberAttack", "signature": "void A_CyberAttack();"}, {"kind": "function", "line": 114, "name": "A_PainAttack", "signature": "void A_PainAttack();"}, {"kind": "function", "line": 115, "name": "A_PainDie", "signature": "void A_PainDie();"}, {"kind": "function", "line": 116, "name": "A_KeenDie", "signature": "void A_KeenDie();"}, {"kind": "function", "line": 117, "name": "A_BrainPain", "signature": "void A_BrainPain();"}, {"kind": "function", "line": 118, "name": "A_BrainScream", "signature": "void A_BrainScream();"}, {"kind": "function", "line": 119, "name": "A_BrainDie", "signature": "void A_BrainDie();"}, {"kind": "function", "line": 120, "name": "A_BrainAwake", "signature": "void A_BrainAwake();"}, {"kind": "function", "line": 121, "name": "A_BrainSpit", "signature": "void A_BrainSpit();"}, {"kind": "function", "line": 122, "name": "A_SpawnSound", "signature": "void A_SpawnSound();"}, {"kind": "function", "line": 123, "name": "A_SpawnFly", "signature": "void A_SpawnFly();"}, {"kind": "function", "line": 124, "name": "A_BrainExplode", "signature": "void A_BrainExplode();"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Thing frame/state LUT, generated by multigen utilitiy. This one is the original DOOM version, preserved. ifndef __INFO__ define __INFO__ Needed for action function pointer handling. include \"d_think.h\"", "id": "progs/doomgeneric/info.h", "kind": "module", "label": "info.h", "language": "h", "sha256": "219c1d0f3dc3386f", "symbol_count": 6, "symbols": [{"kind": "struct", "line": 1144, "name": "state_t"}, {"kind": "struct", "line": 1301, "name": "mobjinfo_t"}, {"kind": "variable", "line": 1155, "name": "states", "signature": "extern state_t states[NUMSTATES];"}, {"kind": "variable", "line": 1157, "name": "sprnames", "signature": "extern char *sprnames[];"}, {"kind": "variable", "line": 1328, "name": "mobjinfo", "signature": "extern mobjinfo_t mobjinfo[NUMMOBJTYPES];"}, {"kind": "macro", "line": 22, "name": "__INFO__", "signature": "#define __INFO__"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: include include include include include \"doomtype.h\" include \"i_system.h\" include \"m_misc.h\" include \"m_argv.h\" // haleyjd 20110212: warning fix", "id": "progs/doomgeneric/m_argv.c", "kind": "module", "label": "m_argv.c", "language": "c", "sha256": "97c4b4a5f4a59be6", "symbol_count": 12, "symbols": [{"doc": "M_CheckParm Checks for the given parameter in the program's command line arguments. Returns the argument number (1 to argc-1) or 0 if not present", "kind": "function", "line": 42, "name": "M_CheckParmWithArgs", "signature": "int M_CheckParmWithArgs(char *check, int num_args)"}, {"doc": "M_ParmExists Returns true if the given parameter exists in the program's command line arguments, false if not.", "kind": "function", "line": 62, "name": "M_ParmExists", "signature": "boolean M_ParmExists(char *check)"}, {"kind": "function", "line": 67, "name": "M_CheckParm", "signature": "int M_CheckParm(char *check)"}, {"doc": "define MAXARGVS 100", "kind": "function", "line": 74, "name": "LoadResponseFile", "signature": "static void LoadResponseFile(int argv_index)"}, {"doc": "Find a Response File", "kind": "function", "line": 234, "name": "M_FindResponseFile", "signature": "void M_FindResponseFile(void)"}, {"doc": "Return the name of the executable used to start the program:", "kind": "function", "line": 249, "name": "M_GetExecutableName", "signature": "char *M_GetExecutableName(void)"}, {"kind": "function", "line": 94, "name": "printf", "signature": "printf (\"\\nNo such response file!\");"}, {"doc": "if ORIGCODE", "kind": "function", "line": 96, "name": "exit", "signature": "exit(1);"}, {"kind": "function", "line": 119, "name": "I_Error", "signature": "I_Error(\"Failed to read full contents of '%s'\", response_filename);"}, {"kind": "function", "line": 124, "name": "fclose", "signature": "fclose(handle);"}, {"kind": "function", "line": 131, "name": "memset", "signature": "memset(newargv, 0, sizeof(char *) * MAXARGVS);"}, {"kind": "macro", "line": 72, "name": "MAXARGVS", "signature": "#define MAXARGVS"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Nil. ifndef __M_ARGV__ define __M_ARGV__ include \"doomtype.h\" MISC", "id": "progs/doomgeneric/m_argv.h", "kind": "module", "label": "m_argv.h", "language": "h", "sha256": "7c0bf70cabbe3cbc", "symbol_count": 8, "symbols": [{"doc": "Returns the position of the given parameter in the arg list (0 if not found).", "kind": "function", "line": 33, "name": "M_CheckParm", "signature": "int M_CheckParm (char* check);"}, {"doc": "Same as M_CheckParm, but checks that num_args arguments are available following the specified argument.", "kind": "function", "line": 37, "name": "M_CheckParmWithArgs", "signature": "int M_CheckParmWithArgs(char *check, int num_args);"}, {"kind": "function", "line": 38, "name": "M_FindResponseFile", "signature": "void M_FindResponseFile(void);"}, {"doc": "Parameter has been specified?", "kind": "function", "line": 42, "name": "M_ParmExists", "signature": "boolean M_ParmExists(char *check);"}, {"doc": "Get name of executable used to run this program:", "kind": "function", "line": 46, "name": "M_GetExecutableName", "signature": "char *M_GetExecutableName(void);"}, {"doc": "MISC", "kind": "variable", "line": 28, "name": "myargc", "signature": "extern int myargc;"}, {"kind": "variable", "line": 29, "name": "myargv", "signature": "extern char** myargv;"}, {"kind": "macro", "line": 21, "name": "__M_ARGV__", "signature": "#define __M_ARGV__"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Main loop menu stuff. Random number LUT. Default Config File. PCX Screenshots. include \"m_bbox.h\"", "id": "progs/doomgeneric/m_bbox.c", "kind": "module", "label": "m_bbox.c", "language": "c", "sha256": "879c4cd6b21c7f9a", "symbol_count": 2, "symbols": [{"doc": "include \"m_bbox.h\"", "kind": "function", "line": 25, "name": "M_ClearBox", "signature": "void M_ClearBox (fixed_t *box)"}, {"kind": "function", "line": 34, "name": "M_AddToBox", "signature": "void\nM_AddToBox\n( fixed_t*\tbox,\n fixed_t\tx,\n fixed_t\ty )"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Nil. ifndef __M_BBOX__ define __M_BBOX__ include include \"m_fixed.h\" Bounding box coordinate storage.", "id": "progs/doomgeneric/m_bbox.h", "kind": "module", "label": "m_bbox.h", "language": "h", "sha256": "8a54cdd47050d131", "symbol_count": 3, "symbols": [{"doc": "Bounding box functions.", "kind": "function", "line": 38, "name": "M_ClearBox", "signature": "void M_ClearBox (fixed_t* box);"}, {"kind": "function", "line": 39, "name": "M_AddToBox", "signature": "void M_AddToBox ( fixed_t* box, fixed_t x, fixed_t y );"}, {"kind": "macro", "line": 21, "name": "__M_BBOX__", "signature": "#define __M_BBOX__"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Cheat sequence checking. include include \"doomtype.h\" include \"m_cheat.h\" CHEAT SEQUENCE PACKAGE", "id": "progs/doomgeneric/m_cheat.c", "kind": "module", "label": "m_cheat.c", "language": "c", "sha256": "c4375b6c43fc229d", "symbol_count": 3, "symbols": [{"doc": "Called in st_stuff module, which handles the input. Returns a 1 if the cheat was successful, 0 if failed.", "kind": "function", "line": 34, "name": "cht_CheckCheat", "signature": "int\ncht_CheckCheat\n( cheatseq_t*\tcht,\n char\t\tkey )"}, {"kind": "function", "line": 80, "name": "cht_GetParam", "signature": "void\ncht_GetParam\n( cheatseq_t*\tcht,\n char*\t\tbuffer )"}, {"kind": "function", "line": 86, "name": "memcpy", "signature": "memcpy(buffer, cht->parameter_buf, cht->parameter_chars);"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Cheat code checking. ifndef __M_CHEAT__ define __M_CHEAT__ CHEAT SEQUENCE PACKAGE declaring a cheat define CHEAT(value, parameters) \\", "id": "progs/doomgeneric/m_cheat.h", "kind": "module", "label": "m_cheat.h", "language": "h", "sha256": "792cf96a8f11597a", "symbol_count": 7, "symbols": [{"kind": "struct", "line": 35, "name": "cheatseq_t"}, {"kind": "function", "line": 49, "name": "cht_CheckCheat", "signature": "int cht_CheckCheat ( cheatseq_t* cht, char key );"}, {"kind": "function", "line": 54, "name": "cht_GetParam", "signature": "void cht_GetParam ( cheatseq_t* cht, char* buffer );"}, {"kind": "macro", "line": 21, "name": "__M_CHEAT__", "signature": "#define __M_CHEAT__"}, {"kind": "macro", "line": 28, "name": "CHEAT", "signature": "#define CHEAT(value, parameters)"}, {"kind": "macro", "line": 31, "name": "MAX_CHEAT_LEN", "signature": "#define MAX_CHEAT_LEN"}, {"kind": "macro", "line": 33, "name": "MAX_CHEAT_PARAMS", "signature": "#define MAX_CHEAT_PARAMS"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 1993-2008 Raven Software Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Configuration file interface. include include include include include include \"config.h\" include \"doomtype.h\" include \"doomkeys.h\"", "id": "progs/doomgeneric/m_config.c", "kind": "module", "label": "m_config.c", "language": "c", "sha256": "4102c091a5ec6d6c", "symbol_count": 34, "symbols": [{"kind": "struct", "line": 61, "name": "default_t"}, {"kind": "struct", "line": 88, "name": "default_collection_t"}, {"doc": "Search a collection for a variable", "kind": "function", "line": 1562, "name": "SearchCollection", "signature": "static default_t *SearchCollection(default_collection_t *collection, char *name)"}, {"kind": "function", "line": 1607, "name": "SaveDefaultCollection", "signature": "static void SaveDefaultCollection(default_collection_t *collection)"}, {"doc": "Parses integer values in the configuration file", "kind": "function", "line": 1715, "name": "ParseIntParameter", "signature": "static int ParseIntParameter(char *strparm)"}, {"kind": "function", "line": 1727, "name": "SetVariable", "signature": "static void SetVariable(default_t *def, char *value)"}, {"kind": "function", "line": 1770, "name": "LoadDefaultCollection", "signature": "static void LoadDefaultCollection(default_collection_t *collection)"}, {"doc": "Set the default filenames to use for configuration files.", "kind": "function", "line": 1835, "name": "M_SetConfigFilenames", "signature": "void M_SetConfigFilenames(char *main_config, char *extra_config)"}, {"doc": "M_SaveDefaults", "kind": "function", "line": 1845, "name": "M_SaveDefaults", "signature": "void M_SaveDefaults (void)"}, {"doc": "Save defaults to alternate filenames", "kind": "function", "line": 1855, "name": "M_SaveDefaultsAlternate", "signature": "void M_SaveDefaultsAlternate(char *main, char *extra)"}, {"doc": "M_LoadDefaults", "kind": "function", "line": 1880, "name": "M_LoadDefaults", "signature": "void M_LoadDefaults (void)"}, {"doc": "Get a configuration file variable by its name", "kind": "function", "line": 1936, "name": "GetDefaultForName", "signature": "static default_t *GetDefaultForName(char *name)"}, {"doc": "Bind a variable to a given configuration file variable, by name.", "kind": "function", "line": 1963, "name": "M_BindVariable", "signature": "void M_BindVariable(char *name, void *location)"}, {"doc": "Set the value of a particular variable; an API function for other parts of the program to assign values to config variables by name.", "kind": "function", "line": 1976, "name": "M_SetVariable", "signature": "boolean M_SetVariable(char *name, char *value)"}, {"doc": "Get the value of a variable.", "kind": "function", "line": 1994, "name": "M_GetIntVariable", "signature": "int M_GetIntVariable(char *name)"}, {"kind": "function", "line": 2009, "name": "M_GetStrVariable", "signature": "const char *M_GetStrVariable(char *name)"}, {"kind": "function", "line": 2024, "name": "M_GetFloatVariable", "signature": "float M_GetFloatVariable(char *name)"}, {"doc": "Get the path to the default configuration dir to use, if NULL is passed to M_SetConfigDir.", "kind": "function", "line": 2042, "name": "GetDefaultConfigDir", "signature": "static char *GetDefaultConfigDir(void)"}, {"doc": "SetConfigDir: Sets the location of the configuration directory, where configuration files are stored - default.cfg, chocolate-doom.cfg, savegames, etc.", "kind": "function", "line": 2058, "name": "M_SetConfigDir", "signature": "void M_SetConfigDir(char *dir)"}, {"doc": "Calculate the path to the directory to use to store save games. Creates the directory as necessary.", "kind": "function", "line": 2086, "name": "M_GetSaveGameDir", "signature": "char *M_GetSaveGameDir(char *iwadname)"}, {"kind": "function", "line": 1638, "name": "fprintf", "signature": "fprintf(f, \" \");"}, {"kind": "function", "line": 1709, "name": "fclose", "signature": "fclose (f);"}, {"kind": "function", "line": 1722, "name": "sscanf", "signature": "else sscanf(strparm, \"%i\", &parm);"}, {"kind": "function", "line": 1824, "name": "memmove", "signature": "memmove(strparm, strparm + 1, sizeof(strparm) - 1);"}, {"kind": "function", "line": 1900, "name": "printf", "signature": "printf (\" default file: %s\\n\",doom_defaults.filename);"}, {"kind": "function", "line": 1954, "name": "I_Error", "signature": "I_Error(\"Unknown configuration variable: '%s'\", name);"}, {"doc": "Make the directory if it doesn't already exist:", "kind": "function", "line": 2078, "name": "M_MakeDirectory", "signature": "M_MakeDirectory(configdir);"}, {"kind": "function", "line": 2115, "name": "free", "signature": "free(topdir);"}, {"kind": "macro", "line": 94, "name": "CONFIG_VARIABLE_GENERIC", "signature": "#define CONFIG_VARIABLE_GENERIC(name, type)"}, {"kind": "macro", "line": 97, "name": "CONFIG_VARIABLE_KEY", "signature": "#define CONFIG_VARIABLE_KEY(name)"}, {"kind": "macro", "line": 100, "name": "CONFIG_VARIABLE_INT", "signature": "#define CONFIG_VARIABLE_INT(name)"}, {"kind": "macro", "line": 102, "name": "CONFIG_VARIABLE_INT_HEX", "signature": "#define CONFIG_VARIABLE_INT_HEX(name)"}, {"kind": "macro", "line": 104, "name": "CONFIG_VARIABLE_FLOAT", "signature": "#define CONFIG_VARIABLE_FLOAT(name)"}, {"kind": "macro", "line": 106, "name": "CONFIG_VARIABLE_STRING", "signature": "#define CONFIG_VARIABLE_STRING(name)"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Configuration file interface. ifndef __M_CONFIG__ define __M_CONFIG__ include \"doomtype.h\"", "id": "progs/doomgeneric/m_config.h", "kind": "module", "label": "m_config.h", "language": "h", "sha256": "3b8154248488cff9", "symbol_count": 13, "symbols": [{"doc": "include \"doomtype.h\"", "kind": "function", "line": 24, "name": "M_LoadDefaults", "signature": "void M_LoadDefaults(void);"}, {"kind": "function", "line": 26, "name": "M_SaveDefaults", "signature": "void M_SaveDefaults(void);"}, {"kind": "function", "line": 27, "name": "M_SaveDefaultsAlternate", "signature": "void M_SaveDefaultsAlternate(char *main, char *extra);"}, {"kind": "function", "line": 28, "name": "M_SetConfigDir", "signature": "void M_SetConfigDir(char *dir);"}, {"kind": "function", "line": 29, "name": "M_BindVariable", "signature": "void M_BindVariable(char *name, void *variable);"}, {"kind": "function", "line": 30, "name": "M_SetVariable", "signature": "boolean M_SetVariable(char *name, char *value);"}, {"kind": "function", "line": 31, "name": "M_GetIntVariable", "signature": "int M_GetIntVariable(char *name);"}, {"kind": "function", "line": 32, "name": "M_GetStrVariable", "signature": "const char *M_GetStrVariable(char *name);"}, {"kind": "function", "line": 33, "name": "M_GetFloatVariable", "signature": "float M_GetFloatVariable(char *name);"}, {"kind": "function", "line": 34, "name": "M_SetConfigFilenames", "signature": "void M_SetConfigFilenames(char *main_config, char *extra_config);"}, {"kind": "function", "line": 35, "name": "M_GetSaveGameDir", "signature": "char *M_GetSaveGameDir(char *iwadname);"}, {"kind": "variable", "line": 36, "name": "configdir", "signature": "extern char *configdir;"}, {"kind": "macro", "line": 21, "name": "__M_CONFIG__", "signature": "#define __M_CONFIG__"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 1993-2008 Raven Software Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. include include \"doomtype.h\" include \"doomkeys.h\" include \"m_config.h\" include \"m_misc.h\" Keyboard controls", "id": "progs/doomgeneric/m_controls.c", "kind": "module", "label": "m_controls.c", "language": "c", "sha256": "6e629c37a9391362", "symbol_count": 11, "symbols": [{"doc": "Bind all of the common controls used by Doom and all other games.", "kind": "function", "line": 203, "name": "M_BindBaseControls", "signature": "void M_BindBaseControls(void)"}, {"kind": "function", "line": 240, "name": "M_BindHereticControls", "signature": "void M_BindHereticControls(void)"}, {"kind": "function", "line": 255, "name": "M_BindHexenControls", "signature": "void M_BindHexenControls(void)"}, {"kind": "function", "line": 271, "name": "M_BindStrifeControls", "signature": "void M_BindStrifeControls(void)"}, {"kind": "function", "line": 306, "name": "M_BindWeaponControls", "signature": "void M_BindWeaponControls(void)"}, {"kind": "function", "line": 327, "name": "M_BindMapControls", "signature": "void M_BindMapControls(void)"}, {"kind": "function", "line": 343, "name": "M_BindMenuControls", "signature": "void M_BindMenuControls(void)"}, {"kind": "function", "line": 374, "name": "M_BindChatControls", "signature": "void M_BindChatControls(unsigned int num_players)"}, {"doc": "Apply custom patches to the default values depending on the platform we are running on.", "kind": "function", "line": 393, "name": "M_ApplyPlatformDefaults", "signature": "void M_ApplyPlatformDefaults(void)"}, {"kind": "function", "line": 206, "name": "M_BindVariable", "signature": "M_BindVariable(\"key_right\", &key_right);"}, {"kind": "function", "line": 384, "name": "M_snprintf", "signature": "M_snprintf(name, sizeof(name), \"key_multi_msgplayer%i\", i + 1);"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 1993-2008 Raven Software Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. ifndef __M_CONTROLS_H__ define __M_CONTROLS_H__", "id": "progs/doomgeneric/m_controls.h", "kind": "module", "label": "m_controls.h", "language": "h", "sha256": "6a44dff86e202482", "symbol_count": 119, "symbols": [{"kind": "function", "line": 155, "name": "M_BindBaseControls", "signature": "void M_BindBaseControls(void);"}, {"kind": "function", "line": 157, "name": "M_BindHereticControls", "signature": "void M_BindHereticControls(void);"}, {"kind": "function", "line": 158, "name": "M_BindHexenControls", "signature": "void M_BindHexenControls(void);"}, {"kind": "function", "line": 159, "name": "M_BindStrifeControls", "signature": "void M_BindStrifeControls(void);"}, {"kind": "function", "line": 160, "name": "M_BindWeaponControls", "signature": "void M_BindWeaponControls(void);"}, {"kind": "function", "line": 161, "name": "M_BindMapControls", "signature": "void M_BindMapControls(void);"}, {"kind": "function", "line": 162, "name": "M_BindMenuControls", "signature": "void M_BindMenuControls(void);"}, {"kind": "function", "line": 163, "name": "M_BindChatControls", "signature": "void M_BindChatControls(unsigned int num_players);"}, {"kind": "function", "line": 164, "name": "M_ApplyPlatformDefaults", "signature": "void M_ApplyPlatformDefaults(void);"}, {"doc": "ifndef __M_CONTROLS_H__ define __M_CONTROLS_H__", "kind": "variable", "line": 19, "name": "key_right", "signature": "extern int key_right;"}, {"kind": "variable", "line": 21, "name": "key_left", "signature": "extern int key_left;"}, {"kind": "variable", "line": 22, "name": "key_up", "signature": "extern int key_up;"}, {"kind": "variable", "line": 24, "name": "key_down", "signature": "extern int key_down;"}, {"kind": "variable", "line": 25, "name": "key_strafeleft", "signature": "extern int key_strafeleft;"}, {"kind": "variable", "line": 26, "name": "key_straferight", "signature": "extern int key_straferight;"}, {"kind": "variable", "line": 27, "name": "key_fire", "signature": "extern int key_fire;"}, {"kind": "variable", "line": 28, "name": "key_use", "signature": "extern int key_use;"}, {"kind": "variable", "line": 29, "name": "key_strafe", "signature": "extern int key_strafe;"}, {"kind": "variable", "line": 30, "name": "key_speed", "signature": "extern int key_speed;"}, {"kind": "variable", "line": 31, "name": "key_jump", "signature": "extern int key_jump;"}, {"kind": "variable", "line": 33, "name": "key_flyup", "signature": "extern int key_flyup;"}, {"kind": "variable", "line": 35, "name": "key_flydown", "signature": "extern int key_flydown;"}, {"kind": "variable", "line": 36, "name": "key_flycenter", "signature": "extern int key_flycenter;"}, {"kind": "variable", "line": 37, "name": "key_lookup", "signature": "extern int key_lookup;"}, {"kind": "variable", "line": 38, "name": "key_lookdown", "signature": "extern int key_lookdown;"}, {"kind": "variable", "line": 39, "name": "key_lookcenter", "signature": "extern int key_lookcenter;"}, {"kind": "variable", "line": 40, "name": "key_invleft", "signature": "extern int key_invleft;"}, {"kind": "variable", "line": 41, "name": "key_invright", "signature": "extern int key_invright;"}, {"kind": "variable", "line": 42, "name": "key_useartifact", "signature": "extern int key_useartifact;"}, {"doc": "villsa [STRIFE] strife keys", "kind": "variable", "line": 45, "name": "key_usehealth", "signature": "extern int key_usehealth;"}, {"kind": "variable", "line": 46, "name": "key_invquery", "signature": "extern int key_invquery;"}, {"kind": "variable", "line": 47, "name": "key_mission", "signature": "extern int key_mission;"}, {"kind": "variable", "line": 48, "name": "key_invpop", "signature": "extern int key_invpop;"}, {"kind": "variable", "line": 49, "name": "key_invkey", "signature": "extern int key_invkey;"}, {"kind": "variable", "line": 50, "name": "key_invhome", "signature": "extern int key_invhome;"}, {"kind": "variable", "line": 51, "name": "key_invend", "signature": "extern int key_invend;"}, {"kind": "variable", "line": 52, "name": "key_invuse", "signature": "extern int key_invuse;"}, {"kind": "variable", "line": 53, "name": "key_invdrop", "signature": "extern int key_invdrop;"}, {"kind": "variable", "line": 54, "name": "key_message_refresh", "signature": "extern int key_message_refresh;"}, {"kind": "variable", "line": 56, "name": "key_pause", "signature": "extern int key_pause;"}, {"kind": "variable", "line": 57, "name": "key_multi_msg", "signature": "extern int key_multi_msg;"}, {"kind": "variable", "line": 59, "name": "key_multi_msgplayer", "signature": "extern int key_multi_msgplayer[8];"}, {"kind": "variable", "line": 60, "name": "key_weapon1", "signature": "extern int key_weapon1;"}, {"kind": "variable", "line": 62, "name": "key_weapon2", "signature": "extern int key_weapon2;"}, {"kind": "variable", "line": 63, "name": "key_weapon3", "signature": "extern int key_weapon3;"}, {"kind": "variable", "line": 64, "name": "key_weapon4", "signature": "extern int key_weapon4;"}, {"kind": "variable", "line": 65, "name": "key_weapon5", "signature": "extern int key_weapon5;"}, {"kind": "variable", "line": 66, "name": "key_weapon6", "signature": "extern int key_weapon6;"}, {"kind": "variable", "line": 67, "name": "key_weapon7", "signature": "extern int key_weapon7;"}, {"kind": "variable", "line": 68, "name": "key_weapon8", "signature": "extern int key_weapon8;"}, {"kind": "variable", "line": 69, "name": "key_arti_all", "signature": "extern int key_arti_all;"}, {"kind": "variable", "line": 71, "name": "key_arti_health", "signature": "extern int key_arti_health;"}, {"kind": "variable", "line": 72, "name": "key_arti_poisonbag", "signature": "extern int key_arti_poisonbag;"}, {"kind": "variable", "line": 73, "name": "key_arti_blastradius", "signature": "extern int key_arti_blastradius;"}, {"kind": "variable", "line": 74, "name": "key_arti_teleport", "signature": "extern int key_arti_teleport;"}, {"kind": "variable", "line": 75, "name": "key_arti_teleportother", "signature": "extern int key_arti_teleportother;"}, {"kind": "variable", "line": 76, "name": "key_arti_egg", "signature": "extern int key_arti_egg;"}, {"kind": "variable", "line": 77, "name": "key_arti_invulnerability", "signature": "extern int key_arti_invulnerability;"}, {"kind": "variable", "line": 78, "name": "key_demo_quit", "signature": "extern int key_demo_quit;"}, {"kind": "variable", "line": 80, "name": "key_spy", "signature": "extern int key_spy;"}, {"kind": "variable", "line": 81, "name": "key_prevweapon", "signature": "extern int key_prevweapon;"}, {"kind": "variable", "line": 82, "name": "key_nextweapon", "signature": "extern int key_nextweapon;"}, {"kind": "variable", "line": 83, "name": "key_map_north", "signature": "extern int key_map_north;"}, {"kind": "variable", "line": 85, "name": "key_map_south", "signature": "extern int key_map_south;"}, {"kind": "variable", "line": 86, "name": "key_map_east", "signature": "extern int key_map_east;"}, {"kind": "variable", "line": 87, "name": "key_map_west", "signature": "extern int key_map_west;"}, {"kind": "variable", "line": 88, "name": "key_map_zoomin", "signature": "extern int key_map_zoomin;"}, {"kind": "variable", "line": 89, "name": "key_map_zoomout", "signature": "extern int key_map_zoomout;"}, {"kind": "variable", "line": 90, "name": "key_map_toggle", "signature": "extern int key_map_toggle;"}, {"kind": "variable", "line": 91, "name": "key_map_maxzoom", "signature": "extern int key_map_maxzoom;"}, {"kind": "variable", "line": 92, "name": "key_map_follow", "signature": "extern int key_map_follow;"}, {"kind": "variable", "line": 93, "name": "key_map_grid", "signature": "extern int key_map_grid;"}, {"kind": "variable", "line": 94, "name": "key_map_mark", "signature": "extern int key_map_mark;"}, {"kind": "variable", "line": 95, "name": "key_map_clearmark", "signature": "extern int key_map_clearmark;"}, {"doc": "menu keys:", "kind": "variable", "line": 98, "name": "key_menu_activate", "signature": "extern int key_menu_activate;"}, {"kind": "variable", "line": 100, "name": "key_menu_up", "signature": "extern int key_menu_up;"}, {"kind": "variable", "line": 101, "name": "key_menu_down", "signature": "extern int key_menu_down;"}, {"kind": "variable", "line": 102, "name": "key_menu_left", "signature": "extern int key_menu_left;"}, {"kind": "variable", "line": 103, "name": "key_menu_right", "signature": "extern int key_menu_right;"}, {"kind": "variable", "line": 104, "name": "key_menu_back", "signature": "extern int key_menu_back;"}, {"kind": "variable", "line": 105, "name": "key_menu_forward", "signature": "extern int key_menu_forward;"}, {"kind": "variable", "line": 106, "name": "key_menu_confirm", "signature": "extern int key_menu_confirm;"}, {"kind": "variable", "line": 107, "name": "key_menu_abort", "signature": "extern int key_menu_abort;"}, {"kind": "variable", "line": 108, "name": "key_menu_help", "signature": "extern int key_menu_help;"}, {"kind": "variable", "line": 110, "name": "key_menu_save", "signature": "extern int key_menu_save;"}, {"kind": "variable", "line": 111, "name": "key_menu_load", "signature": "extern int key_menu_load;"}, {"kind": "variable", "line": 112, "name": "key_menu_volume", "signature": "extern int key_menu_volume;"}, {"kind": "variable", "line": 113, "name": "key_menu_detail", "signature": "extern int key_menu_detail;"}, {"kind": "variable", "line": 114, "name": "key_menu_qsave", "signature": "extern int key_menu_qsave;"}, {"kind": "variable", "line": 115, "name": "key_menu_endgame", "signature": "extern int key_menu_endgame;"}, {"kind": "variable", "line": 116, "name": "key_menu_messages", "signature": "extern int key_menu_messages;"}, {"kind": "variable", "line": 117, "name": "key_menu_qload", "signature": "extern int key_menu_qload;"}, {"kind": "variable", "line": 118, "name": "key_menu_quit", "signature": "extern int key_menu_quit;"}, {"kind": "variable", "line": 119, "name": "key_menu_gamma", "signature": "extern int key_menu_gamma;"}, {"kind": "variable", "line": 120, "name": "key_menu_incscreen", "signature": "extern int key_menu_incscreen;"}, {"kind": "variable", "line": 122, "name": "key_menu_decscreen", "signature": "extern int key_menu_decscreen;"}, {"kind": "variable", "line": 123, "name": "key_menu_screenshot", "signature": "extern int key_menu_screenshot;"}, {"kind": "variable", "line": 124, "name": "mousebfire", "signature": "extern int mousebfire;"}, {"kind": "variable", "line": 126, "name": "mousebstrafe", "signature": "extern int mousebstrafe;"}, {"kind": "variable", "line": 127, "name": "mousebforward", "signature": "extern int mousebforward;"}, {"kind": "variable", "line": 128, "name": "mousebjump", "signature": "extern int mousebjump;"}, {"kind": "variable", "line": 130, "name": "mousebstrafeleft", "signature": "extern int mousebstrafeleft;"}, {"kind": "variable", "line": 132, "name": "mousebstraferight", "signature": "extern int mousebstraferight;"}, {"kind": "variable", "line": 133, "name": "mousebbackward", "signature": "extern int mousebbackward;"}, {"kind": "variable", "line": 134, "name": "mousebuse", "signature": "extern int mousebuse;"}, {"kind": "variable", "line": 135, "name": "mousebprevweapon", "signature": "extern int mousebprevweapon;"}, {"kind": "variable", "line": 137, "name": "mousebnextweapon", "signature": "extern int mousebnextweapon;"}, {"kind": "variable", "line": 138, "name": "joybfire", "signature": "extern int joybfire;"}, {"kind": "variable", "line": 140, "name": "joybstrafe", "signature": "extern int joybstrafe;"}, {"kind": "variable", "line": 141, "name": "joybuse", "signature": "extern int joybuse;"}, {"kind": "variable", "line": 142, "name": "joybspeed", "signature": "extern int joybspeed;"}, {"kind": "variable", "line": 143, "name": "joybjump", "signature": "extern int joybjump;"}, {"kind": "variable", "line": 145, "name": "joybstrafeleft", "signature": "extern int joybstrafeleft;"}, {"kind": "variable", "line": 147, "name": "joybstraferight", "signature": "extern int joybstraferight;"}, {"kind": "variable", "line": 148, "name": "joybprevweapon", "signature": "extern int joybprevweapon;"}, {"kind": "variable", "line": 150, "name": "joybnextweapon", "signature": "extern int joybnextweapon;"}, {"kind": "variable", "line": 151, "name": "joybmenu", "signature": "extern int joybmenu;"}, {"kind": "variable", "line": 153, "name": "dclick_use", "signature": "extern int dclick_use;"}, {"kind": "macro", "line": 18, "name": "__M_CONTROLS_H__", "signature": "#define __M_CONTROLS_H__"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Fixed point implementation. include \"stdlib.h\" include \"doomtype.h\" include \"i_system.h\" include \"m_fixed.h\"", "id": "progs/doomgeneric/m_fixed.c", "kind": "module", "label": "m_fixed.c", "language": "c", "sha256": "b4f2f4db6001da11", "symbol_count": 2, "symbols": [{"doc": "Fixme. __USE_C_FIXED__ or something.", "kind": "function", "line": 32, "name": "FixedMul", "signature": "fixed_t\nFixedMul\n( fixed_t\ta,\n fixed_t\tb )"}, {"doc": "FixedDiv, C version.", "kind": "function", "line": 46, "name": "FixedDiv", "signature": "fixed_t FixedDiv(fixed_t a, fixed_t b)"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Fixed point arithemtics, implementation. ifndef __M_FIXED__ define __M_FIXED__ Fixed point, 32bit as 16.16. define FRACBITS\t\t16 define FRACUNIT\t\t(1< include include \"doomdef.h\" include \"doomkeys.h\" include \"dstrings.h\" include \"d_main.h\" include \"deh_main.h\"", "id": "progs/doomgeneric/m_menu.c", "kind": "module", "label": "m_menu.c", "language": "c", "sha256": "0c42760107e7e78f", "symbol_count": 88, "symbols": [{"kind": "struct", "line": 151, "name": "menu_s"}, {"doc": "MENU TYPEDEFS", "kind": "struct", "line": 133, "name": "menuitem_t"}, {"kind": "type_alias", "line": 148, "name": "numitems", "signature": "typedef struct menu_s { short numitems;"}, {"doc": "M_ReadSaveStrings read the strings from the savegame files", "kind": "function", "line": 503, "name": "M_ReadSaveStrings", "signature": "void M_ReadSaveStrings(void)"}, {"doc": "M_LoadGame & Cie.", "kind": "function", "line": 530, "name": "M_DrawLoad", "signature": "void M_DrawLoad(void)"}, {"doc": "Draw border for the savegame description", "kind": "function", "line": 549, "name": "M_DrawSaveLoadBorder", "signature": "void M_DrawSaveLoadBorder(int x,int y)"}, {"doc": "User wants to load this game", "kind": "function", "line": 572, "name": "M_LoadSelect", "signature": "void M_LoadSelect(int choice)"}, {"doc": "Selected from DOOM menu", "kind": "function", "line": 585, "name": "M_LoadGame", "signature": "void M_LoadGame (int choice)"}, {"doc": "M_SaveGame & Cie.", "kind": "function", "line": 601, "name": "M_DrawSave", "signature": "void M_DrawSave(void)"}, {"doc": "M_Responder calls this when user is finished", "kind": "function", "line": 622, "name": "M_DoSave", "signature": "void M_DoSave(int slot)"}, {"doc": "User wants to save. Start string input for M_Responder", "kind": "function", "line": 635, "name": "M_SaveSelect", "signature": "void M_SaveSelect(int choice)"}, {"doc": "Selected from DOOM menu", "kind": "function", "line": 650, "name": "M_SaveGame", "signature": "void M_SaveGame (int choice)"}, {"kind": "function", "line": 671, "name": "M_QuickSaveResponse", "signature": "void M_QuickSaveResponse(int key)"}, {"kind": "function", "line": 680, "name": "M_QuickSave", "signature": "void M_QuickSave(void)"}, {"doc": "M_QuickLoad", "kind": "function", "line": 709, "name": "M_QuickLoadResponse", "signature": "void M_QuickLoadResponse(int key)"}, {"kind": "function", "line": 717, "name": "M_QuickLoad", "signature": "void M_QuickLoad(void)"}, {"doc": "Read This Menus Had a \"quick hack to fix romero bug\"", "kind": "function", "line": 743, "name": "M_DrawReadThis1", "signature": "void M_DrawReadThis1(void)"}, {"doc": "Read This Menus - optional second page.", "kind": "function", "line": 820, "name": "M_DrawReadThis2", "signature": "void M_DrawReadThis2(void)"}, {"doc": "Change Sfx & Music volumes", "kind": "function", "line": 834, "name": "M_DrawSound", "signature": "void M_DrawSound(void)"}, {"kind": "function", "line": 844, "name": "M_Sound", "signature": "void M_Sound(int choice)"}, {"kind": "function", "line": 849, "name": "M_SfxVol", "signature": "void M_SfxVol(int choice)"}, {"kind": "function", "line": 866, "name": "M_MusicVol", "signature": "void M_MusicVol(int choice)"}, {"doc": "M_DrawMainMenu", "kind": "function", "line": 890, "name": "M_DrawMainMenu", "signature": "void M_DrawMainMenu(void)"}, {"doc": "M_NewGame", "kind": "function", "line": 902, "name": "M_DrawNewGame", "signature": "void M_DrawNewGame(void)"}, {"kind": "function", "line": 907, "name": "M_NewGame", "signature": "void M_NewGame(int choice)"}, {"kind": "function", "line": 929, "name": "M_DrawEpisode", "signature": "void M_DrawEpisode(void)"}, {"kind": "function", "line": 934, "name": "M_VerifyNightmare", "signature": "void M_VerifyNightmare(int key)"}, {"kind": "function", "line": 943, "name": "M_ChooseSkill", "signature": "void M_ChooseSkill(int choice)"}, {"kind": "function", "line": 955, "name": "M_Episode", "signature": "void M_Episode(int choice)"}, {"kind": "function", "line": 986, "name": "M_DrawOptions", "signature": "void M_DrawOptions(void)"}, {"kind": "function", "line": 1006, "name": "M_Options", "signature": "void M_Options(int choice)"}, {"doc": "Toggle messages on/off", "kind": "function", "line": 1017, "name": "M_ChangeMessages", "signature": "void M_ChangeMessages(int choice)"}, {"doc": "M_EndGame", "kind": "function", "line": 1035, "name": "M_EndGameResponse", "signature": "void M_EndGameResponse(int key)"}, {"kind": "function", "line": 1044, "name": "M_EndGame", "signature": "void M_EndGame(int choice)"}, {"doc": "M_ReadThis", "kind": "function", "line": 1069, "name": "M_ReadThis", "signature": "void M_ReadThis(int choice)"}, {"kind": "function", "line": 1074, "name": "M_ReadThis2", "signature": "void M_ReadThis2(int choice)"}, {"kind": "function", "line": 1092, "name": "M_FinishReadThis", "signature": "void M_FinishReadThis(int choice)"}, {"kind": "function", "line": 1128, "name": "M_QuitResponse", "signature": "void M_QuitResponse(int key)"}, {"kind": "function", "line": 1145, "name": "M_SelectEndMessage", "signature": "static char *M_SelectEndMessage(void)"}, {"kind": "function", "line": 1166, "name": "M_QuitDOOM", "signature": "void M_QuitDOOM(int choice)"}, {"kind": "function", "line": 1175, "name": "M_ChangeSensitivity", "signature": "void M_ChangeSensitivity(int choice)"}, {"kind": "function", "line": 1193, "name": "M_ChangeDetail", "signature": "void M_ChangeDetail(int choice)"}, {"kind": "function", "line": 1209, "name": "M_SizeDisplay", "signature": "void M_SizeDisplay(int choice)"}, {"doc": "Menu Functions", "kind": "function", "line": 1243, "name": "M_DrawThermo", "signature": "void\nM_DrawThermo\n( int\tx,\n int\ty,\n int\tthermWidth,\n int\tthermDot )"}, {"kind": "function", "line": 1266, "name": "M_DrawEmptyCell", "signature": "void\nM_DrawEmptyCell\n( menu_t*\tmenu,\n int\t\titem )"}, {"kind": "function", "line": 1277, "name": "M_DrawSelCell", "signature": "void\nM_DrawSelCell\n( menu_t*\tmenu,\n int\t\titem )"}, {"kind": "function", "line": 1286, "name": "M_StartMessage", "signature": "void\nM_StartMessage\n( char*\t\tstring,\n void*\t\troutine,\n boolean\tinput )"}, {"kind": "function", "line": 1302, "name": "M_StopMessage", "signature": "void M_StopMessage(void)"}, {"doc": "Find string width from hu_font chars", "kind": "function", "line": 1315, "name": "M_StringWidth", "signature": "int M_StringWidth(char* string)"}, {"doc": "Find string height from hu_font chars", "kind": "function", "line": 1338, "name": "M_StringHeight", "signature": "int M_StringHeight(char* string)"}, {"doc": "Write a string using the hu_font", "kind": "function", "line": 1356, "name": "M_WriteText", "signature": "void\nM_WriteText\n( int\t\tx,\n int\t\ty,\n char*\t\tstring)"}, {"doc": "These keys evaluate to a \"null\" key in Vanilla Doom that allows weird jumping in the menus. Preserve this behavior for accuracy.", "kind": "function", "line": 1402, "name": "IsNullKey", "signature": "static boolean IsNullKey(int key)"}, {"doc": "M_Responder", "kind": "function", "line": 1416, "name": "M_Responder", "signature": "boolean M_Responder (event_t* ev)"}, {"doc": "M_StartControlPanel", "kind": "function", "line": 1899, "name": "M_StartControlPanel", "signature": "void M_StartControlPanel (void)"}, {"doc": "if 0", "kind": "function", "line": 1913, "name": "M_DrawOPLDev", "signature": "static void M_DrawOPLDev(void)"}, {"doc": "M_Drawer Called after the view has been rendered, but before it has been blitted.", "kind": "function", "line": 1951, "name": "M_Drawer", "signature": "void M_Drawer (void)"}, {"doc": "M_ClearMenus", "kind": "function", "line": 2041, "name": "M_ClearMenus", "signature": "void M_ClearMenus (void)"}, {"doc": "M_SetupNextMenu", "kind": "function", "line": 2054, "name": "M_SetupNextMenu", "signature": "void M_SetupNextMenu(menu_t *menudef)"}, {"doc": "M_Ticker", "kind": "function", "line": 2064, "name": "M_Ticker", "signature": "void M_Ticker (void)"}, {"doc": "M_Init", "kind": "function", "line": 2077, "name": "M_Init", "signature": "void M_Init (void)"}, {"kind": "function", "line": 98, "name": "void", "signature": "void (*messageRoutine)(int response);"}, {"kind": "function", "line": 193, "name": "M_StartGame", "signature": "void M_StartGame(int choice);"}, {"kind": "function", "line": 511, "name": "M_StringCopy", "signature": "M_StringCopy(name, P_SaveGameFile(i), sizeof(name));"}, {"kind": "function", "line": 520, "name": "fread", "signature": "fread(&savegamestrings[i], 1, SAVESTRINGSIZE, handle);"}, {"kind": "function", "line": 521, "name": "fclose", "signature": "fclose(handle);"}, {"kind": "function", "line": 533, "name": "V_DrawPatchDirect", "signature": "V_DrawPatchDirect(72, 28, W_CacheLumpName(DEH_String(\"M_LOADG\"), PU_CACHE));"}, {"kind": "function", "line": 577, "name": "G_LoadGame", "signature": "G_LoadGame (name);"}, {"kind": "function", "line": 624, "name": "G_SaveGame", "signature": "G_SaveGame (slot,savegamestrings[slot]);"}, {"kind": "function", "line": 677, "name": "S_StartSound", "signature": "S_StartSound(NULL,sfx_swtchx);"}, {"kind": "function", "line": 700, "name": "DEH_snprintf", "signature": "DEH_snprintf(tempstring, 80, QSPROMPT, savegamestrings[quickSaveSlot]);"}, {"kind": "function", "line": 801, "name": "I_Error", "signature": "default: I_Error(\"Unhandled game version\");"}, {"kind": "function", "line": 863, "name": "S_SetSfxVolume", "signature": "S_SetSfxVolume(sfxVolume * 8);"}, {"kind": "function", "line": 880, "name": "S_SetMusicVolume", "signature": "S_SetMusicVolume(musicVolume * 8);"}, {"kind": "function", "line": 939, "name": "G_DeferedInitNew", "signature": "G_DeferedInitNew(nightmare,epi+1,1);"}, {"kind": "function", "line": 970, "name": "fprintf", "signature": "fprintf( stderr, \"M_Episode: 4th episode requires UltimateDOOM\\n\");"}, {"kind": "function", "line": 1042, "name": "D_StartTitle", "signature": "D_StartTitle ();"}, {"kind": "function", "line": 1141, "name": "I_WaitVBL", "signature": "I_WaitVBL(105);"}, {"kind": "function", "line": 1143, "name": "I_Quit", "signature": "I_Quit ();"}, {"kind": "function", "line": 1201, "name": "R_SetViewSize", "signature": "R_SetViewSize (screenblocks, detailLevel);"}, {"kind": "function", "line": 1649, "name": "G_ScreenShot", "signature": "G_ScreenShot ();"}, {"kind": "function", "line": 1749, "name": "I_SetPalette", "signature": "I_SetPalette (W_CacheLumpName (DEH_String(\"PLAYPAL\"),PU_CACHE));"}, {"kind": "function", "line": 1915, "name": "I_OPL_DevMessages", "signature": "extern void I_OPL_DevMessages(char *, size_t);"}, {"doc": "include \"m_menu.h\"", "kind": "variable", "line": 60, "name": "hu_font", "signature": "extern patch_t* hu_font[HU_FONTSIZE];"}, {"kind": "variable", "line": 63, "name": "message_dontfuckwithme", "signature": "extern boolean message_dontfuckwithme;"}, {"kind": "variable", "line": 64, "name": "chat_on", "signature": "extern boolean chat_on;"}, {"doc": "define SKULLXOFF\t\t-32 define LINEHEIGHT\t\t16", "kind": "variable", "line": 122, "name": "sendpause", "signature": "extern boolean sendpause;"}, {"kind": "macro", "line": 119, "name": "SKULLXOFF", "signature": "#define SKULLXOFF"}, {"kind": "macro", "line": 121, "name": "LINEHEIGHT", "signature": "#define LINEHEIGHT"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Menu widget stuff, episode selection and such. ifndef __M_MENU__ define __M_MENU__ include \"d_event.h\" MENUS Called by main loop,", "id": "progs/doomgeneric/m_menu.h", "kind": "module", "label": "m_menu.h", "language": "h", "sha256": "883c8d8074ead9e7", "symbol_count": 8, "symbols": [{"doc": "MENUS Called by main loop, saves config file and calls I_Quit when user exits. Even when the menu is not displayed, this can resize the view and change game parameters. Does all the real work of the menu interaction.", "kind": "function", "line": 35, "name": "M_Responder", "signature": "boolean M_Responder (event_t *ev);"}, {"doc": "Called by main loop, only used for menu (skull cursor) animation.", "kind": "function", "line": 40, "name": "M_Ticker", "signature": "void M_Ticker (void);"}, {"doc": "Called by main loop, draws the menus directly into the screen buffer.", "kind": "function", "line": 44, "name": "M_Drawer", "signature": "void M_Drawer (void);"}, {"doc": "Called by D_DoomMain, loads the config file.", "kind": "function", "line": 48, "name": "M_Init", "signature": "void M_Init (void);"}, {"doc": "Called by intro code to force menu up upon a keypress, does nothing if menu is already up.", "kind": "function", "line": 52, "name": "M_StartControlPanel", "signature": "void M_StartControlPanel (void);"}, {"kind": "variable", "line": 53, "name": "detailLevel", "signature": "extern int detailLevel;"}, {"kind": "variable", "line": 57, "name": "screenblocks", "signature": "extern int screenblocks;"}, {"kind": "macro", "line": 21, "name": "__M_MENU__", "signature": "#define __M_MENU__"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 1993-2008 Raven Software Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Miscellaneous. include include include include include ifdef _WIN32 define WIN32_LEAN_AND_MEAN include include ", "id": "progs/doomgeneric/m_misc.c", "kind": "module", "label": "m_misc.c", "language": "c", "sha256": "2bc33ac977badb59", "symbol_count": 34, "symbols": [{"doc": "Create a directory", "kind": "function", "line": 54, "name": "M_MakeDirectory", "signature": "void M_MakeDirectory(char *path)"}, {"doc": "Check if a file exists", "kind": "function", "line": 65, "name": "M_FileExists", "signature": "boolean M_FileExists(char *filename)"}, {"doc": "Determine the length of an open file.", "kind": "function", "line": 88, "name": "M_FileLength", "signature": "long M_FileLength(FILE *handle)"}, {"doc": "M_WriteFile", "kind": "function", "line": 110, "name": "M_WriteFile", "signature": "boolean M_WriteFile(char *name, void *source, int length)"}, {"doc": "M_ReadFile", "kind": "function", "line": 134, "name": "M_ReadFile", "signature": "int M_ReadFile(char *name, byte **buffer)"}, {"doc": "Returns the path to a temporary file of the given name, stored inside the system temporary directory. The returned value must be freed with Z_Free after use.", "kind": "function", "line": 165, "name": "M_TempFile", "signature": "char *M_TempFile(char *s)"}, {"kind": "function", "line": 188, "name": "M_StrToInt", "signature": "boolean M_StrToInt(const char *str, int *result)"}, {"kind": "function", "line": 196, "name": "M_ExtractFileBase", "signature": "void M_ExtractFileBase(char *path, char *dest)"}, {"doc": "-------------------------------------------------------------------------- PROC M_ForceUppercase Change string to uppercase. ---------------------------------------------------------------------------", "kind": "function", "line": 241, "name": "M_ForceUppercase", "signature": "void M_ForceUppercase(char *text)"}, {"doc": "M_StrCaseStr Case-insensitive version of strstr()", "kind": "function", "line": 257, "name": "M_StrCaseStr", "signature": "char *M_StrCaseStr(char *haystack, char *needle)"}, {"doc": "Safe version of strdup() that checks the string was successfully allocated.", "kind": "function", "line": 290, "name": "M_StringDuplicate", "signature": "char *M_StringDuplicate(const char *orig)"}, {"doc": "String replace function.", "kind": "function", "line": 309, "name": "M_StringReplace", "signature": "char *M_StringReplace(const char *haystack, const char *needle,\n const char ..."}, {"doc": "Safe string copy function that works like OpenBSD's strlcpy(). Returns true if the string was not truncated.", "kind": "function", "line": 371, "name": "M_StringCopy", "signature": "boolean M_StringCopy(char *dest, const char *src, size_t dest_size)"}, {"doc": "Safe string concat function that works like OpenBSD's strlcat(). Returns true if string not truncated.", "kind": "function", "line": 392, "name": "M_StringConcat", "signature": "boolean M_StringConcat(char *dest, const char *src, size_t dest_size)"}, {"doc": "Returns true if 's' begins with the specified prefix.", "kind": "function", "line": 407, "name": "M_StringStartsWith", "signature": "boolean M_StringStartsWith(const char *s, const char *prefix)"}, {"doc": "Returns true if 's' ends with the specified suffix.", "kind": "function", "line": 415, "name": "M_StringEndsWith", "signature": "boolean M_StringEndsWith(const char *s, const char *suffix)"}, {"doc": "Return a newly-malloced string with all the strings given as arguments concatenated together.", "kind": "function", "line": 424, "name": "M_StringJoin", "signature": "char *M_StringJoin(const char *s, ...)"}, {"doc": "Safe, portable vsnprintf().", "kind": "function", "line": 481, "name": "M_vsnprintf", "signature": "int M_vsnprintf(char *buf, size_t buf_len, const char *s, va_list args)"}, {"doc": "Safe, portable snprintf().", "kind": "function", "line": 507, "name": "M_snprintf", "signature": "int M_snprintf(char *buf, size_t buf_len, const char *s, ...)"}, {"doc": "ifdef _WIN32", "kind": "function", "line": 518, "name": "M_OEMToUTF8", "signature": "char *M_OEMToUTF8(const char *oem)"}, {"doc": "ifdef _WIN32", "kind": "function", "line": 58, "name": "mkdir", "signature": "mkdir(path);"}, {"kind": "function", "line": 74, "name": "fclose", "signature": "fclose(fstream);"}, {"doc": "jump to the end and find the length", "kind": "function", "line": 98, "name": "fseek", "signature": "fseek(handle, 0, SEEK_END);"}, {"kind": "function", "line": 219, "name": "memset", "signature": "memset(dest, 0, 8);"}, {"kind": "function", "line": 225, "name": "printf", "signature": "printf(\"Warning: Truncated '%s' lump name to '%.8s'.\\n\", filename, dest);"}, {"kind": "function", "line": 299, "name": "I_Error", "signature": "I_Error(\"Failed to duplicate string (length %i)\\n\", strlen(orig));"}, {"kind": "function", "line": 379, "name": "strncpy", "signature": "strncpy(dest, src, dest_size - 1);"}, {"kind": "function", "line": 433, "name": "va_start", "signature": "va_start(args, s);"}, {"kind": "function", "line": 445, "name": "va_end", "signature": "va_end(args);"}, {"kind": "function", "line": 526, "name": "MultiByteToWideChar", "signature": "MultiByteToWideChar(CP_OEMCP, 0, oem, len, tmp, len);"}, {"kind": "function", "line": 528, "name": "WideCharToMultiByte", "signature": "WideCharToMultiByte(CP_UTF8, 0, tmp, len, result, len * 4, NULL, NULL);"}, {"kind": "function", "line": 529, "name": "free", "signature": "free(tmp);"}, {"kind": "macro", "line": 28, "name": "WIN32_LEAN_AND_MEAN", "signature": "#define WIN32_LEAN_AND_MEAN"}, {"kind": "macro", "line": 476, "name": "vsnprintf", "signature": "#define vsnprintf"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Miscellaneous. ifndef __M_MISC__ define __M_MISC__ include include include \"doomtype.h\"", "id": "progs/doomgeneric/m_misc.h", "kind": "module", "label": "m_misc.h", "language": "h", "sha256": "bbcafce2c237eb4c", "symbol_count": 21, "symbols": [{"doc": "include \"doomtype.h\"", "kind": "function", "line": 27, "name": "M_WriteFile", "signature": "boolean M_WriteFile(char *name, void *source, int length);"}, {"kind": "function", "line": 29, "name": "M_ReadFile", "signature": "int M_ReadFile(char *name, byte **buffer);"}, {"kind": "function", "line": 30, "name": "M_MakeDirectory", "signature": "void M_MakeDirectory(char *dir);"}, {"kind": "function", "line": 31, "name": "M_TempFile", "signature": "char *M_TempFile(char *s);"}, {"kind": "function", "line": 32, "name": "M_FileExists", "signature": "boolean M_FileExists(char *file);"}, {"kind": "function", "line": 33, "name": "M_FileLength", "signature": "long M_FileLength(FILE *handle);"}, {"kind": "function", "line": 34, "name": "M_StrToInt", "signature": "boolean M_StrToInt(const char *str, int *result);"}, {"kind": "function", "line": 35, "name": "M_ExtractFileBase", "signature": "void M_ExtractFileBase(char *path, char *dest);"}, {"kind": "function", "line": 36, "name": "M_ForceUppercase", "signature": "void M_ForceUppercase(char *text);"}, {"kind": "function", "line": 37, "name": "M_StrCaseStr", "signature": "char *M_StrCaseStr(char *haystack, char *needle);"}, {"kind": "function", "line": 38, "name": "M_StringDuplicate", "signature": "char *M_StringDuplicate(const char *orig);"}, {"kind": "function", "line": 39, "name": "M_StringCopy", "signature": "boolean M_StringCopy(char *dest, const char *src, size_t dest_size);"}, {"kind": "function", "line": 40, "name": "M_StringConcat", "signature": "boolean M_StringConcat(char *dest, const char *src, size_t dest_size);"}, {"kind": "function", "line": 41, "name": "M_StringReplace", "signature": "char *M_StringReplace(const char *haystack, const char *needle, const char *replacement);"}, {"kind": "function", "line": 43, "name": "M_StringJoin", "signature": "char *M_StringJoin(const char *s, ...);"}, {"kind": "function", "line": 44, "name": "M_StringStartsWith", "signature": "boolean M_StringStartsWith(const char *s, const char *prefix);"}, {"kind": "function", "line": 45, "name": "M_StringEndsWith", "signature": "boolean M_StringEndsWith(const char *s, const char *suffix);"}, {"kind": "function", "line": 46, "name": "M_vsnprintf", "signature": "int M_vsnprintf(char *buf, size_t buf_len, const char *s, va_list args);"}, {"kind": "function", "line": 47, "name": "M_snprintf", "signature": "int M_snprintf(char *buf, size_t buf_len, const char *s, ...);"}, {"kind": "function", "line": 48, "name": "M_OEMToUTF8", "signature": "char *M_OEMToUTF8(const char *ansi);"}, {"kind": "macro", "line": 21, "name": "__M_MISC__", "signature": "#define __M_MISC__"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Random number LUT. M_Random Returns a 0-255 number", "id": "progs/doomgeneric/m_random.c", "kind": "module", "label": "m_random.c", "language": "c", "sha256": "ba1abbfc0fdd9741", "symbol_count": 3, "symbols": [{"doc": "Which one is deterministic?", "kind": "function", "line": 50, "name": "P_Random", "signature": "int P_Random (void)"}, {"kind": "function", "line": 55, "name": "M_Random", "signature": "int M_Random (void)"}, {"kind": "function", "line": 61, "name": "M_ClearRandom", "signature": "void M_ClearRandom (void)"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: ifndef __M_RANDOM__ define __M_RANDOM__ include \"doomtype.h\" Returns a number from 0 to 255, from a lookup table.", "id": "progs/doomgeneric/m_random.h", "kind": "module", "label": "m_random.h", "language": "h", "sha256": "1ff3d290529bf2ed", "symbol_count": 4, "symbols": [{"doc": "Returns a number from 0 to 255, from a lookup table.", "kind": "function", "line": 30, "name": "M_Random", "signature": "int M_Random (void);"}, {"doc": "As M_Random, but used only by the play simulation.", "kind": "function", "line": 33, "name": "P_Random", "signature": "int P_Random (void);"}, {"doc": "Fix randoms for demos.", "kind": "function", "line": 36, "name": "M_ClearRandom", "signature": "void M_ClearRandom (void);"}, {"kind": "macro", "line": 21, "name": "__M_RANDOM__", "signature": "#define __M_RANDOM__"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. Emulates the IO functions in C stdio.h reading and writing to memory. include include include include \"memio.h\" include \"z_zone.h\"", "id": "progs/doomgeneric/memio.c", "kind": "module", "label": "memio.c", "language": "c", "sha256": "0c91950e267e06a1", "symbol_count": 12, "symbols": [{"kind": "struct", "line": 32, "name": "_MEMFILE"}, {"doc": "Open a memory area for reading", "kind": "function", "line": 41, "name": "mem_fopen_read", "signature": "MEMFILE *mem_fopen_read(void *buf, size_t buflen)"}, {"doc": "Read bytes", "kind": "function", "line": 57, "name": "mem_fread", "signature": "size_t mem_fread(void *buf, size_t size, size_t nmemb, MEMFILE *stream)"}, {"doc": "Open a memory area for writing", "kind": "function", "line": 89, "name": "mem_fopen_write", "signature": "MEMFILE *mem_fopen_write(void)"}, {"doc": "Write bytes to stream", "kind": "function", "line": 106, "name": "mem_fwrite", "signature": "size_t mem_fwrite(const void *ptr, size_t size, size_t nmemb, MEMFILE *stream)"}, {"kind": "function", "line": 142, "name": "mem_get_buf", "signature": "void mem_get_buf(MEMFILE *stream, void **buf, size_t *buflen)"}, {"kind": "function", "line": 148, "name": "mem_fclose", "signature": "void mem_fclose(MEMFILE *stream)"}, {"kind": "function", "line": 158, "name": "mem_ftell", "signature": "long mem_ftell(MEMFILE *stream)"}, {"kind": "function", "line": 163, "name": "mem_fseek", "signature": "int mem_fseek(MEMFILE *stream, signed long position, mem_rel_t whence)"}, {"kind": "function", "line": 64, "name": "printf", "signature": "printf(\"not a read stream\\n\");"}, {"doc": "Copy bytes to buffer", "kind": "function", "line": 78, "name": "memcpy", "signature": "memcpy(buf, stream->buf + stream->position, items * size);"}, {"kind": "function", "line": 127, "name": "Z_Free", "signature": "Z_Free(stream->buf);"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. ifndef MEMIO_H define MEMIO_H", "id": "progs/doomgeneric/memio.h", "kind": "module", "label": "memio.h", "language": "h", "sha256": "f9a4e364c86e3d6d", "symbol_count": 10, "symbols": [{"doc": "ifndef MEMIO_H define MEMIO_H", "kind": "type_alias", "line": 18, "name": "MEMFILE", "signature": "typedef struct _MEMFILE MEMFILE;"}, {"kind": "function", "line": 27, "name": "mem_fopen_read", "signature": "MEMFILE *mem_fopen_read(void *buf, size_t buflen);"}, {"kind": "function", "line": 29, "name": "mem_fread", "signature": "size_t mem_fread(void *buf, size_t size, size_t nmemb, MEMFILE *stream);"}, {"kind": "function", "line": 30, "name": "mem_fopen_write", "signature": "MEMFILE *mem_fopen_write(void);"}, {"kind": "function", "line": 31, "name": "mem_fwrite", "signature": "size_t mem_fwrite(const void *ptr, size_t size, size_t nmemb, MEMFILE *stream);"}, {"kind": "function", "line": 32, "name": "mem_get_buf", "signature": "void mem_get_buf(MEMFILE *stream, void **buf, size_t *buflen);"}, {"kind": "function", "line": 33, "name": "mem_fclose", "signature": "void mem_fclose(MEMFILE *stream);"}, {"kind": "function", "line": 34, "name": "mem_ftell", "signature": "long mem_ftell(MEMFILE *stream);"}, {"kind": "function", "line": 35, "name": "mem_fseek", "signature": "int mem_fseek(MEMFILE *stream, signed long offset, mem_rel_t whence);"}, {"kind": "macro", "line": 17, "name": "MEMIO_H", "signature": "#define MEMIO_H"}]}, {"doc": "Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. Network client code ifndef NET_CLIENT_H define NET_CLIENT_H include \"doomtype.h\" include \"d_ticcmd.h\" include \"sha1.h\" include \"net_defs.h\"", "id": "progs/doomgeneric/net_client.h", "kind": "module", "label": "net_client.h", "language": "h", "sha256": "33b4f6b38650745f", "symbol_count": 23, "symbols": [{"doc": "include \"doomtype.h\" include \"d_ticcmd.h\" include \"sha1.h\" include \"net_defs.h\"", "kind": "function", "line": 24, "name": "NET_CL_Connect", "signature": "boolean NET_CL_Connect(net_addr_t *addr, net_connect_data_t *data);"}, {"kind": "function", "line": 26, "name": "NET_CL_Disconnect", "signature": "void NET_CL_Disconnect(void);"}, {"kind": "function", "line": 27, "name": "NET_CL_Run", "signature": "void NET_CL_Run(void);"}, {"kind": "function", "line": 28, "name": "NET_CL_Init", "signature": "void NET_CL_Init(void);"}, {"kind": "function", "line": 29, "name": "NET_CL_LaunchGame", "signature": "void NET_CL_LaunchGame(void);"}, {"kind": "function", "line": 30, "name": "NET_CL_StartGame", "signature": "void NET_CL_StartGame(net_gamesettings_t *settings);"}, {"kind": "function", "line": 31, "name": "NET_CL_SendTiccmd", "signature": "void NET_CL_SendTiccmd(ticcmd_t *ticcmd, int maketic);"}, {"kind": "function", "line": 32, "name": "NET_CL_GetSettings", "signature": "boolean NET_CL_GetSettings(net_gamesettings_t *_settings);"}, {"kind": "function", "line": 33, "name": "NET_Init", "signature": "void NET_Init(void);"}, {"kind": "function", "line": 34, "name": "NET_BindVariables", "signature": "void NET_BindVariables(void);"}, {"kind": "variable", "line": 36, "name": "net_client_connected", "signature": "extern boolean net_client_connected;"}, {"kind": "variable", "line": 38, "name": "net_client_received_wait_data", "signature": "extern boolean net_client_received_wait_data;"}, {"kind": "variable", "line": 39, "name": "net_client_wait_data", "signature": "extern net_waitdata_t net_client_wait_data;"}, {"kind": "variable", "line": 40, "name": "net_waiting_for_launch", "signature": "extern boolean net_waiting_for_launch;"}, {"kind": "variable", "line": 41, "name": "net_player_name", "signature": "extern char *net_player_name;"}, {"kind": "variable", "line": 42, "name": "net_server_wad_sha1sum", "signature": "extern sha1_digest_t net_server_wad_sha1sum;"}, {"kind": "variable", "line": 44, "name": "net_server_deh_sha1sum", "signature": "extern sha1_digest_t net_server_deh_sha1sum;"}, {"kind": "variable", "line": 45, "name": "net_server_is_freedoom", "signature": "extern unsigned int net_server_is_freedoom;"}, {"kind": "variable", "line": 46, "name": "net_local_wad_sha1sum", "signature": "extern sha1_digest_t net_local_wad_sha1sum;"}, {"kind": "variable", "line": 47, "name": "net_local_deh_sha1sum", "signature": "extern sha1_digest_t net_local_deh_sha1sum;"}, {"kind": "variable", "line": 48, "name": "net_local_is_freedoom", "signature": "extern unsigned int net_local_is_freedoom;"}, {"kind": "variable", "line": 49, "name": "drone", "signature": "extern boolean drone;"}, {"kind": "macro", "line": 18, "name": "NET_CLIENT_H", "signature": "#define NET_CLIENT_H"}]}, {"doc": "Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. Dedicated server code. ifndef NET_DEDICATED_H define NET_DEDICATED_H", "id": "progs/doomgeneric/net_dedicated.h", "kind": "module", "label": "net_dedicated.h", "language": "h", "sha256": "3175ee8c4a023722", "symbol_count": 2, "symbols": [{"doc": "ifndef NET_DEDICATED_H define NET_DEDICATED_H", "kind": "function", "line": 20, "name": "NET_DedicatedServer", "signature": "void NET_DedicatedServer(void);"}, {"kind": "macro", "line": 19, "name": "NET_DEDICATED_H", "signature": "#define NET_DEDICATED_H"}]}, {"doc": "Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Definitions for use in networking code. ifndef NET_DEFS_H define NET_DEFS_H include include \"doomtype.h\" include \"d_ticcmd.h\" include \"sha1.h\" Absolute maximum number of \"nodes\" in the game. This is different to NET_MAXPLAYERS, as there may be observers that are not participating (eg. left/right monitors)", "id": "progs/doomgeneric/net_defs.h", "kind": "module", "label": "net_defs.h", "language": "h", "sha256": "e3e82b9b3ef47008", "symbol_count": 30, "symbols": [{"kind": "struct", "line": 52, "name": "_net_packet_s"}, {"kind": "struct", "line": 60, "name": "_net_module_s"}, {"kind": "struct", "line": 95, "name": "_net_addr_s"}, {"kind": "struct", "line": 147, "name": "net_connect_data_t"}, {"kind": "struct", "line": 163, "name": "net_gamesettings_t"}, {"kind": "struct", "line": 202, "name": "net_ticdiff_t"}, {"kind": "struct", "line": 210, "name": "net_full_ticcmd_t"}, {"kind": "struct", "line": 220, "name": "net_querydata_t"}, {"kind": "struct", "line": 233, "name": "net_waitdata_t"}, {"doc": "define BACKUPTICS 128", "kind": "type_alias", "line": 46, "name": "net_module_t", "signature": "typedef struct _net_module_s net_module_t;"}, {"kind": "type_alias", "line": 48, "name": "net_packet_t", "signature": "typedef struct _net_packet_s net_packet_t;"}, {"kind": "type_alias", "line": 49, "name": "net_addr_t", "signature": "typedef struct _net_addr_s net_addr_t;"}, {"kind": "type_alias", "line": 50, "name": "net_context_t", "signature": "typedef struct _net_context_s net_context_t;"}, {"doc": "Initialize this module for use as a client", "kind": "function", "line": 63, "name": "boolean", "signature": "boolean (*InitClient)(void);"}, {"doc": "Send a packet", "kind": "function", "line": 71, "name": "void", "signature": "void (*SendPacket)(net_addr_t *addr, net_packet_t *packet);"}, {"kind": "macro", "line": 19, "name": "NET_DEFS_H", "signature": "#define NET_DEFS_H"}, {"kind": "macro", "line": 30, "name": "MAXNETNODES", "signature": "#define MAXNETNODES"}, {"kind": "macro", "line": 36, "name": "NET_MAXPLAYERS", "signature": "#define NET_MAXPLAYERS"}, {"kind": "macro", "line": 40, "name": "MAXPLAYERNAME", "signature": "#define MAXPLAYERNAME"}, {"kind": "macro", "line": 44, "name": "BACKUPTICS", "signature": "#define BACKUPTICS"}, {"kind": "macro", "line": 102, "name": "NET_MAGIC_NUMBER", "signature": "#define NET_MAGIC_NUMBER"}, {"kind": "macro", "line": 106, "name": "NET_RELIABLE_PACKET", "signature": "#define NET_RELIABLE_PACKET"}, {"kind": "macro", "line": 192, "name": "NET_TICDIFF_FORWARD", "signature": "#define NET_TICDIFF_FORWARD"}, {"kind": "macro", "line": 194, "name": "NET_TICDIFF_SIDE", "signature": "#define NET_TICDIFF_SIDE"}, {"kind": "macro", "line": 195, "name": "NET_TICDIFF_TURN", "signature": "#define NET_TICDIFF_TURN"}, {"kind": "macro", "line": 196, "name": "NET_TICDIFF_BUTTONS", "signature": "#define NET_TICDIFF_BUTTONS"}, {"kind": "macro", "line": 197, "name": "NET_TICDIFF_CONSISTANCY", "signature": "#define NET_TICDIFF_CONSISTANCY"}, {"kind": "macro", "line": 198, "name": "NET_TICDIFF_CHATCHAR", "signature": "#define NET_TICDIFF_CHATCHAR"}, {"kind": "macro", "line": 199, "name": "NET_TICDIFF_RAVEN", "signature": "#define NET_TICDIFF_RAVEN"}, {"kind": "macro", "line": 200, "name": "NET_TICDIFF_STRIFE", "signature": "#define NET_TICDIFF_STRIFE"}]}, {"doc": "Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. Graphical stuff related to the networking code: * The client waiting screen when we are waiting for the server to start the game. ifndef NET_GUI_H define NET_GUI_H include \"doomtype.h\"", "id": "progs/doomgeneric/net_gui.h", "kind": "module", "label": "net_gui.h", "language": "h", "sha256": "43202a569ead5943", "symbol_count": 2, "symbols": [{"doc": "include \"doomtype.h\"", "kind": "function", "line": 25, "name": "NET_WaitForLaunch", "signature": "extern void NET_WaitForLaunch(void);"}, {"kind": "macro", "line": 22, "name": "NET_GUI_H", "signature": "#define NET_GUI_H"}]}, {"doc": "Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Network packet manipulation (net_packet_t) ifndef NET_IO_H define NET_IO_H include \"net_defs.h\"", "id": "progs/doomgeneric/net_io.h", "kind": "module", "label": "net_io.h", "language": "h", "sha256": "114d47fad113cb69", "symbol_count": 10, "symbols": [{"kind": "function", "line": 24, "name": "NET_NewContext", "signature": "net_context_t *NET_NewContext(void);"}, {"kind": "function", "line": 26, "name": "NET_AddModule", "signature": "void NET_AddModule(net_context_t *context, net_module_t *module);"}, {"kind": "function", "line": 27, "name": "NET_SendPacket", "signature": "void NET_SendPacket(net_addr_t *addr, net_packet_t *packet);"}, {"kind": "function", "line": 28, "name": "NET_SendBroadcast", "signature": "void NET_SendBroadcast(net_context_t *context, net_packet_t *packet);"}, {"kind": "function", "line": 29, "name": "NET_RecvPacket", "signature": "boolean NET_RecvPacket(net_context_t *context, net_addr_t **addr, net_packet_t **packet);"}, {"kind": "function", "line": 31, "name": "NET_AddrToString", "signature": "char *NET_AddrToString(net_addr_t *addr);"}, {"kind": "function", "line": 32, "name": "NET_FreeAddress", "signature": "void NET_FreeAddress(net_addr_t *addr);"}, {"kind": "function", "line": 33, "name": "NET_ResolveAddress", "signature": "net_addr_t *NET_ResolveAddress(net_context_t *context, char *address);"}, {"doc": "include \"net_defs.h\"", "kind": "variable", "line": 22, "name": "net_broadcast_addr", "signature": "extern net_addr_t net_broadcast_addr;"}, {"kind": "macro", "line": 19, "name": "NET_IO_H", "signature": "#define NET_IO_H"}]}, {"doc": "Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Loopback network module for server compiled into the client ifndef NET_LOOP_H define NET_LOOP_H include \"net_defs.h\"", "id": "progs/doomgeneric/net_loop.h", "kind": "module", "label": "net_loop.h", "language": "h", "sha256": "b0e51f6f0cb52ddb", "symbol_count": 3, "symbols": [{"doc": "include \"net_defs.h\"", "kind": "variable", "line": 22, "name": "net_loop_client_module", "signature": "extern net_module_t net_loop_client_module;"}, {"kind": "variable", "line": 24, "name": "net_loop_server_module", "signature": "extern net_module_t net_loop_server_module;"}, {"kind": "macro", "line": 19, "name": "NET_LOOP_H", "signature": "#define NET_LOOP_H"}]}, {"doc": "Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Definitions for use in networking code. ifndef NET_PACKET_H define NET_PACKET_H include \"net_defs.h\"", "id": "progs/doomgeneric/net_packet.h", "kind": "module", "label": "net_packet.h", "language": "h", "sha256": "b1cbd69e31ed99a0", "symbol_count": 15, "symbols": [{"doc": "include \"net_defs.h\"", "kind": "function", "line": 22, "name": "NET_NewPacket", "signature": "net_packet_t *NET_NewPacket(int initial_size);"}, {"kind": "function", "line": 24, "name": "NET_PacketDup", "signature": "net_packet_t *NET_PacketDup(net_packet_t *packet);"}, {"kind": "function", "line": 25, "name": "NET_FreePacket", "signature": "void NET_FreePacket(net_packet_t *packet);"}, {"kind": "function", "line": 26, "name": "NET_ReadInt8", "signature": "boolean NET_ReadInt8(net_packet_t *packet, unsigned int *data);"}, {"kind": "function", "line": 28, "name": "NET_ReadInt16", "signature": "boolean NET_ReadInt16(net_packet_t *packet, unsigned int *data);"}, {"kind": "function", "line": 29, "name": "NET_ReadInt32", "signature": "boolean NET_ReadInt32(net_packet_t *packet, unsigned int *data);"}, {"kind": "function", "line": 30, "name": "NET_ReadSInt8", "signature": "boolean NET_ReadSInt8(net_packet_t *packet, signed int *data);"}, {"kind": "function", "line": 32, "name": "NET_ReadSInt16", "signature": "boolean NET_ReadSInt16(net_packet_t *packet, signed int *data);"}, {"kind": "function", "line": 33, "name": "NET_ReadSInt32", "signature": "boolean NET_ReadSInt32(net_packet_t *packet, signed int *data);"}, {"kind": "function", "line": 34, "name": "NET_ReadString", "signature": "char *NET_ReadString(net_packet_t *packet);"}, {"kind": "function", "line": 36, "name": "NET_WriteInt8", "signature": "void NET_WriteInt8(net_packet_t *packet, unsigned int i);"}, {"kind": "function", "line": 38, "name": "NET_WriteInt16", "signature": "void NET_WriteInt16(net_packet_t *packet, unsigned int i);"}, {"kind": "function", "line": 39, "name": "NET_WriteInt32", "signature": "void NET_WriteInt32(net_packet_t *packet, unsigned int i);"}, {"kind": "function", "line": 40, "name": "NET_WriteString", "signature": "void NET_WriteString(net_packet_t *packet, char *string);"}, {"kind": "macro", "line": 19, "name": "NET_PACKET_H", "signature": "#define NET_PACKET_H"}]}, {"doc": "Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Querying servers to find their current status. ifndef NET_QUERY_H define NET_QUERY_H include \"net_defs.h\"", "id": "progs/doomgeneric/net_query.h", "kind": "module", "label": "net_query.h", "language": "h", "sha256": "d7cbfe39d3804f93", "symbol_count": 13, "symbols": [{"doc": "include \"net_defs.h\"", "kind": "function", "line": 22, "name": "void", "signature": "typedef void (*net_query_callback_t)(net_addr_t *addr, net_querydata_t *querydata, unsigned int ping_time, void *user_data);"}, {"kind": "function", "line": 27, "name": "NET_StartLANQuery", "signature": "extern int NET_StartLANQuery(void);"}, {"kind": "function", "line": 29, "name": "NET_StartMasterQuery", "signature": "extern int NET_StartMasterQuery(void);"}, {"kind": "function", "line": 30, "name": "NET_LANQuery", "signature": "extern void NET_LANQuery(void);"}, {"kind": "function", "line": 32, "name": "NET_MasterQuery", "signature": "extern void NET_MasterQuery(void);"}, {"kind": "function", "line": 33, "name": "NET_QueryAddress", "signature": "extern void NET_QueryAddress(char *addr);"}, {"kind": "function", "line": 34, "name": "NET_FindLANServer", "signature": "extern net_addr_t *NET_FindLANServer(void);"}, {"kind": "function", "line": 35, "name": "NET_Query_Poll", "signature": "extern int NET_Query_Poll(net_query_callback_t callback, void *user_data);"}, {"kind": "function", "line": 37, "name": "NET_Query_ResolveMaster", "signature": "extern net_addr_t *NET_Query_ResolveMaster(net_context_t *context);"}, {"kind": "function", "line": 39, "name": "NET_Query_AddToMaster", "signature": "extern void NET_Query_AddToMaster(net_addr_t *master_addr);"}, {"kind": "function", "line": 40, "name": "NET_Query_CheckAddedToMaster", "signature": "extern boolean NET_Query_CheckAddedToMaster(boolean *result);"}, {"kind": "function", "line": 41, "name": "NET_Query_MasterResponse", "signature": "extern void NET_Query_MasterResponse(net_packet_t *packet);"}, {"kind": "macro", "line": 19, "name": "NET_QUERY_H", "signature": "#define NET_QUERY_H"}]}, {"doc": "Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Networking module which uses SDL_net ifndef NET_SDL_H define NET_SDL_H include \"net_defs.h\"", "id": "progs/doomgeneric/net_sdl.h", "kind": "module", "label": "net_sdl.h", "language": "h", "sha256": "cae5341287947698", "symbol_count": 2, "symbols": [{"doc": "include \"net_defs.h\"", "kind": "variable", "line": 22, "name": "net_sdl_module", "signature": "extern net_module_t net_sdl_module;"}, {"kind": "macro", "line": 19, "name": "NET_SDL_H", "signature": "#define NET_SDL_H"}]}, {"doc": "Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. Network server code ifndef NET_SERVER_H define NET_SERVER_H initialize server and wait for connections", "id": "progs/doomgeneric/net_server.h", "kind": "module", "label": "net_server.h", "language": "h", "sha256": "f424338a44ded5a3", "symbol_count": 6, "symbols": [{"doc": "initialize server and wait for connections", "kind": "function", "line": 21, "name": "NET_SV_Init", "signature": "void NET_SV_Init(void);"}, {"doc": "run server: check for new packets received etc.", "kind": "function", "line": 25, "name": "NET_SV_Run", "signature": "void NET_SV_Run(void);"}, {"doc": "Shut down the server Blocks until all clients disconnect, or until a 5 second timeout", "kind": "function", "line": 30, "name": "NET_SV_Shutdown", "signature": "void NET_SV_Shutdown(void);"}, {"doc": "Add a network module to the context used by the server", "kind": "function", "line": 34, "name": "NET_SV_AddModule", "signature": "void NET_SV_AddModule(net_module_t *module);"}, {"doc": "Register server with master server.", "kind": "function", "line": 38, "name": "NET_SV_RegisterWithMaster", "signature": "void NET_SV_RegisterWithMaster(void);"}, {"kind": "macro", "line": 18, "name": "NET_SERVER_H", "signature": "#define NET_SERVER_H"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Ceiling aninmation (lowering, crushing, raising) include \"z_zone.h\" include \"doomdef.h\" include \"p_local.h\" include \"s_sound.h\" State. include \"doomstat.h\" include \"r_state.h\" Data.", "id": "progs/doomgeneric/p_ceilng.c", "kind": "module", "label": "p_ceilng.c", "language": "c", "sha256": "c9f466146bb7cbc0", "symbol_count": 9, "symbols": [{"doc": "T_MoveCeiling", "kind": "function", "line": 44, "name": "T_MoveCeiling", "signature": "void T_MoveCeiling (ceiling_t* ceiling)"}, {"doc": "EV_DoCeiling Move a ceiling up/down and all around!", "kind": "function", "line": 160, "name": "EV_DoCeiling", "signature": "int\nEV_DoCeiling\n( line_t*\tline,\n ceiling_e\ttype )"}, {"doc": "Add an active ceiling", "kind": "function", "line": 240, "name": "P_AddActiveCeiling", "signature": "void P_AddActiveCeiling(ceiling_t* c)"}, {"doc": "Remove a ceiling's thinker", "kind": "function", "line": 259, "name": "P_RemoveActiveCeiling", "signature": "void P_RemoveActiveCeiling(ceiling_t* c)"}, {"doc": "Restart a ceiling that's in-stasis", "kind": "function", "line": 280, "name": "P_ActivateInStasisCeiling", "signature": "void P_ActivateInStasisCeiling(line_t* line)"}, {"doc": "EV_CeilingCrushStop Stop a ceiling from crushing!", "kind": "function", "line": 303, "name": "EV_CeilingCrushStop", "signature": "int\tEV_CeilingCrushStop(line_t\t*line)"}, {"kind": "function", "line": 67, "name": "S_StartSound", "signature": "default: S_StartSound(&ceiling->sector->soundorg, sfx_stnmov);"}, {"kind": "function", "line": 193, "name": "P_AddThinker", "signature": "P_AddThinker (&ceiling->thinker);"}, {"kind": "function", "line": 268, "name": "P_RemoveThinker", "signature": "P_RemoveThinker (&activeceilings[i]->thinker);"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Door animation code (opening/closing) include \"z_zone.h\" include \"doomdef.h\" include \"deh_main.h\" include \"p_local.h\" include \"s_sound.h\" State. include \"doomstat.h\" include \"r_state.h\"", "id": "progs/doomgeneric/p_doors.c", "kind": "module", "label": "p_doors.c", "language": "c", "sha256": "5dd8717e039281ac", "symbol_count": 14, "symbols": [{"doc": "T_VerticalDoor", "kind": "function", "line": 57, "name": "T_VerticalDoor", "signature": "void T_VerticalDoor (vldoor_t* door)"}, {"doc": "EV_DoLockedDoor Move a locked door up/down", "kind": "function", "line": 193, "name": "EV_DoLockedDoor", "signature": "int\nEV_DoLockedDoor\n( line_t*\tline,\n vldoor_e\ttype,\n mobj_t*\tthing )"}, {"kind": "function", "line": 249, "name": "EV_DoDoor", "signature": "int\nEV_DoDoor\n( line_t*\tline,\n vldoor_e\ttype )"}, {"doc": "EV_VerticalDoor : open a door manually, no tag value", "kind": "function", "line": 336, "name": "EV_VerticalDoor", "signature": "void\nEV_VerticalDoor\n( line_t*\tline,\n mobj_t*\tthing )"}, {"doc": "Spawn a door that closes after 30 seconds", "kind": "function", "line": 519, "name": "P_SpawnDoorCloseIn30", "signature": "void P_SpawnDoorCloseIn30 (sector_t* sec)"}, {"doc": "Spawn a door that opens after 5 minutes", "kind": "function", "line": 541, "name": "P_SpawnDoorRaiseIn5Mins", "signature": "void\nP_SpawnDoorRaiseIn5Mins\n( sector_t*\tsec,\n int\t\tsecnum )"}, {"kind": "function", "line": 579, "name": "P_InitSlidingDoorFrames", "signature": "void P_InitSlidingDoorFrames(void)"}, {"doc": "Return index into \"slideFrames\" array for which door type to use", "kind": "function", "line": 624, "name": "P_FindSlidingDoorType", "signature": "int P_FindSlidingDoorType(line_t*\tline)"}, {"kind": "function", "line": 638, "name": "T_SlidingDoor", "signature": "void T_SlidingDoor (slidedoor_t*\tdoor)"}, {"kind": "function", "line": 723, "name": "EV_SlidingDoor", "signature": "void\nEV_SlidingDoor\n( line_t*\tline,\n mobj_t*\tthing )"}, {"kind": "function", "line": 71, "name": "S_StartSound", "signature": "S_StartSound(&door->sector->soundorg, sfx_bdcls);"}, {"kind": "function", "line": 121, "name": "P_RemoveThinker", "signature": "P_RemoveThinker (&door->thinker);"}, {"kind": "function", "line": 273, "name": "P_AddThinker", "signature": "P_AddThinker (&door->thinker);"}, {"doc": "This isn't a door OR a plat. Now we're in trouble.", "kind": "function", "line": 439, "name": "fprintf", "signature": "fprintf(stderr, \"EV_VerticalDoor: Tried to close \" \"something that wasn't a door.\\n\");"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Enemy thinking, AI. Action Pointer Functions that are associated with states/frames. include include include \"m_random.h\" include \"i_system.h\" include \"doomdef.h\" include \"p_local.h\" include \"s_sound.h\"", "id": "progs/doomgeneric/p_enemy.c", "kind": "module", "label": "p_enemy.c", "language": "c", "sha256": "92bc2c7a5181ae3f", "symbol_count": 83, "symbols": [{"kind": "function", "line": 97, "name": "P_RecursiveSound", "signature": "void\nP_RecursiveSound\n( sector_t*\tsec,\n int\t\tsoundblocks )"}, {"doc": "P_NoiseAlert If a monster yells at a player, it will alert other monsters to the player.", "kind": "function", "line": 151, "name": "P_NoiseAlert", "signature": "void\nP_NoiseAlert\n( mobj_t*\ttarget,\n mobj_t*\temmiter )"}, {"doc": "P_CheckMeleeRange", "kind": "function", "line": 167, "name": "P_CheckMeleeRange", "signature": "boolean P_CheckMeleeRange (mobj_t*\tactor)"}, {"doc": "P_CheckMissileRange", "kind": "function", "line": 190, "name": "P_CheckMissileRange", "signature": "boolean P_CheckMissileRange (mobj_t* actor)"}, {"kind": "function", "line": 259, "name": "P_Move", "signature": "boolean P_Move (mobj_t*\tactor)"}, {"doc": "TryWalk Attempts to move actor on in its current (ob->moveangle) direction. If blocked by either a wall or an actor returns FALSE If move is either clear or blocked only by a door, returns TRUE and sets... If a door is in the way, an OpenDoor call is made to start it opening.", "kind": "function", "line": 337, "name": "P_TryWalk", "signature": "boolean P_TryWalk (mobj_t* actor)"}, {"kind": "function", "line": 347, "name": "P_NewChaseDir", "signature": "void P_NewChaseDir (mobj_t*\tactor)"}, {"doc": "P_LookForPlayers If allaround is false, only look 180 degrees in front. Returns true if a player is targeted.", "kind": "function", "line": 486, "name": "P_LookForPlayers", "signature": "boolean\nP_LookForPlayers\n( mobj_t*\tactor,\n boolean\tallaround )"}, {"doc": "A_KeenDie DOOM II special, map 32. Uses special tag 666.", "kind": "function", "line": 551, "name": "A_KeenDie", "signature": "void A_KeenDie (mobj_t* mo)"}, {"doc": "A_Look Stay in state until a player is sighted.", "kind": "function", "line": 589, "name": "A_Look", "signature": "void A_Look (mobj_t* actor)"}, {"doc": "A_Chase Actor has a melee attack, so it tries to close as fast as possible", "kind": "function", "line": 657, "name": "A_Chase", "signature": "void A_Chase (mobj_t*\tactor)"}, {"doc": "A_FaceTarget", "kind": "function", "line": 767, "name": "A_FaceTarget", "signature": "void A_FaceTarget (mobj_t* actor)"}, {"doc": "A_PosAttack", "kind": "function", "line": 787, "name": "A_PosAttack", "signature": "void A_PosAttack (mobj_t* actor)"}, {"kind": "function", "line": 805, "name": "A_SPosAttack", "signature": "void A_SPosAttack (mobj_t* actor)"}, {"kind": "function", "line": 829, "name": "A_CPosAttack", "signature": "void A_CPosAttack (mobj_t* actor)"}, {"kind": "function", "line": 849, "name": "A_CPosRefire", "signature": "void A_CPosRefire (mobj_t* actor)"}, {"kind": "function", "line": 865, "name": "A_SpidRefire", "signature": "void A_SpidRefire (mobj_t* actor)"}, {"kind": "function", "line": 882, "name": "A_BspiAttack", "signature": "void A_BspiAttack (mobj_t *actor)"}, {"doc": "A_TroopAttack", "kind": "function", "line": 898, "name": "A_TroopAttack", "signature": "void A_TroopAttack (mobj_t* actor)"}, {"kind": "function", "line": 918, "name": "A_SargAttack", "signature": "void A_SargAttack (mobj_t* actor)"}, {"kind": "function", "line": 934, "name": "A_HeadAttack", "signature": "void A_HeadAttack (mobj_t* actor)"}, {"kind": "function", "line": 953, "name": "A_CyberAttack", "signature": "void A_CyberAttack (mobj_t* actor)"}, {"kind": "function", "line": 962, "name": "A_BruisAttack", "signature": "void A_BruisAttack (mobj_t* actor)"}, {"doc": "A_SkelMissile", "kind": "function", "line": 987, "name": "A_SkelMissile", "signature": "void A_SkelMissile (mobj_t* actor)"}, {"kind": "function", "line": 1005, "name": "A_Tracer", "signature": "void A_Tracer (mobj_t* actor)"}, {"kind": "function", "line": 1076, "name": "A_SkelWhoosh", "signature": "void A_SkelWhoosh (mobj_t*\tactor)"}, {"kind": "function", "line": 1085, "name": "A_SkelFist", "signature": "void A_SkelFist (mobj_t*\tactor)"}, {"kind": "function", "line": 1113, "name": "PIT_VileCheck", "signature": "boolean PIT_VileCheck (mobj_t*\tthing)"}, {"doc": "A_VileChase Check for ressurecting a body", "kind": "function", "line": 1152, "name": "A_VileChase", "signature": "void A_VileChase (mobj_t* actor)"}, {"doc": "A_VileStart", "kind": "function", "line": 1218, "name": "A_VileStart", "signature": "void A_VileStart (mobj_t* actor)"}, {"kind": "function", "line": 1229, "name": "A_StartFire", "signature": "void A_StartFire (mobj_t* actor)"}, {"kind": "function", "line": 1235, "name": "A_FireCrackle", "signature": "void A_FireCrackle (mobj_t* actor)"}, {"kind": "function", "line": 1241, "name": "A_Fire", "signature": "void A_Fire (mobj_t* actor)"}, {"doc": "A_VileTarget Spawn the hellfire", "kind": "function", "line": 1273, "name": "A_VileTarget", "signature": "void A_VileTarget (mobj_t*\tactor)"}, {"doc": "A_VileAttack", "kind": "function", "line": 1298, "name": "A_VileAttack", "signature": "void A_VileAttack (mobj_t* actor)"}, {"doc": "Mancubus attack, firing three missiles (bruisers) in three different directions? Doesn't look like it. define\tFATSPREAD\t(ANG90/8)", "kind": "function", "line": 1338, "name": "A_FatRaise", "signature": "void A_FatRaise (mobj_t *actor)"}, {"kind": "function", "line": 1344, "name": "A_FatAttack1", "signature": "void A_FatAttack1 (mobj_t* actor)"}, {"kind": "function", "line": 1365, "name": "A_FatAttack2", "signature": "void A_FatAttack2 (mobj_t* actor)"}, {"kind": "function", "line": 1384, "name": "A_FatAttack3", "signature": "void A_FatAttack3 (mobj_t*\tactor)"}, {"doc": "SkullAttack Fly at the player like a missile. define\tSKULLSPEED\t\t(20*FRACUNIT)", "kind": "function", "line": 1414, "name": "A_SkullAttack", "signature": "void A_SkullAttack (mobj_t* actor)"}, {"doc": "A_PainShootSkull Spawn a lost soul and launch it at the target", "kind": "function", "line": 1445, "name": "A_PainShootSkull", "signature": "void\nA_PainShootSkull\n( mobj_t*\tactor,\n angle_t\tangle )"}, {"doc": "A_PainAttack Spawn a lost soul and launch it at the target", "kind": "function", "line": 1508, "name": "A_PainAttack", "signature": "void A_PainAttack (mobj_t* actor)"}, {"kind": "function", "line": 1516, "name": "A_PainDie", "signature": "void A_PainDie (mobj_t* actor)"}, {"kind": "function", "line": 1525, "name": "A_Scream", "signature": "void A_Scream (mobj_t* actor)"}, {"kind": "function", "line": 1566, "name": "A_XScream", "signature": "void A_XScream (mobj_t* actor)"}, {"kind": "function", "line": 1572, "name": "A_Pain", "signature": "void A_Pain (mobj_t* actor)"}, {"kind": "function", "line": 1578, "name": "A_Fall", "signature": "void A_Fall (mobj_t *actor)"}, {"doc": "A_Explode", "kind": "function", "line": 1594, "name": "A_Explode", "signature": "void A_Explode (mobj_t* thingy)"}, {"doc": "Check whether the death of the specified monster type is allowed to trigger the end of episode special action. This behavior changed in v1.9, the most notable effect of which was to break uac_dead.wad", "kind": "function", "line": 1604, "name": "CheckBossEnd", "signature": "static boolean CheckBossEnd(mobjtype_t motype)"}, {"doc": "A_BossDeath Possibly trigger special effects if on first boss level", "kind": "function", "line": 1656, "name": "A_BossDeath", "signature": "void A_BossDeath (mobj_t* mo)"}, {"kind": "function", "line": 1755, "name": "A_Hoof", "signature": "void A_Hoof (mobj_t* mo)"}, {"kind": "function", "line": 1762, "name": "A_Metal", "signature": "void A_Metal (mobj_t* mo)"}, {"kind": "function", "line": 1768, "name": "A_BabyMetal", "signature": "void A_BabyMetal (mobj_t* mo)"}, {"kind": "function", "line": 1774, "name": "A_OpenShotgun2", "signature": "void\nA_OpenShotgun2\n( player_t*\tplayer,\n pspdef_t*\tpsp )"}, {"kind": "function", "line": 1782, "name": "A_LoadShotgun2", "signature": "void\nA_LoadShotgun2\n( player_t*\tplayer,\n pspdef_t*\tpsp )"}, {"kind": "function", "line": 1795, "name": "A_CloseShotgun2", "signature": "void\nA_CloseShotgun2\n( player_t*\tplayer,\n pspdef_t*\tpsp )"}, {"kind": "function", "line": 1810, "name": "A_BrainAwake", "signature": "void A_BrainAwake (mobj_t* mo)"}, {"kind": "function", "line": 1839, "name": "A_BrainPain", "signature": "void A_BrainPain (mobj_t*\tmo)"}, {"kind": "function", "line": 1845, "name": "A_BrainScream", "signature": "void A_BrainScream (mobj_t*\tmo)"}, {"kind": "function", "line": 1870, "name": "A_BrainExplode", "signature": "void A_BrainExplode (mobj_t* mo)"}, {"kind": "function", "line": 1892, "name": "A_BrainDie", "signature": "void A_BrainDie (mobj_t*\tmo)"}, {"kind": "function", "line": 1898, "name": "A_BrainSpit", "signature": "void A_BrainSpit (mobj_t*\tmo)"}, {"doc": "travelling cube sound", "kind": "function", "line": 1928, "name": "A_SpawnSound", "signature": "void A_SpawnSound (mobj_t* mo)"}, {"kind": "function", "line": 1933, "name": "A_SpawnFly", "signature": "void A_SpawnFly (mobj_t* mo)"}, {"kind": "function", "line": 1989, "name": "A_PlayerScream", "signature": "void A_PlayerScream (mobj_t* mo)"}, {"kind": "function", "line": 123, "name": "P_LineOpening", "signature": "P_LineOpening (check);"}, {"kind": "function", "line": 577, "name": "EV_DoDoor", "signature": "EV_DoDoor(&junk, vld_open);"}, {"doc": "full volume", "kind": "function", "line": 642, "name": "S_StartSound", "signature": "S_StartSound (NULL, sound);"}, {"kind": "function", "line": 647, "name": "P_SetMobjState", "signature": "P_SetMobjState (actor, actor->info->seestate);"}, {"kind": "function", "line": 803, "name": "P_LineAttack", "signature": "P_LineAttack (actor, angle, MISSILERANGE, slope, damage);"}, {"doc": "launch a missile", "kind": "function", "line": 891, "name": "P_SpawnMissile", "signature": "P_SpawnMissile (actor, actor->target, MT_ARACHPLAZ);"}, {"kind": "function", "line": 910, "name": "P_DamageMobj", "signature": "P_DamageMobj (actor->target, actor, actor, damage);"}, {"doc": "spawn a puff of smoke behind the rocket", "kind": "function", "line": 1018, "name": "P_SpawnPuff", "signature": "P_SpawnPuff (actor->x, actor->y, actor->z);"}, {"kind": "function", "line": 1259, "name": "P_UnsetThingPosition", "signature": "P_UnsetThingPosition (actor);"}, {"kind": "function", "line": 1264, "name": "P_SetThingPosition", "signature": "P_SetThingPosition (actor);"}, {"kind": "function", "line": 1325, "name": "P_RadiusAttack", "signature": "P_RadiusAttack (fire, actor, 70 );"}, {"kind": "function", "line": 1713, "name": "EV_DoFloor", "signature": "EV_DoFloor(&junk,lowerFloorToLowest);"}, {"kind": "function", "line": 1752, "name": "G_ExitLevel", "signature": "G_ExitLevel ();"}, {"kind": "function", "line": 1790, "name": "A_ReFire", "signature": "void A_ReFire ( player_t* player, pspdef_t* psp );"}, {"doc": "telefrag anything in this spot", "kind": "function", "line": 1984, "name": "P_TeleportMove", "signature": "P_TeleportMove (newmobj, newmobj->x, newmobj->y);"}, {"doc": "remove self (i.e., cube).", "kind": "function", "line": 1987, "name": "P_RemoveMobj", "signature": "P_RemoveMobj (mo);"}, {"kind": "macro", "line": 1337, "name": "FATSPREAD", "signature": "#define\tFATSPREAD"}, {"kind": "macro", "line": 1413, "name": "SKULLSPEED", "signature": "#define\tSKULLSPEED"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Floor animation: raising stairs. include \"z_zone.h\" include \"doomdef.h\" include \"p_local.h\" include \"s_sound.h\" State. include \"doomstat.h\" include \"r_state.h\" Data.", "id": "progs/doomgeneric/p_floor.c", "kind": "module", "label": "p_floor.c", "language": "c", "sha256": "d7909311e5d9880e", "symbol_count": 12, "symbols": [{"doc": "Move a plane (floor or ceiling) and check for crushing", "kind": "function", "line": 41, "name": "T_MovePlane", "signature": "result_e\nT_MovePlane\n( sector_t*\tsector,\n fixed_t\tspeed,\n fixed_t\tdest,\n boolean\tcrush,\n int\t..."}, {"doc": "MOVE A FLOOR TO IT'S DESTINATION (UP OR DOWN)", "kind": "function", "line": 202, "name": "T_MoveFloor", "signature": "void T_MoveFloor(floormove_t* floor)"}, {"doc": "HANDLE FLOOR TYPES", "kind": "function", "line": 250, "name": "EV_DoFloor", "signature": "int\nEV_DoFloor\n( line_t*\tline,\n floor_e\tfloortype )"}, {"doc": "BUILD A STAIRCASE!", "kind": "function", "line": 443, "name": "EV_BuildStairs", "signature": "int\nEV_BuildStairs\n( line_t*\tline,\n stair_e\ttype )"}, {"kind": "function", "line": 69, "name": "P_ChangeSector", "signature": "P_ChangeSector(sector,crush);"}, {"kind": "function", "line": 240, "name": "P_RemoveThinker", "signature": "P_RemoveThinker(&floor->thinker);"}, {"kind": "function", "line": 241, "name": "S_StartSound", "signature": "S_StartSound(&floor->sector->soundorg, sfx_pstop);"}, {"kind": "function", "line": 274, "name": "P_AddThinker", "signature": "P_AddThinker (&floor->thinker);"}, {"kind": "function", "line": 287, "name": "P_FindHighestFloorSurrounding", "signature": "P_FindHighestFloorSurrounding(sec);"}, {"kind": "function", "line": 295, "name": "P_FindLowestFloorSurrounding", "signature": "P_FindLowestFloorSurrounding(sec);"}, {"kind": "function", "line": 315, "name": "P_FindLowestCeilingSurrounding", "signature": "P_FindLowestCeilingSurrounding(sec);"}, {"kind": "function", "line": 327, "name": "P_FindNextHighestFloor", "signature": "P_FindNextHighestFloor(sec,sec->floorheight);"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Handling interactions (i.e., collisions). Data. include \"doomdef.h\" include \"dstrings.h\" include \"sounds.h\" include \"deh_main.h\" include \"deh_misc.h\" include \"doomstat.h\"", "id": "progs/doomgeneric/p_inter.c", "kind": "module", "label": "p_inter.c", "language": "c", "sha256": "fd8ce5ae336daeeb", "symbol_count": 15, "symbols": [{"doc": "P_GiveAmmo Num is the number of clip loads, not the individual count (0= 1/2 clip). Returns false if the ammo can't be picked up at all", "kind": "function", "line": 64, "name": "P_GiveAmmo", "signature": "boolean\nP_GiveAmmo\n( player_t*\tplayer,\n ammotype_t\tammo,\n int\t\tnum )"}, {"doc": "P_GiveWeapon The weapon name may have a MF_DROPPED flag ored in.", "kind": "function", "line": 159, "name": "P_GiveWeapon", "signature": "boolean\nP_GiveWeapon\n( player_t*\tplayer,\n weapontype_t\tweapon,\n boolean\tdropped )"}, {"doc": "P_GiveBody Returns false if the body isn't needed at all", "kind": "function", "line": 222, "name": "P_GiveBody", "signature": "boolean\nP_GiveBody\n( player_t*\tplayer,\n int\t\tnum )"}, {"doc": "P_GiveArmor Returns false if the armor is worse than the current armor.", "kind": "function", "line": 245, "name": "P_GiveArmor", "signature": "boolean\nP_GiveArmor\n( player_t*\tplayer,\n int\t\tarmortype )"}, {"doc": "P_GiveCard", "kind": "function", "line": 267, "name": "P_GiveCard", "signature": "void\nP_GiveCard\n( player_t*\tplayer,\n card_t\tcard )"}, {"doc": "P_GivePower", "kind": "function", "line": 283, "name": "P_GivePower", "signature": "boolean\nP_GivePower\n( player_t*\tplayer,\n int /*powertype_t*/\tpower )"}, {"doc": "P_TouchSpecialThing", "kind": "function", "line": 332, "name": "P_TouchSpecialThing", "signature": "void\nP_TouchSpecialThing\n( mobj_t*\tspecial,\n mobj_t*\ttoucher )"}, {"doc": "KillMobj", "kind": "function", "line": 665, "name": "P_KillMobj", "signature": "void\nP_KillMobj\n( mobj_t*\tsource,\n mobj_t*\ttarget )"}, {"doc": "P_DamageMobj Damages both enemies and players \"inflictor\" is the thing that caused the damage creature or missile, can be NULL (slime, etc) \"source\" is the thing to target after taking damage creature or NULL Source and inflictor are the same for melee attacks. Source can be NULL for slime, barrel explosions and other environmental stuff.", "kind": "function", "line": 778, "name": "P_DamageMobj", "signature": "void\nP_DamageMobj\n( mobj_t*\ttarget,\n mobj_t*\tinflictor,\n mobj_t*\tsource,\n int \t\tdamage )"}, {"kind": "function", "line": 648, "name": "I_Error", "signature": "default: I_Error (\"P_SpecialThing: Unknown gettable thing\");"}, {"kind": "function", "line": 655, "name": "P_RemoveMobj", "signature": "P_RemoveMobj (special);"}, {"kind": "function", "line": 705, "name": "P_DropWeapon", "signature": "P_DropWeapon (target->player);"}, {"doc": "don't die in auto map, switch view prior to dying", "kind": "function", "line": 712, "name": "AM_Stop", "signature": "AM_Stop ();"}, {"kind": "function", "line": 720, "name": "P_SetMobjState", "signature": "P_SetMobjState (target, target->info->xdeathstate);"}, {"kind": "macro", "line": 41, "name": "BONUSADD", "signature": "#define BONUSADD"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: ifndef __P_INTER__ define __P_INTER__", "id": "progs/doomgeneric/p_inter.h", "kind": "module", "label": "p_inter.h", "language": "h", "sha256": "3b3ed714d4047262", "symbol_count": 2, "symbols": [{"doc": "ifndef __P_INTER__ define __P_INTER__", "kind": "function", "line": 22, "name": "P_GivePower", "signature": "boolean P_GivePower(player_t*, int);"}, {"kind": "macro", "line": 21, "name": "__P_INTER__", "signature": "#define __P_INTER__"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Handle Sector base lighting effects. Muzzle flash? include \"z_zone.h\" include \"m_random.h\" include \"doomdef.h\" include \"p_local.h\" State. include \"r_state.h\"", "id": "progs/doomgeneric/p_lights.c", "kind": "module", "label": "p_lights.c", "language": "c", "sha256": "4cbd8912b06c2bde", "symbol_count": 12, "symbols": [{"doc": "T_FireFlicker", "kind": "function", "line": 39, "name": "T_FireFlicker", "signature": "void T_FireFlicker (fireflicker_t* flick)"}, {"doc": "P_SpawnFireFlicker", "kind": "function", "line": 61, "name": "P_SpawnFireFlicker", "signature": "void P_SpawnFireFlicker (sector_t*\tsector)"}, {"doc": "T_LightFlash Do flashing lights.", "kind": "function", "line": 91, "name": "T_LightFlash", "signature": "void T_LightFlash (lightflash_t* flash)"}, {"doc": "P_SpawnLightFlash After the map has been loaded, scan each sector for specials that spawn thinkers", "kind": "function", "line": 117, "name": "P_SpawnLightFlash", "signature": "void P_SpawnLightFlash (sector_t*\tsector)"}, {"doc": "T_StrobeFlash", "kind": "function", "line": 148, "name": "T_StrobeFlash", "signature": "void T_StrobeFlash (strobe_t*\t\tflash)"}, {"doc": "P_SpawnStrobeFlash After the map has been loaded, scan each sector for specials that spawn thinkers", "kind": "function", "line": 173, "name": "P_SpawnStrobeFlash", "signature": "void\nP_SpawnStrobeFlash\n( sector_t*\tsector,\n int\t\tfastOrSlow,\n int\t\tinSync )"}, {"doc": "Start strobing lights (usually from a trigger)", "kind": "function", "line": 208, "name": "EV_StartLightStrobing", "signature": "void EV_StartLightStrobing(line_t*\tline)"}, {"doc": "TURN LINE'S TAG LIGHTS OFF", "kind": "function", "line": 229, "name": "EV_TurnTagLightsOff", "signature": "void EV_TurnTagLightsOff(line_t* line)"}, {"doc": "TURN LINE'S TAG LIGHTS ON", "kind": "function", "line": 263, "name": "EV_LightTurnOn", "signature": "void\nEV_LightTurnOn\n( line_t*\tline,\n int\t\tbright )"}, {"doc": "Spawn glowing light", "kind": "function", "line": 306, "name": "T_Glow", "signature": "void T_Glow(glow_t*\tg)"}, {"kind": "function", "line": 332, "name": "P_SpawnGlowingLight", "signature": "void P_SpawnGlowingLight(sector_t*\tsector)"}, {"kind": "function", "line": 70, "name": "P_AddThinker", "signature": "P_AddThinker (&flick->thinker);"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Play functions, animation, global header. ifndef __P_LOCAL__ define __P_LOCAL__ ifndef __R_LOCAL__ include \"r_local.h\" endif define FLOATSPEED\t\t(FRACUNIT*4) define MAXHEALTH\t\t100", "id": "progs/doomgeneric/p_local.h", "kind": "module", "label": "p_local.h", "language": "h", "sha256": "7b56c7e32e92f7f0", "symbol_count": 101, "symbols": [{"doc": "P_MAPUTL", "kind": "struct", "line": 133, "name": "divline_t"}, {"kind": "struct", "line": 142, "name": "d"}, {"kind": "function", "line": 68, "name": "P_InitThinkers", "signature": "void P_InitThinkers (void);"}, {"kind": "function", "line": 71, "name": "P_AddThinker", "signature": "void P_AddThinker (thinker_t* thinker);"}, {"kind": "function", "line": 72, "name": "P_RemoveThinker", "signature": "void P_RemoveThinker (thinker_t* thinker);"}, {"doc": "P_PSPR", "kind": "function", "line": 78, "name": "P_SetupPsprites", "signature": "void P_SetupPsprites (player_t* curplayer);"}, {"kind": "function", "line": 79, "name": "P_MovePsprites", "signature": "void P_MovePsprites (player_t* curplayer);"}, {"kind": "function", "line": 80, "name": "P_DropWeapon", "signature": "void P_DropWeapon (player_t* player);"}, {"doc": "P_USER", "kind": "function", "line": 86, "name": "P_PlayerThink", "signature": "void P_PlayerThink (player_t* player);"}, {"kind": "function", "line": 102, "name": "P_RespawnSpecials", "signature": "void P_RespawnSpecials (void);"}, {"kind": "function", "line": 105, "name": "P_SpawnMobj", "signature": "mobj_t* P_SpawnMobj ( fixed_t x, fixed_t y, fixed_t z, mobjtype_t type );"}, {"kind": "function", "line": 112, "name": "P_RemoveMobj", "signature": "void P_RemoveMobj (mobj_t* th);"}, {"kind": "function", "line": 114, "name": "P_SubstNullMobj", "signature": "mobj_t* P_SubstNullMobj (mobj_t* th);"}, {"kind": "function", "line": 115, "name": "P_SetMobjState", "signature": "boolean P_SetMobjState (mobj_t* mobj, statenum_t state);"}, {"kind": "function", "line": 116, "name": "P_MobjThinker", "signature": "void P_MobjThinker (mobj_t* mobj);"}, {"kind": "function", "line": 117, "name": "P_SpawnPuff", "signature": "void P_SpawnPuff (fixed_t x, fixed_t y, fixed_t z);"}, {"kind": "function", "line": 119, "name": "P_SpawnBlood", "signature": "void P_SpawnBlood (fixed_t x, fixed_t y, fixed_t z, int damage);"}, {"kind": "function", "line": 120, "name": "P_SpawnMissile", "signature": "mobj_t* P_SpawnMissile (mobj_t* source, mobj_t* dest, mobjtype_t type);"}, {"kind": "function", "line": 121, "name": "P_SpawnPlayerMissile", "signature": "void P_SpawnPlayerMissile (mobj_t* source, mobjtype_t type);"}, {"doc": "P_ENEMY", "kind": "function", "line": 127, "name": "P_NoiseAlert", "signature": "void P_NoiseAlert (mobj_t* target, mobj_t* emmiter);"}, {"kind": "function", "line": 159, "name": "boolean", "signature": "typedef boolean (*traverser_t) (intercept_t *in);"}, {"kind": "function", "line": 161, "name": "P_AproxDistance", "signature": "fixed_t P_AproxDistance (fixed_t dx, fixed_t dy);"}, {"kind": "function", "line": 163, "name": "P_PointOnLineSide", "signature": "int P_PointOnLineSide (fixed_t x, fixed_t y, line_t* line);"}, {"kind": "function", "line": 164, "name": "P_PointOnDivlineSide", "signature": "int P_PointOnDivlineSide (fixed_t x, fixed_t y, divline_t* line);"}, {"kind": "function", "line": 165, "name": "P_MakeDivline", "signature": "void P_MakeDivline (line_t* li, divline_t* dl);"}, {"kind": "function", "line": 166, "name": "P_InterceptVector", "signature": "fixed_t P_InterceptVector (divline_t* v2, divline_t* v1);"}, {"kind": "function", "line": 167, "name": "P_BoxOnLineSide", "signature": "int P_BoxOnLineSide (fixed_t* tmbox, line_t* ld);"}, {"kind": "function", "line": 173, "name": "P_LineOpening", "signature": "void P_LineOpening (line_t* linedef);"}, {"kind": "function", "line": 175, "name": "P_BlockLinesIterator", "signature": "boolean P_BlockLinesIterator (int x, int y, boolean(*func)(line_t*) );"}, {"kind": "function", "line": 177, "name": "P_BlockThingsIterator", "signature": "boolean P_BlockThingsIterator (int x, int y, boolean(*func)(mobj_t*) );"}, {"kind": "function", "line": 184, "name": "P_PathTraverse", "signature": "boolean P_PathTraverse ( fixed_t x1, fixed_t y1, fixed_t x2, fixed_t y2, int flags, boolean (*trav) (intercept_t *));"}, {"kind": "function", "line": 193, "name": "P_UnsetThingPosition", "signature": "void P_UnsetThingPosition (mobj_t* thing);"}, {"kind": "function", "line": 195, "name": "P_SetThingPosition", "signature": "void P_SetThingPosition (mobj_t* thing);"}, {"kind": "function", "line": 224, "name": "P_CheckPosition", "signature": "boolean P_CheckPosition (mobj_t *thing, fixed_t x, fixed_t y);"}, {"kind": "function", "line": 226, "name": "P_TryMove", "signature": "boolean P_TryMove (mobj_t* thing, fixed_t x, fixed_t y);"}, {"kind": "function", "line": 227, "name": "P_TeleportMove", "signature": "boolean P_TeleportMove (mobj_t* thing, fixed_t x, fixed_t y);"}, {"kind": "function", "line": 228, "name": "P_SlideMove", "signature": "void P_SlideMove (mobj_t* mo);"}, {"kind": "function", "line": 229, "name": "P_CheckSight", "signature": "boolean P_CheckSight (mobj_t* t1, mobj_t* t2);"}, {"kind": "function", "line": 230, "name": "P_UseLines", "signature": "void P_UseLines (player_t* player);"}, {"kind": "function", "line": 231, "name": "P_ChangeSector", "signature": "boolean P_ChangeSector (sector_t* sector, boolean crunch);"}, {"kind": "function", "line": 235, "name": "P_AimLineAttack", "signature": "fixed_t P_AimLineAttack ( mobj_t* t1, angle_t angle, fixed_t distance );"}, {"kind": "function", "line": 241, "name": "P_LineAttack", "signature": "void P_LineAttack ( mobj_t* t1, angle_t angle, fixed_t distance, fixed_t slope, int damage );"}, {"kind": "function", "line": 249, "name": "P_RadiusAttack", "signature": "void P_RadiusAttack ( mobj_t* spot, mobj_t* source, int damage );"}, {"kind": "function", "line": 277, "name": "P_TouchSpecialThing", "signature": "void P_TouchSpecialThing ( mobj_t* special, mobj_t* toucher );"}, {"kind": "function", "line": 282, "name": "P_DamageMobj", "signature": "void P_DamageMobj ( mobj_t* target, mobj_t* inflictor, mobj_t* source, int damage );"}, {"doc": "both the head and tail of the thinker list", "kind": "variable", "line": 67, "name": "thinkercap", "signature": "extern thinker_t thinkercap;"}, {"doc": "Time interval for item respawning. define ITEMQUESIZE\t\t128", "kind": "variable", "line": 97, "name": "itemrespawnque", "signature": "extern mapthing_t itemrespawnque[ITEMQUESIZE];"}, {"kind": "variable", "line": 99, "name": "itemrespawntime", "signature": "extern int itemrespawntime[ITEMQUESIZE];"}, {"kind": "variable", "line": 100, "name": "iquehead", "signature": "extern int iquehead;"}, {"kind": "variable", "line": 101, "name": "iquetail", "signature": "extern int iquetail;"}, {"doc": "define MAXINTERCEPTS_ORIGINAL 128 define MAXINTERCEPTS (MAXINTERCEPTS_ORIGINAL + 61)", "kind": "variable", "line": 156, "name": "intercepts", "signature": "extern intercept_t intercepts[MAXINTERCEPTS];"}, {"kind": "variable", "line": 158, "name": "intercept_p", "signature": "extern intercept_t* intercept_p;"}, {"kind": "variable", "line": 168, "name": "opentop", "signature": "extern fixed_t opentop;"}, {"kind": "variable", "line": 170, "name": "openbottom", "signature": "extern fixed_t openbottom;"}, {"kind": "variable", "line": 171, "name": "openrange", "signature": "extern fixed_t openrange;"}, {"kind": "variable", "line": 172, "name": "lowfloor", "signature": "extern fixed_t lowfloor;"}, {"doc": "define PT_ADDLINES\t\t1 define PT_ADDTHINGS\t2 define PT_EARLYOUT\t\t4", "kind": "variable", "line": 182, "name": "trace", "signature": "extern divline_t trace;"}, {"doc": "If \"floatok\" true, move would be ok if within \"tmfloorz - tmceilingz\".", "kind": "variable", "line": 204, "name": "floatok", "signature": "extern boolean floatok;"}, {"kind": "variable", "line": 205, "name": "tmfloorz", "signature": "extern fixed_t tmfloorz;"}, {"kind": "variable", "line": 206, "name": "tmceilingz", "signature": "extern fixed_t tmceilingz;"}, {"kind": "variable", "line": 207, "name": "ceilingline", "signature": "extern line_t* ceilingline;"}, {"doc": "define MAXSPECIALCROSS \t\t20 define MAXSPECIALCROSS_ORIGINAL\t8", "kind": "variable", "line": 221, "name": "spechit", "signature": "extern line_t* spechit[MAXSPECIALCROSS];"}, {"kind": "variable", "line": 223, "name": "numspechit", "signature": "extern int numspechit;"}, {"kind": "variable", "line": 233, "name": "linetarget", "signature": "extern mobj_t* linetarget;"}, {"doc": "P_SETUP", "kind": "variable", "line": 261, "name": "rejectmatrix", "signature": "extern byte* rejectmatrix;"}, {"kind": "variable", "line": 262, "name": "blockmaplump", "signature": "extern short* blockmaplump;"}, {"kind": "variable", "line": 263, "name": "blockmap", "signature": "extern short* blockmap;"}, {"kind": "variable", "line": 264, "name": "bmapwidth", "signature": "extern int bmapwidth;"}, {"kind": "variable", "line": 265, "name": "bmapheight", "signature": "extern int bmapheight;"}, {"kind": "variable", "line": 266, "name": "bmaporgx", "signature": "extern fixed_t bmaporgx;"}, {"kind": "variable", "line": 267, "name": "bmaporgy", "signature": "extern fixed_t bmaporgy;"}, {"kind": "variable", "line": 268, "name": "blocklinks", "signature": "extern mobj_t** blocklinks;"}, {"doc": "P_INTER", "kind": "variable", "line": 275, "name": "maxammo", "signature": "extern int maxammo[NUMAMMO];"}, {"kind": "variable", "line": 276, "name": "clipammo", "signature": "extern int clipammo[NUMAMMO];"}, {"kind": "macro", "line": 21, "name": "__P_LOCAL__", "signature": "#define __P_LOCAL__"}, {"kind": "macro", "line": 26, "name": "FLOATSPEED", "signature": "#define FLOATSPEED"}, {"kind": "macro", "line": 28, "name": "MAXHEALTH", "signature": "#define MAXHEALTH"}, {"kind": "macro", "line": 31, "name": "VIEWHEIGHT", "signature": "#define VIEWHEIGHT"}, {"kind": "macro", "line": 35, "name": "MAPBLOCKUNITS", "signature": "#define MAPBLOCKUNITS"}, {"kind": "macro", "line": 36, "name": "MAPBLOCKSIZE", "signature": "#define MAPBLOCKSIZE"}, {"kind": "macro", "line": 37, "name": "MAPBLOCKSHIFT", "signature": "#define MAPBLOCKSHIFT"}, {"kind": "macro", "line": 38, "name": "MAPBMASK", "signature": "#define MAPBMASK"}, {"kind": "macro", "line": 39, "name": "MAPBTOFRAC", "signature": "#define MAPBTOFRAC"}, {"kind": "macro", "line": 43, "name": "PLAYERRADIUS", "signature": "#define PLAYERRADIUS"}, {"kind": "macro", "line": 48, "name": "MAXRADIUS", "signature": "#define MAXRADIUS"}, {"kind": "macro", "line": 49, "name": "GRAVITY", "signature": "#define GRAVITY"}, {"kind": "macro", "line": 51, "name": "MAXMOVE", "signature": "#define MAXMOVE"}, {"kind": "macro", "line": 52, "name": "USERANGE", "signature": "#define USERANGE"}, {"kind": "macro", "line": 54, "name": "MELEERANGE", "signature": "#define MELEERANGE"}, {"kind": "macro", "line": 55, "name": "MISSILERANGE", "signature": "#define MISSILERANGE"}, {"kind": "macro", "line": 58, "name": "BASETHRESHOLD", "signature": "#define\tBASETHRESHOLD"}, {"kind": "macro", "line": 92, "name": "ONFLOORZ", "signature": "#define ONFLOORZ"}, {"kind": "macro", "line": 93, "name": "ONCEILINGZ", "signature": "#define ONCEILINGZ"}, {"kind": "macro", "line": 96, "name": "ITEMQUESIZE", "signature": "#define ITEMQUESIZE"}, {"kind": "macro", "line": 153, "name": "MAXINTERCEPTS_ORIGINAL", "signature": "#define MAXINTERCEPTS_ORIGINAL"}, {"kind": "macro", "line": 155, "name": "MAXINTERCEPTS", "signature": "#define MAXINTERCEPTS"}, {"kind": "macro", "line": 178, "name": "PT_ADDLINES", "signature": "#define PT_ADDLINES"}, {"kind": "macro", "line": 180, "name": "PT_ADDTHINGS", "signature": "#define PT_ADDTHINGS"}, {"kind": "macro", "line": 181, "name": "PT_EARLYOUT", "signature": "#define PT_EARLYOUT"}, {"kind": "macro", "line": 218, "name": "MAXSPECIALCROSS", "signature": "#define MAXSPECIALCROSS"}, {"kind": "macro", "line": 220, "name": "MAXSPECIALCROSS_ORIGINAL", "signature": "#define MAXSPECIALCROSS_ORIGINAL"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard, Andrey Budko This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Movement, collision handling. Shooting and aiming. include include include \"deh_misc.h\" include \"m_bbox.h\" include \"m_random.h\" include \"i_system.h\" include \"doomdef.h\" include \"m_argv.h\"", "id": "progs/doomgeneric/p_map.c", "kind": "module", "label": "p_map.c", "language": "c", "sha256": "90a959950d894d77", "symbol_count": 39, "symbols": [{"doc": "PIT_StompThing", "kind": "function", "line": 97, "name": "PIT_StompThing", "signature": "boolean PIT_StompThing (mobj_t* thing)"}, {"doc": "P_TeleportMove", "kind": "function", "line": 130, "name": "P_TeleportMove", "signature": "boolean\nP_TeleportMove\n( mobj_t*\tthing,\n fixed_t\tx,\n fixed_t\ty )"}, {"doc": "PIT_CheckLine Adjusts tmfloorz and tmceilingz as lines are contacted", "kind": "function", "line": 206, "name": "PIT_CheckLine", "signature": "boolean PIT_CheckLine (line_t* ld)"}, {"doc": "PIT_CheckThing", "kind": "function", "line": 275, "name": "PIT_CheckThing", "signature": "boolean PIT_CheckThing (mobj_t* thing)"}, {"doc": "during: special things are touched if MF_PICKUP early out on solid lines? out: newsubsec floorz ceilingz tmdropoffz the lowest point contacted (monsters won't move to a dropoff) speciallines[] numspeciallines", "kind": "function", "line": 401, "name": "P_CheckPosition", "signature": "boolean\nP_CheckPosition\n( mobj_t*\tthing,\n fixed_t\tx,\n fixed_t\ty )"}, {"doc": "P_TryMove Attempt to move to a new position, crossing special lines unless MF_TELEPORT is set.", "kind": "function", "line": 477, "name": "P_TryMove", "signature": "boolean\nP_TryMove\n( mobj_t*\tthing,\n fixed_t\tx,\n fixed_t\ty )"}, {"doc": "P_ThingHeightClip Takes a valid thing and adjusts the thing->floorz, thing->ceilingz, and possibly thing->z. This is called for all nearby monsters whenever a sector changes height. If the thing doesn't fit, the z will be set to the lowest value and false will be returned.", "kind": "function", "line": 557, "name": "P_ThingHeightClip", "signature": "boolean P_ThingHeightClip (mobj_t* thing)"}, {"doc": "P_HitSlideLine Adjusts the xmove / ymove so that the next move will slide along the wall.", "kind": "function", "line": 611, "name": "P_HitSlideLine", "signature": "void P_HitSlideLine (line_t* ld)"}, {"doc": "PTR_SlideTraverse", "kind": "function", "line": 663, "name": "PTR_SlideTraverse", "signature": "boolean PTR_SlideTraverse (intercept_t* in)"}, {"doc": "P_SlideMove The momx / momy move is bad, so try to slide along a wall. Find the first line hit, move flush to it, and slide along it This is a kludgy mess.", "kind": "function", "line": 722, "name": "P_SlideMove", "signature": "void P_SlideMove (mobj_t* mo)"}, {"doc": "PTR_AimTraverse Sets linetaget and aimslope when a target is aimed at.", "kind": "function", "line": 842, "name": "PTR_AimTraverse", "signature": "boolean\nPTR_AimTraverse (intercept_t* in)"}, {"doc": "PTR_ShootTraverse", "kind": "function", "line": 928, "name": "PTR_ShootTraverse", "signature": "boolean PTR_ShootTraverse (intercept_t* in)"}, {"doc": "P_AimLineAttack", "kind": "function", "line": 1067, "name": "P_AimLineAttack", "signature": "fixed_t\nP_AimLineAttack\n( mobj_t*\tt1,\n angle_t\tangle,\n fixed_t\tdistance )"}, {"doc": "P_LineAttack If damage == 0, it is just a test trace that will leave linetarget set.", "kind": "function", "line": 1109, "name": "P_LineAttack", "signature": "void\nP_LineAttack\n( mobj_t*\tt1,\n angle_t\tangle,\n fixed_t\tdistance,\n fixed_t\tslope,\n int\t\tdama..."}, {"kind": "function", "line": 1141, "name": "PTR_UseTraverse", "signature": "boolean\tPTR_UseTraverse (intercept_t* in)"}, {"doc": "P_UseLines Looks for special lines in front of the player to activate.", "kind": "function", "line": 1177, "name": "P_UseLines", "signature": "void P_UseLines (player_t*\tplayer)"}, {"doc": "PIT_RadiusAttack \"bombsource\" is the creature that caused the explosion at \"bombspot\".", "kind": "function", "line": 1211, "name": "PIT_RadiusAttack", "signature": "boolean PIT_RadiusAttack (mobj_t* thing)"}, {"doc": "P_RadiusAttack Source is the creature that caused the explosion at spot.", "kind": "function", "line": 1252, "name": "P_RadiusAttack", "signature": "void\nP_RadiusAttack\n( mobj_t*\tspot,\n mobj_t*\tsource,\n int\t\tdamage )"}, {"doc": "PIT_ChangeSector", "kind": "function", "line": 1304, "name": "PIT_ChangeSector", "signature": "boolean PIT_ChangeSector (mobj_t*\tthing)"}, {"doc": "P_ChangeSector", "kind": "function", "line": 1367, "name": "P_ChangeSector", "signature": "boolean\nP_ChangeSector\n( sector_t*\tsector,\n boolean\tcrunch )"}, {"doc": "Code to emulate the behavior of Vanilla Doom when encountering an overrun of the spechit array. This is by Andrey Budko (e6y) and comes from his PrBoom plus port. A big thanks to Andrey for this.", "kind": "function", "line": 1390, "name": "SpechitOverrun", "signature": "static void SpechitOverrun(line_t *ld)"}, {"kind": "function", "line": 120, "name": "P_DamageMobj", "signature": "P_DamageMobj (thing, tmthing, tmthing, 10000);"}, {"doc": "the move is ok, so link the thing into its new position", "kind": "function", "line": 183, "name": "P_UnsetThingPosition", "signature": "P_UnsetThingPosition (thing);"}, {"kind": "function", "line": 189, "name": "P_SetThingPosition", "signature": "P_SetThingPosition (thing);"}, {"doc": "set openrange, opentop, openbottom", "kind": "function", "line": 241, "name": "P_LineOpening", "signature": "P_LineOpening (ld);"}, {"kind": "function", "line": 306, "name": "P_SetMobjState", "signature": "P_SetMobjState (tmthing, tmthing->info->spawnstate);"}, {"doc": "can remove thing", "kind": "function", "line": 364, "name": "P_TouchSpecialThing", "signature": "P_TouchSpecialThing (thing, tmthing);"}, {"kind": "function", "line": 764, "name": "P_PathTraverse", "signature": "P_PathTraverse ( leadx, leady, leadx+mo->momx, leady+mo->momy, PT_ADDLINES, PTR_SlideTraverse );"}, {"doc": "Spawn bullet puffs.", "kind": "function", "line": 1013, "name": "P_SpawnPuff", "signature": "P_SpawnPuff (x,y,z);"}, {"kind": "function", "line": 1052, "name": "P_SpawnBlood", "signature": "else P_SpawnBlood (x,y,z, la_damage);"}, {"kind": "function", "line": 1151, "name": "S_StartSound", "signature": "S_StartSound (usething, sfx_noway);"}, {"doc": "return false;\t\t// don't use back side", "kind": "function", "line": 1165, "name": "P_UseSpecialLine", "signature": "P_UseSpecialLine (usething, in->d.line, side);"}, {"kind": "function", "line": 1279, "name": "P_BlockThingsIterator", "signature": "P_BlockThingsIterator (x, y, PIT_RadiusAttack );"}, {"kind": "function", "line": 1331, "name": "P_RemoveMobj", "signature": "P_RemoveMobj (thing);"}, {"kind": "function", "line": 1415, "name": "M_StrToInt", "signature": "M_StrToInt(myargv[p+1], (int *) &baseaddr);"}, {"kind": "function", "line": 1441, "name": "fprintf", "signature": "default: fprintf(stderr, \"SpechitOverrun: Warning: unable to emulate\" \"an overrun where numspechit=%i\\n\", numspechit);"}, {"doc": "slopes to top and bottom of target", "kind": "variable", "line": 834, "name": "topslope", "signature": "extern fixed_t topslope;"}, {"kind": "variable", "line": 835, "name": "bottomslope", "signature": "extern fixed_t bottomslope;"}, {"kind": "macro", "line": 49, "name": "DEFAULT_SPECHIT_MAGIC", "signature": "#define DEFAULT_SPECHIT_MAGIC"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard Copyright(C) 2005, 2006 Andrey Budko This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Movement/collision utility functions, as used by function in p_map.c. BLOCKMAP Iterator functions, and some PIT_* functions to use for iteration. include include \"m_bbox.h\" include \"doomdef.h\"", "id": "progs/doomgeneric/p_maputl.c", "kind": "module", "label": "p_maputl.c", "language": "c", "sha256": "76bc0196f62c185b", "symbol_count": 20, "symbols": [{"kind": "struct", "line": 738, "name": "intercepts_overrun_t"}, {"doc": "P_AproxDistance Gives an estimation of distance (not exact)", "kind": "function", "line": 42, "name": "P_AproxDistance", "signature": "fixed_t\nP_AproxDistance\n( fixed_t\tdx,\n fixed_t\tdy )"}, {"doc": "P_PointOnLineSide Returns 0 or 1", "kind": "function", "line": 60, "name": "P_PointOnLineSide", "signature": "int\nP_PointOnLineSide\n( fixed_t\tx,\n fixed_t\ty,\n line_t*\tline )"}, {"doc": "P_BoxOnLineSide Considers the line to be infinite Returns side 0 or 1, -1 if box crosses the line.", "kind": "function", "line": 104, "name": "P_BoxOnLineSide", "signature": "int\nP_BoxOnLineSide\n( fixed_t*\ttmbox,\n line_t*\tld )"}, {"doc": "P_PointOnDivlineSide Returns 0 or 1.", "kind": "function", "line": 155, "name": "P_PointOnDivlineSide", "signature": "int\nP_PointOnDivlineSide\n( fixed_t\tx,\n fixed_t\ty,\n divline_t*\tline )"}, {"doc": "P_MakeDivline", "kind": "function", "line": 205, "name": "P_MakeDivline", "signature": "void\nP_MakeDivline\n( line_t*\tli,\n divline_t*\tdl )"}, {"doc": "P_InterceptVector Returns the fractional intercept point along the first divline. This is only called by the addthings and addlines traversers.", "kind": "function", "line": 225, "name": "P_InterceptVector", "signature": "fixed_t\nP_InterceptVector\n( divline_t*\tv2,\n divline_t*\tv1 )"}, {"kind": "function", "line": 293, "name": "P_LineOpening", "signature": "void P_LineOpening (line_t* linedef)"}, {"doc": "P_UnsetThingPosition Unlinks a thing from block map and sectors. On each position change, BLOCKMAP and other lookups maintaining lists ot things inside these structures need to be updated.", "kind": "function", "line": 342, "name": "P_UnsetThingPosition", "signature": "void P_UnsetThingPosition (mobj_t* thing)"}, {"doc": "P_SetThingPosition Links a thing into both a block and a subsector based on it's x y. Sets thing->subsector properly", "kind": "function", "line": 390, "name": "P_SetThingPosition", "signature": "void\nP_SetThingPosition (mobj_t* thing)"}, {"doc": "P_BlockLinesIterator The validcount flags are used to avoid checking lines that are marked in multiple mapblocks, so increment validcount before the first call to P_BlockLinesIterator, then make one or more calls to it.", "kind": "function", "line": 466, "name": "P_BlockLinesIterator", "signature": "boolean\nP_BlockLinesIterator\n( int\t\t\tx,\n int\t\t\ty,\n boolean(*func)(line_t*) )"}, {"doc": "P_BlockThingsIterator", "kind": "function", "line": 507, "name": "P_BlockThingsIterator", "signature": "boolean\nP_BlockThingsIterator\n( int\t\t\tx,\n int\t\t\ty,\n boolean(*func)(mobj_t*) )"}, {"doc": "PIT_AddLineIntercepts. Looks for lines in the given block that intercept the given trace to add to the intercepts list. A line is crossed if its endpoints are on opposite sides of the trace. Returns true if earlyout and a solid line hit.", "kind": "function", "line": 558, "name": "PIT_AddLineIntercepts", "signature": "boolean\nPIT_AddLineIntercepts (line_t* ld)"}, {"doc": "PIT_AddThingIntercepts", "kind": "function", "line": 614, "name": "PIT_AddThingIntercepts", "signature": "boolean PIT_AddThingIntercepts (mobj_t* thing)"}, {"doc": "P_TraverseIntercepts Returns true if the traverser function returns true for all lines.", "kind": "function", "line": 681, "name": "P_TraverseIntercepts", "signature": "boolean\nP_TraverseIntercepts\n( traverser_t\tfunc,\n fixed_t\tmaxfrac )"}, {"doc": "Overwrite a specific memory location with a value.", "kind": "function", "line": 781, "name": "InterceptsMemoryOverrun", "signature": "static void InterceptsMemoryOverrun(int location, int value)"}, {"doc": "Emulate overruns of the intercepts[] array.", "kind": "function", "line": 826, "name": "InterceptsOverrun", "signature": "static void InterceptsOverrun(int num_intercepts, intercept_t *intercept)"}, {"doc": "P_PathTraverse Traces a line from x1,y1 to x2,y2, calling the traverser function for each. Returns true if the traverser function returns true for all lines.", "kind": "function", "line": 860, "name": "P_PathTraverse", "signature": "boolean\nP_PathTraverse\n( fixed_t\t\tx1,\n fixed_t\t\ty1,\n fixed_t\t\tx2,\n fixed_t\t\ty2,\n int\t\t\tflags,..."}, {"kind": "function", "line": 242, "name": "FixedMul", "signature": "FixedMul ( (v1->x - v2->x)>>8 ,v1->dy ) +FixedMul ( (v2->y - v1->y)>>8, v1->dx );"}, {"kind": "variable", "line": 730, "name": "bulletslope", "signature": "extern fixed_t bulletslope;"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Moving object handling. Spawn functions. include include \"i_system.h\" include \"z_zone.h\" include \"m_random.h\" include \"doomdef.h\" include \"p_local.h\" include \"sounds.h\" include \"st_stuff.h\" include \"hu_stuff.h\"", "id": "progs/doomgeneric/p_mobj.c", "kind": "module", "label": "p_mobj.c", "language": "c", "sha256": "6ffae040b578d6ee", "symbol_count": 33, "symbols": [{"kind": "function", "line": 46, "name": "P_SetMobjState", "signature": "boolean\nP_SetMobjState\n( mobj_t*\tmobj,\n statenum_t\tstate )"}, {"doc": "P_ExplodeMissile", "kind": "function", "line": 84, "name": "P_ExplodeMissile", "signature": "void P_ExplodeMissile (mobj_t* mo)"}, {"doc": "P_XYMovement define STOPSPEED\t\t0x1000 define FRICTION\t\t0xe800", "kind": "function", "line": 107, "name": "P_XYMovement", "signature": "void P_XYMovement (mobj_t* mo)"}, {"doc": "P_ZMovement", "kind": "function", "line": 240, "name": "P_ZMovement", "signature": "void P_ZMovement (mobj_t* mo)"}, {"doc": "P_NightmareRespawn", "kind": "function", "line": 382, "name": "P_NightmareRespawn", "signature": "void\nP_NightmareRespawn (mobj_t* mobj)"}, {"doc": "P_MobjThinker", "kind": "function", "line": 441, "name": "P_MobjThinker", "signature": "void P_MobjThinker (mobj_t* mobj)"}, {"doc": "P_SpawnMobj", "kind": "function", "line": 505, "name": "P_SpawnMobj", "signature": "mobj_t*\nP_SpawnMobj\n( fixed_t\tx,\n fixed_t\ty,\n fixed_t\tz,\n mobjtype_t\ttype )"}, {"kind": "function", "line": 570, "name": "P_RemoveMobj", "signature": "void P_RemoveMobj (mobj_t* mobj)"}, {"doc": "P_RespawnSpecials", "kind": "function", "line": 604, "name": "P_RespawnSpecials", "signature": "void P_RespawnSpecials (void)"}, {"doc": "P_SpawnPlayer Called when a player is spawned on the level. Most of the player structure stays unchanged between levels.", "kind": "function", "line": 668, "name": "P_SpawnPlayer", "signature": "void P_SpawnPlayer (mapthing_t* mthing)"}, {"doc": "P_SpawnMapThing The fields of the mapthing should already be in host byte order.", "kind": "function", "line": 739, "name": "P_SpawnMapThing", "signature": "void P_SpawnMapThing (mapthing_t* mthing)"}, {"kind": "function", "line": 849, "name": "P_SpawnPuff", "signature": "void\nP_SpawnPuff\n( fixed_t\tx,\n fixed_t\ty,\n fixed_t\tz )"}, {"doc": "P_SpawnBlood", "kind": "function", "line": 877, "name": "P_SpawnBlood", "signature": "void\nP_SpawnBlood\n( fixed_t\tx,\n fixed_t\ty,\n fixed_t\tz,\n int\t\tdamage )"}, {"doc": "P_CheckMissileSpawn Moves the missile forward a bit and possibly explodes it right there.", "kind": "function", "line": 907, "name": "P_CheckMissileSpawn", "signature": "void P_CheckMissileSpawn (mobj_t* th)"}, {"doc": "Certain functions assume that a mobj_t pointer is non-NULL, causing a crash in some situations where it is NULL. Vanilla Doom did not crash because of the lack of proper memory protection. This function substitutes NULL pointers for pointers to a dummy mobj, to avoid a crash.", "kind": "function", "line": 928, "name": "P_SubstNullMobj", "signature": "mobj_t *P_SubstNullMobj(mobj_t *mobj)"}, {"doc": "P_SpawnMissile", "kind": "function", "line": 949, "name": "P_SpawnMissile", "signature": "mobj_t*\nP_SpawnMissile\n( mobj_t*\tsource,\n mobj_t*\tdest,\n mobjtype_t\ttype )"}, {"doc": "P_SpawnPlayerMissile Tries to aim at a nearby monster", "kind": "function", "line": 995, "name": "P_SpawnPlayerMissile", "signature": "void\nP_SpawnPlayerMissile\n( mobj_t*\tsource,\n mobjtype_t\ttype )"}, {"doc": "include \"doomstat.h\"", "kind": "function", "line": 35, "name": "G_PlayerReborn", "signature": "void G_PlayerReborn (int player);"}, {"kind": "function", "line": 165, "name": "P_SlideMove", "signature": "P_SlideMove (mo);"}, {"kind": "function", "line": 323, "name": "S_StartSound", "signature": "S_StartSound (mo, sfx_oof);"}, {"kind": "function", "line": 517, "name": "memset", "signature": "memset (mobj, 0, sizeof (*mobj));"}, {"doc": "set subsector and/or block links", "kind": "function", "line": 543, "name": "P_SetThingPosition", "signature": "P_SetThingPosition (mobj);"}, {"kind": "function", "line": 556, "name": "P_AddThinker", "signature": "P_AddThinker (&mobj->thinker);"}, {"doc": "unlink from sector and block lists", "kind": "function", "line": 589, "name": "P_UnsetThingPosition", "signature": "P_UnsetThingPosition (mobj);"}, {"doc": "stop any playing sound", "kind": "function", "line": 592, "name": "S_StopSound", "signature": "S_StopSound (mobj);"}, {"doc": "free block", "kind": "function", "line": 595, "name": "P_RemoveThinker", "signature": "P_RemoveThinker ((thinker_t*)mobj);"}, {"doc": "setup gun psprite", "kind": "function", "line": 717, "name": "P_SetupPsprites", "signature": "P_SetupPsprites (p);"}, {"doc": "wake up the status bar", "kind": "function", "line": 727, "name": "ST_Start", "signature": "ST_Start ();"}, {"doc": "wake up the heads up text", "kind": "function", "line": 729, "name": "HU_Start", "signature": "HU_Start ();"}, {"kind": "function", "line": 753, "name": "memcpy", "signature": "memcpy (deathmatch_p, mthing, sizeof(*mthing));"}, {"doc": "P_SpawnPuff", "kind": "variable", "line": 848, "name": "attackrange", "signature": "extern fixed_t attackrange;"}, {"kind": "macro", "line": 105, "name": "STOPSPEED", "signature": "#define STOPSPEED"}, {"kind": "macro", "line": 106, "name": "FRICTION", "signature": "#define FRICTION"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Map Objects, MObj, definition and handling. ifndef __P_MOBJ__ define __P_MOBJ__ Basics. include \"tables.h\" include \"m_fixed.h\" We need the thinker_t stuff. include \"d_think.h\" We need the WAD data structure for Map things,", "id": "progs/doomgeneric/p_mobj.h", "kind": "module", "label": "p_mobj.h", "language": "h", "sha256": "27a95e4eb63aad70", "symbol_count": 3, "symbols": [{"doc": "Map Object definition.", "kind": "struct", "line": 201, "name": "mobj_s"}, {"doc": "Map Object definition.", "kind": "type_alias", "line": 201, "name": "thinker", "signature": "typedef struct mobj_s { // List: thinker links. thinker_t thinker;"}, {"kind": "macro", "line": 21, "name": "__P_MOBJ__", "signature": "#define __P_MOBJ__"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Plats (i.e. elevator platforms) code, raising/lowering. include include \"i_system.h\" include \"z_zone.h\" include \"m_random.h\" include \"doomdef.h\" include \"p_local.h\" include \"s_sound.h\" State.", "id": "progs/doomgeneric/p_plats.c", "kind": "module", "label": "p_plats.c", "language": "c", "sha256": "73d0b44ccdf525db", "symbol_count": 10, "symbols": [{"doc": "Move a plat up and down", "kind": "function", "line": 45, "name": "T_PlatRaise", "signature": "void T_PlatRaise(plat_t* plat)"}, {"doc": "Do Platforms \"amount\" is only used for SOME platforms.", "kind": "function", "line": 128, "name": "EV_DoPlat", "signature": "int\nEV_DoPlat\n( line_t*\tline,\n plattype_e\ttype,\n int\t\tamount )"}, {"kind": "function", "line": 245, "name": "P_ActivateInStasis", "signature": "void P_ActivateInStasis(int tag)"}, {"kind": "function", "line": 262, "name": "EV_StopPlat", "signature": "void EV_StopPlat(line_t* line)"}, {"kind": "function", "line": 277, "name": "P_AddActivePlat", "signature": "void P_AddActivePlat(plat_t* plat)"}, {"kind": "function", "line": 290, "name": "P_RemoveActivePlat", "signature": "void P_RemoveActivePlat(plat_t* plat)"}, {"kind": "function", "line": 69, "name": "S_StartSound", "signature": "S_StartSound(&plat->sector->soundorg, sfx_pstart);"}, {"kind": "function", "line": 164, "name": "P_AddThinker", "signature": "P_AddThinker(&plat->thinker);"}, {"kind": "function", "line": 288, "name": "I_Error", "signature": "I_Error (\"P_AddActivePlat: no more plats!\");"}, {"kind": "function", "line": 298, "name": "P_RemoveThinker", "signature": "P_RemoveThinker(&(activeplats[i])->thinker);"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Weapon sprite animation, weapon objects. Action functions for weapons. include \"doomdef.h\" include \"d_event.h\" include \"deh_misc.h\" include \"m_random.h\" include \"p_local.h\" include \"s_sound.h\" State.", "id": "progs/doomgeneric/p_pspr.c", "kind": "module", "label": "p_pspr.c", "language": "c", "sha256": "ea03f51b03ac432a", "symbol_count": 43, "symbols": [{"doc": "P_SetPsprite", "kind": "function", "line": 49, "name": "P_SetPsprite", "signature": "void\nP_SetPsprite\n( player_t*\tplayer,\n int\t\tposition,\n statenum_t\tstnum )"}, {"kind": "function", "line": 102, "name": "P_CalcSwing", "signature": "void P_CalcSwing (player_t*\tplayer)"}, {"doc": "P_BringUpWeapon Starts bringing the pending weapon up from the bottom of the screen. Uses player", "kind": "function", "line": 129, "name": "P_BringUpWeapon", "signature": "void P_BringUpWeapon (player_t* player)"}, {"doc": "P_CheckAmmo Returns true if there is enough ammo to shoot. If not, selects the next weapon to use.", "kind": "function", "line": 152, "name": "P_CheckAmmo", "signature": "boolean P_CheckAmmo (player_t* player)"}, {"doc": "P_FireWeapon.", "kind": "function", "line": 237, "name": "P_FireWeapon", "signature": "void P_FireWeapon (player_t* player)"}, {"doc": "P_DropWeapon Player died, so put the weapon away.", "kind": "function", "line": 256, "name": "P_DropWeapon", "signature": "void P_DropWeapon (player_t* player)"}, {"doc": "A_WeaponReady The player can fire the weapon or change to another weapon at this time. Follows after getting weapon up, or after previous attack/fire sequence.", "kind": "function", "line": 272, "name": "A_WeaponReady", "signature": "void\nA_WeaponReady\n( player_t*\tplayer,\n pspdef_t*\tpsp )"}, {"doc": "A_ReFire The player can re-fire the weapon without lowering it entirely.", "kind": "function", "line": 334, "name": "A_ReFire", "signature": "void A_ReFire\n( player_t*\tplayer,\n pspdef_t*\tpsp )"}, {"kind": "function", "line": 354, "name": "A_CheckReload", "signature": "void\nA_CheckReload\n( player_t*\tplayer,\n pspdef_t*\tpsp )"}, {"doc": "A_Lower Lowers current weapon, and changes weapon at bottom.", "kind": "function", "line": 375, "name": "A_Lower", "signature": "void\nA_Lower\n( player_t*\tplayer,\n pspdef_t*\tpsp )"}, {"doc": "A_Raise", "kind": "function", "line": 413, "name": "A_Raise", "signature": "void\nA_Raise\n( player_t*\tplayer,\n pspdef_t*\tpsp )"}, {"doc": "A_GunFlash", "kind": "function", "line": 439, "name": "A_GunFlash", "signature": "void\nA_GunFlash\n( player_t*\tplayer,\n pspdef_t*\tpsp )"}, {"doc": "A_Punch", "kind": "function", "line": 458, "name": "A_Punch", "signature": "void\nA_Punch\n( player_t*\tplayer,\n pspdef_t*\tpsp )"}, {"doc": "A_Saw", "kind": "function", "line": 492, "name": "A_Saw", "signature": "void\nA_Saw\n( player_t*\tplayer,\n pspdef_t*\tpsp )"}, {"doc": "Doom does not check the bounds of the ammo array. As a result, it is possible to use an ammo type > 4 that overflows into the maxammo array and affects that instead. Through dehacked, for example, it is possible to make a weapon that decreases the max number of ammo for another weapon. Emulate this.", "kind": "function", "line": 541, "name": "DecreaseAmmo", "signature": "static void DecreaseAmmo(player_t *player, int ammonum, int amount)"}, {"doc": "A_FireMissile", "kind": "function", "line": 558, "name": "A_FireMissile", "signature": "void\nA_FireMissile\n( player_t*\tplayer,\n pspdef_t*\tpsp )"}, {"doc": "A_FireBFG", "kind": "function", "line": 571, "name": "A_FireBFG", "signature": "void\nA_FireBFG\n( player_t*\tplayer,\n pspdef_t*\tpsp )"}, {"doc": "A_FirePlasma", "kind": "function", "line": 586, "name": "A_FirePlasma", "signature": "void\nA_FirePlasma\n( player_t*\tplayer,\n pspdef_t*\tpsp )"}, {"kind": "function", "line": 608, "name": "P_BulletSlope", "signature": "void P_BulletSlope (mobj_t*\tmo)"}, {"doc": "P_GunShot", "kind": "function", "line": 634, "name": "P_GunShot", "signature": "void\nP_GunShot\n( mobj_t*\tmo,\n boolean\taccurate )"}, {"doc": "A_FirePistol", "kind": "function", "line": 655, "name": "A_FirePistol", "signature": "void\nA_FirePistol\n( player_t*\tplayer,\n pspdef_t*\tpsp )"}, {"doc": "A_FireShotgun", "kind": "function", "line": 677, "name": "A_FireShotgun", "signature": "void\nA_FireShotgun\n( player_t*\tplayer,\n pspdef_t*\tpsp )"}, {"doc": "A_FireShotgun2", "kind": "function", "line": 704, "name": "A_FireShotgun2", "signature": "void\nA_FireShotgun2\n( player_t*\tplayer,\n pspdef_t*\tpsp )"}, {"doc": "A_FireCGun", "kind": "function", "line": 741, "name": "A_FireCGun", "signature": "void\nA_FireCGun\n( player_t*\tplayer,\n pspdef_t*\tpsp )"}, {"doc": "?", "kind": "function", "line": 770, "name": "A_Light0", "signature": "void A_Light0 (player_t *player, pspdef_t *psp)"}, {"kind": "function", "line": 774, "name": "A_Light1", "signature": "void A_Light1 (player_t *player, pspdef_t *psp)"}, {"kind": "function", "line": 779, "name": "A_Light2", "signature": "void A_Light2 (player_t *player, pspdef_t *psp)"}, {"doc": "A_BFGSpray Spawn a BFG explosion on every monster in view", "kind": "function", "line": 790, "name": "A_BFGSpray", "signature": "void A_BFGSpray (mobj_t* mo)"}, {"doc": "A_BFGsound", "kind": "function", "line": 826, "name": "A_BFGsound", "signature": "void\nA_BFGsound\n( player_t*\tplayer,\n pspdef_t*\tpsp )"}, {"doc": "P_SetupPsprites Called at start of level for each player.", "kind": "function", "line": 840, "name": "P_SetupPsprites", "signature": "void P_SetupPsprites (player_t* player)"}, {"doc": "P_MovePsprites Called every tic by player thinking routine.", "kind": "function", "line": 860, "name": "P_MovePsprites", "signature": "void P_MovePsprites (player_t* player)"}, {"kind": "function", "line": 243, "name": "P_SetMobjState", "signature": "P_SetMobjState (player->mo, S_PLAY_ATK1);"}, {"kind": "function", "line": 247, "name": "P_NoiseAlert", "signature": "P_NoiseAlert (player->mo, player->mo);"}, {"kind": "function", "line": 290, "name": "S_StartSound", "signature": "S_StartSound (player->mo, sfx_sawidl);"}, {"kind": "function", "line": 475, "name": "P_LineAttack", "signature": "P_LineAttack (player->mo, angle, MELEERANGE, slope, damage);"}, {"kind": "function", "line": 564, "name": "P_SpawnPlayerMissile", "signature": "P_SpawnPlayerMissile (player->mo, MT_ROCKET);"}, {"doc": "mo->target is the originator (player) of the missile", "kind": "function", "line": 804, "name": "P_AimLineAttack", "signature": "P_AimLineAttack (mo->target, an, 16*64*FRACUNIT);"}, {"kind": "function", "line": 808, "name": "P_SpawnMobj", "signature": "P_SpawnMobj (linetarget->x, linetarget->y, linetarget->z + (linetarget->height>>2), MT_EXTRABFG);"}, {"kind": "function", "line": 817, "name": "P_DamageMobj", "signature": "P_DamageMobj (linetarget, mo->target,mo->target, damage);"}, {"kind": "macro", "line": 37, "name": "LOWERSPEED", "signature": "#define LOWERSPEED"}, {"kind": "macro", "line": 39, "name": "RAISESPEED", "signature": "#define RAISESPEED"}, {"kind": "macro", "line": 40, "name": "WEAPONBOTTOM", "signature": "#define WEAPONBOTTOM"}, {"kind": "macro", "line": 42, "name": "WEAPONTOP", "signature": "#define WEAPONTOP"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Sprite animation. ifndef __P_PSPR__ define __P_PSPR__ Basic data types. Needs fixed point, and BAM angles. include \"m_fixed.h\" include \"tables.h\" Needs to include the precompiled", "id": "progs/doomgeneric/p_pspr.h", "kind": "module", "label": "p_pspr.h", "language": "h", "sha256": "5af811131d25f49f", "symbol_count": 4, "symbols": [{"kind": "struct", "line": 62, "name": "pspdef_t"}, {"kind": "macro", "line": 21, "name": "__P_PSPR__", "signature": "#define __P_PSPR__"}, {"kind": "macro", "line": 44, "name": "FF_FULLBRIGHT", "signature": "#define FF_FULLBRIGHT"}, {"kind": "macro", "line": 45, "name": "FF_FRAMEMASK", "signature": "#define FF_FRAMEMASK"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Archiving: SaveGame I/O. include include include \"dstrings.h\" include \"deh_main.h\" include \"i_system.h\" include \"z_zone.h\" include \"p_local.h\" include \"p_saveg.h\" State.", "id": "progs/doomgeneric/p_saveg.c", "kind": "module", "label": "p_saveg.c", "language": "c", "sha256": "fa41d5060853e1e7", "symbol_count": 72, "symbols": [{"doc": "Get the filename of a temporary file to write the savegame to. After the file has been successfully saved, it will be renamed to the real file.", "kind": "function", "line": 46, "name": "P_TempSaveGameFile", "signature": "char *P_TempSaveGameFile(void)"}, {"doc": "Get the filename of the save game file to use for the specified slot.", "kind": "function", "line": 60, "name": "P_SaveGameFile", "signature": "char *P_SaveGameFile(int slot)"}, {"doc": "Endian-safe integer read/write functions", "kind": "function", "line": 80, "name": "saveg_read8", "signature": "static byte saveg_read8(void)"}, {"kind": "function", "line": 98, "name": "saveg_write8", "signature": "static void saveg_write8(byte value)"}, {"kind": "function", "line": 111, "name": "saveg_read16", "signature": "static short saveg_read16(void)"}, {"kind": "function", "line": 121, "name": "saveg_write16", "signature": "static void saveg_write16(short value)"}, {"kind": "function", "line": 127, "name": "saveg_read32", "signature": "static int saveg_read32(void)"}, {"kind": "function", "line": 139, "name": "saveg_write32", "signature": "static void saveg_write32(int value)"}, {"doc": "Pad to 4-byte boundaries", "kind": "function", "line": 149, "name": "saveg_read_pad", "signature": "static void saveg_read_pad(void)"}, {"kind": "function", "line": 165, "name": "saveg_write_pad", "signature": "static void saveg_write_pad(void)"}, {"doc": "Pointers", "kind": "function", "line": 184, "name": "saveg_readp", "signature": "static void *saveg_readp(void)"}, {"kind": "function", "line": 189, "name": "saveg_writep", "signature": "static void saveg_writep(void *p)"}, {"doc": "mapthing_t", "kind": "function", "line": 207, "name": "saveg_read_mapthing_t", "signature": "static void saveg_read_mapthing_t(mapthing_t *str)"}, {"kind": "function", "line": 225, "name": "saveg_write_mapthing_t", "signature": "static void saveg_write_mapthing_t(mapthing_t *str)"}, {"doc": "actionf_t", "kind": "function", "line": 247, "name": "saveg_read_actionf_t", "signature": "static void saveg_read_actionf_t(actionf_t *str)"}, {"kind": "function", "line": 253, "name": "saveg_write_actionf_t", "signature": "static void saveg_write_actionf_t(actionf_t *str)"}, {"doc": "thinker_t", "kind": "function", "line": 272, "name": "saveg_read_thinker_t", "signature": "static void saveg_read_thinker_t(thinker_t *str)"}, {"kind": "function", "line": 284, "name": "saveg_write_thinker_t", "signature": "static void saveg_write_thinker_t(thinker_t *str)"}, {"doc": "mobj_t", "kind": "function", "line": 300, "name": "saveg_read_mobj_t", "signature": "static void saveg_read_mobj_t(mobj_t *str)"}, {"kind": "function", "line": 420, "name": "saveg_write_mobj_t", "signature": "static void saveg_write_mobj_t(mobj_t *str)"}, {"doc": "ticcmd_t", "kind": "function", "line": 540, "name": "saveg_read_ticcmd_t", "signature": "static void saveg_read_ticcmd_t(ticcmd_t *str)"}, {"kind": "function", "line": 562, "name": "saveg_write_ticcmd_t", "signature": "static void saveg_write_ticcmd_t(ticcmd_t *str)"}, {"doc": "pspdef_t", "kind": "function", "line": 588, "name": "saveg_read_pspdef_t", "signature": "static void saveg_read_pspdef_t(pspdef_t *str)"}, {"kind": "function", "line": 614, "name": "saveg_write_pspdef_t", "signature": "static void saveg_write_pspdef_t(pspdef_t *str)"}, {"doc": "player_t", "kind": "function", "line": 640, "name": "saveg_read_player_t", "signature": "static void saveg_read_player_t(player_t *str)"}, {"kind": "function", "line": 771, "name": "saveg_write_player_t", "signature": "static void saveg_write_player_t(player_t *str)"}, {"doc": "ceiling_t", "kind": "function", "line": 907, "name": "saveg_read_ceiling_t", "signature": "static void saveg_read_ceiling_t(ceiling_t *str)"}, {"kind": "function", "line": 943, "name": "saveg_write_ceiling_t", "signature": "static void saveg_write_ceiling_t(ceiling_t *str)"}, {"doc": "vldoor_t", "kind": "function", "line": 980, "name": "saveg_read_vldoor_t", "signature": "static void saveg_read_vldoor_t(vldoor_t *str)"}, {"kind": "function", "line": 1010, "name": "saveg_write_vldoor_t", "signature": "static void saveg_write_vldoor_t(vldoor_t *str)"}, {"doc": "floormove_t", "kind": "function", "line": 1041, "name": "saveg_read_floormove_t", "signature": "static void saveg_read_floormove_t(floormove_t *str)"}, {"kind": "function", "line": 1074, "name": "saveg_write_floormove_t", "signature": "static void saveg_write_floormove_t(floormove_t *str)"}, {"doc": "plat_t", "kind": "function", "line": 1108, "name": "saveg_read_plat_t", "signature": "static void saveg_read_plat_t(plat_t *str)"}, {"kind": "function", "line": 1150, "name": "saveg_write_plat_t", "signature": "static void saveg_write_plat_t(plat_t *str)"}, {"doc": "lightflash_t", "kind": "function", "line": 1193, "name": "saveg_read_lightflash_t", "signature": "static void saveg_read_lightflash_t(lightflash_t *str)"}, {"kind": "function", "line": 1220, "name": "saveg_write_lightflash_t", "signature": "static void saveg_write_lightflash_t(lightflash_t *str)"}, {"doc": "strobe_t", "kind": "function", "line": 1248, "name": "saveg_read_strobe_t", "signature": "static void saveg_read_strobe_t(strobe_t *str)"}, {"kind": "function", "line": 1275, "name": "saveg_write_strobe_t", "signature": "static void saveg_write_strobe_t(strobe_t *str)"}, {"doc": "glow_t", "kind": "function", "line": 1303, "name": "saveg_read_glow_t", "signature": "static void saveg_read_glow_t(glow_t *str)"}, {"kind": "function", "line": 1324, "name": "saveg_write_glow_t", "signature": "static void saveg_write_glow_t(glow_t *str)"}, {"doc": "Write the header for a savegame", "kind": "function", "line": 1346, "name": "P_WriteSaveGameHeader", "signature": "void P_WriteSaveGameHeader(char *description)"}, {"doc": "Read the header for a savegame", "kind": "function", "line": 1378, "name": "P_ReadSaveGameHeader", "signature": "boolean P_ReadSaveGameHeader(void)"}, {"doc": "Read the end of file marker. Returns true if read successfully.", "kind": "function", "line": 1418, "name": "P_ReadSaveGameEOF", "signature": "boolean P_ReadSaveGameEOF(void)"}, {"doc": "Write the end of file marker", "kind": "function", "line": 1431, "name": "P_WriteSaveGameEOF", "signature": "void P_WriteSaveGameEOF(void)"}, {"doc": "P_ArchivePlayers", "kind": "function", "line": 1440, "name": "P_ArchivePlayers", "signature": "void P_ArchivePlayers (void)"}, {"doc": "P_UnArchivePlayers", "kind": "function", "line": 1460, "name": "P_UnArchivePlayers", "signature": "void P_UnArchivePlayers (void)"}, {"doc": "P_ArchiveWorld", "kind": "function", "line": 1484, "name": "P_ArchiveWorld", "signature": "void P_ArchiveWorld (void)"}, {"doc": "P_UnArchiveWorld", "kind": "function", "line": 1532, "name": "P_UnArchiveWorld", "signature": "void P_UnArchiveWorld (void)"}, {"doc": "P_ArchiveThinkers", "kind": "function", "line": 1592, "name": "P_ArchiveThinkers", "signature": "void P_ArchiveThinkers (void)"}, {"doc": "P_UnArchiveThinkers", "kind": "function", "line": 1620, "name": "P_UnArchiveThinkers", "signature": "void P_UnArchiveThinkers (void)"}, {"doc": "Things to handle: T_MoveCeiling, (ceiling_t: sector_t * swizzle), - active list T_VerticalDoor, (vldoor_t: sector_t * swizzle), T_MoveFloor, (floormove_t: sector_t * swizzle), T_LightFlash, (lightflash_t: sector_t * swizzle), T_StrobeFlash, (strobe_t: sector_t *), T_Glow, (glow_t: sector_t *), T_PlatRaise, (plat_t: sector_t *), - active list", "kind": "function", "line": 1704, "name": "P_ArchiveSpecials", "signature": "void P_ArchiveSpecials (void)"}, {"doc": "P_UnArchiveSpecials", "kind": "function", "line": 1793, "name": "P_UnArchiveSpecials", "signature": "void P_UnArchiveSpecials (void)"}, {"kind": "function", "line": 72, "name": "DEH_snprintf", "signature": "DEH_snprintf(basename, 32, SAVEGAMENAME \"%d.dsg\", slot);"}, {"kind": "function", "line": 74, "name": "M_snprintf", "signature": "M_snprintf(filename, filename_size, \"%s%s\", savegamedir, basename);"}, {"kind": "function", "line": 89, "name": "fprintf", "signature": "fprintf(stderr, \"saveg_read8: Unexpected end of file while \" \"reading save game\\n\");"}, {"doc": "think_t function;", "kind": "function", "line": 282, "name": "saveg_read_think_t", "signature": "saveg_read_think_t(&str->function);"}, {"doc": "think_t function;", "kind": "function", "line": 294, "name": "saveg_write_think_t", "signature": "saveg_write_think_t(&str->function);"}, {"doc": "spritenum_t sprite;", "kind": "function", "line": 445, "name": "saveg_write_enum", "signature": "saveg_write_enum(str->sprite);"}, {"kind": "function", "line": 1356, "name": "memset", "signature": "memset(name, 0, sizeof(name));"}, {"kind": "function", "line": 1635, "name": "Z_Free", "signature": "else Z_Free (currentthinker);"}, {"kind": "function", "line": 1640, "name": "P_InitThinkers", "signature": "P_InitThinkers ();"}, {"kind": "function", "line": 1658, "name": "P_SetThingPosition", "signature": "P_SetThingPosition (mobj);"}, {"kind": "function", "line": 1663, "name": "P_AddThinker", "signature": "P_AddThinker (&mobj->thinker);"}, {"kind": "function", "line": 1665, "name": "I_Error", "signature": "default: I_Error (\"Unknown tclass %i in savegame\",tclass);"}, {"kind": "function", "line": 1825, "name": "P_AddActiveCeiling", "signature": "P_AddActiveCeiling(ceiling);"}, {"kind": "function", "line": 1856, "name": "P_AddActivePlat", "signature": "P_AddActivePlat(plat);"}, {"kind": "macro", "line": 35, "name": "SAVEGAME_EOF", "signature": "#define SAVEGAME_EOF"}, {"kind": "macro", "line": 37, "name": "VERSIONSIZE", "signature": "#define VERSIONSIZE"}, {"kind": "macro", "line": 196, "name": "saveg_read_enum", "signature": "#define saveg_read_enum"}, {"kind": "macro", "line": 198, "name": "saveg_write_enum", "signature": "#define saveg_write_enum"}, {"kind": "macro", "line": 265, "name": "saveg_read_think_t", "signature": "#define saveg_read_think_t"}, {"kind": "macro", "line": 267, "name": "saveg_write_think_t", "signature": "#define saveg_write_think_t"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Savegame I/O, archiving, persistence. ifndef __P_SAVEG__ define __P_SAVEG__ include maximum size of a savegame description define SAVESTRINGSIZE 24 temporary filename to use while saving.", "id": "progs/doomgeneric/p_saveg.h", "kind": "module", "label": "p_saveg.h", "language": "h", "sha256": "6419ef443fa8d009", "symbol_count": 18, "symbols": [{"doc": "temporary filename to use while saving.", "kind": "function", "line": 30, "name": "P_TempSaveGameFile", "signature": "char *P_TempSaveGameFile(void);"}, {"doc": "filename to use for a savegame slot", "kind": "function", "line": 34, "name": "P_SaveGameFile", "signature": "char *P_SaveGameFile(int slot);"}, {"doc": "Savegame file header read/write functions", "kind": "function", "line": 38, "name": "P_ReadSaveGameHeader", "signature": "boolean P_ReadSaveGameHeader(void);"}, {"kind": "function", "line": 40, "name": "P_WriteSaveGameHeader", "signature": "void P_WriteSaveGameHeader(char *description);"}, {"doc": "Savegame end-of-file read/write functions", "kind": "function", "line": 43, "name": "P_ReadSaveGameEOF", "signature": "boolean P_ReadSaveGameEOF(void);"}, {"kind": "function", "line": 45, "name": "P_WriteSaveGameEOF", "signature": "void P_WriteSaveGameEOF(void);"}, {"doc": "Persistent storage/archiving. These are the load / save game routines.", "kind": "function", "line": 49, "name": "P_ArchivePlayers", "signature": "void P_ArchivePlayers (void);"}, {"kind": "function", "line": 50, "name": "P_UnArchivePlayers", "signature": "void P_UnArchivePlayers (void);"}, {"kind": "function", "line": 51, "name": "P_ArchiveWorld", "signature": "void P_ArchiveWorld (void);"}, {"kind": "function", "line": 52, "name": "P_UnArchiveWorld", "signature": "void P_UnArchiveWorld (void);"}, {"kind": "function", "line": 53, "name": "P_ArchiveThinkers", "signature": "void P_ArchiveThinkers (void);"}, {"kind": "function", "line": 54, "name": "P_UnArchiveThinkers", "signature": "void P_UnArchiveThinkers (void);"}, {"kind": "function", "line": 55, "name": "P_ArchiveSpecials", "signature": "void P_ArchiveSpecials (void);"}, {"kind": "function", "line": 56, "name": "P_UnArchiveSpecials", "signature": "void P_UnArchiveSpecials (void);"}, {"kind": "variable", "line": 57, "name": "save_stream", "signature": "extern FILE *save_stream;"}, {"kind": "variable", "line": 59, "name": "savegame_error", "signature": "extern boolean savegame_error;"}, {"kind": "macro", "line": 21, "name": "__P_SAVEG__", "signature": "#define __P_SAVEG__"}, {"kind": "macro", "line": 26, "name": "SAVESTRINGSIZE", "signature": "#define SAVESTRINGSIZE"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Do all the WAD I/O, get map description, set up initial state and misc. LUTs. include include \"z_zone.h\" include \"deh_main.h\" include \"i_swap.h\" include \"m_argv.h\" include \"m_bbox.h\"", "id": "progs/doomgeneric/p_setup.c", "kind": "module", "label": "p_setup.c", "language": "c", "sha256": "b46912b65085ccdc", "symbol_count": 33, "symbols": [{"doc": "P_LoadVertexes", "kind": "function", "line": 118, "name": "P_LoadVertexes", "signature": "void P_LoadVertexes (int lump)"}, {"doc": "GetSectorAtNullAddress", "kind": "function", "line": 153, "name": "GetSectorAtNullAddress", "signature": "sector_t* GetSectorAtNullAddress(void)"}, {"doc": "P_LoadSegs", "kind": "function", "line": 172, "name": "P_LoadSegs", "signature": "void P_LoadSegs (int lump)"}, {"doc": "P_LoadSubsectors", "kind": "function", "line": 236, "name": "P_LoadSubsectors", "signature": "void P_LoadSubsectors (int lump)"}, {"doc": "P_LoadSectors", "kind": "function", "line": 265, "name": "P_LoadSectors", "signature": "void P_LoadSectors (int lump)"}, {"doc": "P_LoadNodes", "kind": "function", "line": 298, "name": "P_LoadNodes", "signature": "void P_LoadNodes (int lump)"}, {"doc": "P_LoadThings", "kind": "function", "line": 335, "name": "P_LoadThings", "signature": "void P_LoadThings (int lump)"}, {"doc": "P_LoadLineDefs Also counts secret lines for intermissions.", "kind": "function", "line": 392, "name": "P_LoadLineDefs", "signature": "void P_LoadLineDefs (int lump)"}, {"doc": "P_LoadSideDefs", "kind": "function", "line": 473, "name": "P_LoadSideDefs", "signature": "void P_LoadSideDefs (int lump)"}, {"doc": "P_LoadBlockMap", "kind": "function", "line": 504, "name": "P_LoadBlockMap", "signature": "void P_LoadBlockMap (int lump)"}, {"doc": "P_GroupLines Builds sector line lists and subsector sector numbers. Finds block bounding boxes for sectors.", "kind": "function", "line": 545, "name": "P_GroupLines", "signature": "void P_GroupLines (void)"}, {"doc": "Pad the REJECT lump with extra data when the lump is too small, to simulate a REJECT buffer overflow in Vanilla Doom.", "kind": "function", "line": 660, "name": "PadRejectArray", "signature": "static void PadRejectArray(byte *array, unsigned int len)"}, {"kind": "function", "line": 711, "name": "P_LoadReject", "signature": "static void P_LoadReject(int lumpnum)"}, {"doc": "P_SetupLevel", "kind": "function", "line": 743, "name": "P_SetupLevel", "signature": "void\nP_SetupLevel\n( int\t\tepisode,\n int\t\tmap,\n int\t\tplayermask,\n skill_t\tskill)"}, {"doc": "P_Init", "kind": "function", "line": 847, "name": "P_Init", "signature": "void P_Init (void)"}, {"doc": "include \"doomstat.h\"", "kind": "function", "line": 42, "name": "P_SpawnMapThing", "signature": "void P_SpawnMapThing (mapthing_t* mthing);"}, {"doc": "Free buffer memory.", "kind": "function", "line": 147, "name": "W_ReleaseLumpNum", "signature": "W_ReleaseLumpNum(lump);"}, {"kind": "function", "line": 160, "name": "memset", "signature": "memset(&null_sector, 0, sizeof(null_sector));"}, {"kind": "function", "line": 161, "name": "I_GetMemoryValue", "signature": "I_GetMemoryValue(0, &null_sector.floorheight, 4);"}, {"kind": "function", "line": 514, "name": "W_ReadLump", "signature": "W_ReadLump(lump, blockmaplump);"}, {"kind": "function", "line": 624, "name": "M_ClearBox", "signature": "M_ClearBox (bbox);"}, {"kind": "function", "line": 629, "name": "M_AddToBox", "signature": "M_AddToBox (bbox, li->v1->x, li->v1->y);"}, {"kind": "function", "line": 694, "name": "fprintf", "signature": "fprintf(stderr, \"PadRejectArray: REJECT lump too short to pad! (%i > %i)\\n\", len, (int) sizeof(rejectpad));"}, {"doc": "Make sure all sounds are stopped before Z_FreeTags.", "kind": "function", "line": 767, "name": "S_Start", "signature": "S_Start ();"}, {"kind": "function", "line": 768, "name": "Z_FreeTags", "signature": "Z_FreeTags (PU_LEVEL, PU_PURGELEVEL-1);"}, {"doc": "UNUSED W_Profile ();", "kind": "function", "line": 772, "name": "P_InitThinkers", "signature": "P_InitThinkers ();"}, {"kind": "function", "line": 779, "name": "DEH_snprintf", "signature": "else DEH_snprintf(lumpname, 9, \"map%i\", map);"}, {"kind": "function", "line": 820, "name": "G_DeathMatchSpawnPlayer", "signature": "G_DeathMatchSpawnPlayer (i);"}, {"doc": "set up world state", "kind": "function", "line": 829, "name": "P_SpawnSpecials", "signature": "P_SpawnSpecials ();"}, {"kind": "function", "line": 849, "name": "P_InitSwitchList", "signature": "P_InitSwitchList ();"}, {"kind": "function", "line": 850, "name": "P_InitPicAnims", "signature": "P_InitPicAnims ();"}, {"kind": "function", "line": 851, "name": "R_InitSprites", "signature": "R_InitSprites (sprnames);"}, {"kind": "macro", "line": 105, "name": "MAX_DEATHMATCH_STARTS", "signature": "#define MAX_DEATHMATCH_STARTS"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Setup a game, startup stuff. ifndef __P_SETUP__ define __P_SETUP__ NOT called by W_Ticker. Fixme.", "id": "progs/doomgeneric/p_setup.h", "kind": "module", "label": "p_setup.h", "language": "h", "sha256": "dc169a9acb66f5fa", "symbol_count": 3, "symbols": [{"doc": "NOT called by W_Ticker. Fixme.", "kind": "function", "line": 27, "name": "P_SetupLevel", "signature": "void P_SetupLevel ( int episode, int map, int playermask, skill_t skill);"}, {"doc": "Called by startup code.", "kind": "function", "line": 35, "name": "P_Init", "signature": "void P_Init (void);"}, {"kind": "macro", "line": 21, "name": "__P_SETUP__", "signature": "#define __P_SETUP__"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: LineOfSight/Visibility checks, uses REJECT Lookup Table. include \"doomdef.h\" include \"i_system.h\" include \"p_local.h\" State. include \"r_state.h\" P_CheckSight", "id": "progs/doomgeneric/p_sight.c", "kind": "module", "label": "p_sight.c", "language": "c", "sha256": "ab78f2dcaed512c3", "symbol_count": 6, "symbols": [{"doc": "P_DivlineSide Returns side 0 (front), 1 (back), or 2 (on).", "kind": "function", "line": 47, "name": "P_DivlineSide", "signature": "int\nP_DivlineSide\n( fixed_t\tx,\n fixed_t\ty,\n divline_t*\tnode )"}, {"doc": "P_InterceptVector2 Returns the fractional intercept point along the first divline. This is only called by the addthings and addlines traversers.", "kind": "function", "line": 101, "name": "P_InterceptVector2", "signature": "fixed_t\nP_InterceptVector2\n( divline_t*\tv2,\n divline_t*\tv1 )"}, {"doc": "P_CrossSubsector Returns true if strace crosses the given subsector successfully.", "kind": "function", "line": 128, "name": "P_CrossSubsector", "signature": "boolean P_CrossSubsector (int num)"}, {"doc": "P_CrossBSPNode Returns true if strace crosses the given node successfully.", "kind": "function", "line": 258, "name": "P_CrossBSPNode", "signature": "boolean P_CrossBSPNode (int bspnum)"}, {"doc": "P_CheckSight Returns true if a straight line between t1 and t2 is unobstructed. Uses REJECT.", "kind": "function", "line": 300, "name": "P_CheckSight", "signature": "boolean\nP_CheckSight\n( mobj_t*\tt1,\n mobj_t*\tt2 )"}, {"kind": "function", "line": 117, "name": "FixedMul", "signature": "FixedMul ( (v2->y - v1->y)>>8 , v1->dx);"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Implements special effects: Texture animation, height or lighting changes according to adjacent sectors, respective utility functions, etc. Line Tag handling. Line and Sector triggers. include include \"doomdef.h\" include \"doomstat.h\" include \"deh_main.h\" include \"i_system.h\"", "id": "progs/doomgeneric/p_spec.c", "kind": "module", "label": "p_spec.c", "language": "c", "sha256": "b041f09aa7dfe6d2", "symbol_count": 57, "symbols": [{"doc": "Animating textures and planes There is another anim_t used in wi_stuff, unrelated.", "kind": "struct", "line": 55, "name": "anim_t"}, {"doc": "source animation definition", "kind": "struct", "line": 68, "name": "animdef_t"}, {"kind": "function", "line": 140, "name": "P_InitPicAnims", "signature": "void P_InitPicAnims (void)"}, {"doc": "getSide() Will return a side_t* given the number of the current sector, the line number, and the side (0/1) that you want.", "kind": "function", "line": 202, "name": "getSide", "signature": "side_t*\ngetSide\n( int\t\tcurrentSector,\n int\t\tline,\n int\t\tside )"}, {"doc": "getSector() Will return a sector_t* given the number of the current sector, the line number and the side (0/1) that you want.", "kind": "function", "line": 218, "name": "getSector", "signature": "sector_t*\ngetSector\n( int\t\tcurrentSector,\n int\t\tline,\n int\t\tside )"}, {"doc": "twoSided() Given the sector number and the line number, it will tell you whether the line is two-sided or not.", "kind": "function", "line": 233, "name": "twoSided", "signature": "int\ntwoSided\n( int\tsector,\n int\tline )"}, {"doc": "getNextSector() Return sector_t * of sector next to current. NULL if not two-sided line", "kind": "function", "line": 249, "name": "getNextSector", "signature": "sector_t*\ngetNextSector\n( line_t*\tline,\n sector_t*\tsec )"}, {"doc": "P_FindLowestFloorSurrounding() FIND LOWEST FLOOR HEIGHT IN SURROUNDING SECTORS", "kind": "function", "line": 269, "name": "P_FindLowestFloorSurrounding", "signature": "fixed_t\tP_FindLowestFloorSurrounding(sector_t* sec)"}, {"doc": "P_FindHighestFloorSurrounding() FIND HIGHEST FLOOR HEIGHT IN SURROUNDING SECTORS", "kind": "function", "line": 296, "name": "P_FindHighestFloorSurrounding", "signature": "fixed_t\tP_FindHighestFloorSurrounding(sector_t *sec)"}, {"doc": "20 adjoining sectors max! define MAX_ADJOINING_SECTORS 20", "kind": "function", "line": 328, "name": "P_FindNextHighestFloor", "signature": "fixed_t\nP_FindNextHighestFloor\n( sector_t* sec,\n int currentheight )"}, {"doc": "FIND LOWEST CEILING IN THE SURROUNDING SECTORS", "kind": "function", "line": 391, "name": "P_FindLowestCeilingSurrounding", "signature": "fixed_t\nP_FindLowestCeilingSurrounding(sector_t* sec)"}, {"doc": "FIND HIGHEST CEILING IN THE SURROUNDING SECTORS", "kind": "function", "line": 417, "name": "P_FindHighestCeilingSurrounding", "signature": "fixed_t\tP_FindHighestCeilingSurrounding(sector_t* sec)"}, {"doc": "RETURN NEXT SECTOR # THAT LINE TAG REFERS TO", "kind": "function", "line": 443, "name": "P_FindSectorFromLineTag", "signature": "int\nP_FindSectorFromLineTag\n( line_t*\tline,\n int\t\tstart )"}, {"doc": "Find minimum light from an adjacent sector", "kind": "function", "line": 463, "name": "P_FindMinSurroundingLight", "signature": "int\nP_FindMinSurroundingLight\n( sector_t*\tsector,\n int\t\tmax )"}, {"doc": "P_CrossSpecialLine - TRIGGER Called every time a thing origin is about to cross a line with a non 0 special.", "kind": "function", "line": 501, "name": "P_CrossSpecialLine", "signature": "void\nP_CrossSpecialLine\n( int\t\tlinenum,\n int\t\tside,\n mobj_t*\tthing )"}, {"doc": "P_ShootSpecialLine - IMPACT SPECIALS Called when a thing shoots a special line.", "kind": "function", "line": 968, "name": "P_ShootSpecialLine", "signature": "void\nP_ShootSpecialLine\n( mobj_t*\tthing,\n line_t*\tline )"}, {"doc": "P_PlayerInSpecialSector Called every tic frame that the player origin is in a special sector", "kind": "function", "line": 1019, "name": "P_PlayerInSpecialSector", "signature": "void P_PlayerInSpecialSector (player_t* player)"}, {"kind": "function", "line": 1092, "name": "P_UpdateSpecials", "signature": "void P_UpdateSpecials (void)"}, {"doc": "define DONUT_FLOORHEIGHT_DEFAULT 0x00000000 define DONUT_FLOORPIC_DEFAULT 0x16", "kind": "function", "line": 1177, "name": "DonutOverrun", "signature": "static void DonutOverrun(fixed_t *s3_floorheight, short *s3_floorpic,\n li..."}, {"doc": "Special Stuff that can not be categorized", "kind": "function", "line": 1257, "name": "EV_DoDonut", "signature": "int EV_DoDonut(line_t*\tline)"}, {"doc": "Parses command line parameters.", "kind": "function", "line": 1374, "name": "P_SpawnSpecials", "signature": "void P_SpawnSpecials (void)"}, {"doc": "Fatal overflow: game crashes at 22 textures", "kind": "function", "line": 360, "name": "I_Error", "signature": "I_Error(\"Sector with more than 22 adjoining sectors. \" \"Vanilla will crash here\");"}, {"doc": "Open Door", "kind": "function", "line": 555, "name": "EV_DoDoor", "signature": "EV_DoDoor(line,vld_open);"}, {"doc": "Raise Floor", "kind": "function", "line": 573, "name": "EV_DoFloor", "signature": "EV_DoFloor(line,raiseFloor);"}, {"doc": "Fast Ceiling Crush & Raise", "kind": "function", "line": 579, "name": "EV_DoCeiling", "signature": "EV_DoCeiling(line,fastCrushAndRaise);"}, {"doc": "Build Stairs", "kind": "function", "line": 585, "name": "EV_BuildStairs", "signature": "EV_BuildStairs(line,build8);"}, {"doc": "PlatDownWaitUp", "kind": "function", "line": 591, "name": "EV_DoPlat", "signature": "EV_DoPlat(line,downWaitUpStay,0);"}, {"doc": "Light Turn On - brightest near", "kind": "function", "line": 597, "name": "EV_LightTurnOn", "signature": "EV_LightTurnOn(line,0);"}, {"doc": "Start Light Strobing", "kind": "function", "line": 615, "name": "EV_StartLightStrobing", "signature": "EV_StartLightStrobing(line);"}, {"doc": "TELEPORT!", "kind": "function", "line": 670, "name": "EV_Teleport", "signature": "EV_Teleport( line, side, thing );"}, {"doc": "EXIT!", "kind": "function", "line": 689, "name": "G_ExitLevel", "signature": "G_ExitLevel ();"}, {"doc": "Platform Stop", "kind": "function", "line": 700, "name": "EV_StopPlat", "signature": "EV_StopPlat(line);"}, {"doc": "Ceiling Crush Stop", "kind": "function", "line": 712, "name": "EV_CeilingCrushStop", "signature": "EV_CeilingCrushStop(line);"}, {"doc": "Turn lights off in sector(tag)", "kind": "function", "line": 730, "name": "EV_TurnTagLightsOff", "signature": "EV_TurnTagLightsOff(line);"}, {"doc": "Secret EXIT", "kind": "function", "line": 772, "name": "G_SecretExitLevel", "signature": "G_SecretExitLevel ();"}, {"kind": "function", "line": 995, "name": "P_ChangeSwitchTexture", "signature": "P_ChangeSwitchTexture(line,0);"}, {"kind": "function", "line": 1161, "name": "S_StartSound", "signature": "S_StartSound(&buttonlist[i].soundorg,sfx_swtchn);"}, {"kind": "function", "line": 1162, "name": "memset", "signature": "memset(&buttonlist[i],0,sizeof(button_t));"}, {"doc": "Dump of needed memory: (fixed_t)0000:0000 and (short)0000:0008 C:\\>debug -d 0:0 DOS 6.22: 0000:0000 (57 92 19 00) F4 06 70 00-(16 00) DOS 7.1: 0000:0000 (9E 0F C9 00) 65 04 70 00-(16 00) Win98: 0000:0000 (00 00 00 00) 65 04 70 00-(16 00) DOSBox under XP: 0000:0000 (00 00 00 F1) ?? ?? ?? 00-(07 00)", "kind": "function", "line": 1225, "name": "M_StrToInt", "signature": "M_StrToInt(myargv[p + 1], &tmp_s3_floorheight);"}, {"kind": "function", "line": 1231, "name": "fprintf", "signature": "fprintf(stderr, \"DonutOverrun: The second parameter for \\\"-donut\\\" \" \"switch should be greater than 0 and less than number \" \"of flats (%d). Using default value (%d) instead. \\n\", numflats, DONUT_FLOO"}, {"kind": "function", "line": 1329, "name": "P_AddThinker", "signature": "P_AddThinker (&floor->thinker);"}, {"doc": "FLICKERING LIGHTS", "kind": "function", "line": 1402, "name": "P_SpawnLightFlash", "signature": "P_SpawnLightFlash (sector);"}, {"doc": "STROBE FAST", "kind": "function", "line": 1407, "name": "P_SpawnStrobeFlash", "signature": "P_SpawnStrobeFlash(sector,FASTDARK,0);"}, {"doc": "GLOWING LIGHT", "kind": "function", "line": 1423, "name": "P_SpawnGlowingLight", "signature": "P_SpawnGlowingLight(sector);"}, {"doc": "DOOR CLOSE IN 30 SECONDS", "kind": "function", "line": 1432, "name": "P_SpawnDoorCloseIn30", "signature": "P_SpawnDoorCloseIn30 (sector);"}, {"doc": "DOOR RAISE IN 5 MINUTES", "kind": "function", "line": 1447, "name": "P_SpawnDoorRaiseIn5Mins", "signature": "P_SpawnDoorRaiseIn5Mins (sector, i);"}, {"kind": "function", "line": 1449, "name": "P_SpawnFireFlicker", "signature": "case 17: P_SpawnFireFlicker(sector);"}, {"doc": "define MAXANIMS 32", "kind": "variable", "line": 79, "name": "anims", "signature": "extern anim_t anims[MAXANIMS];"}, {"kind": "variable", "line": 81, "name": "lastanim", "signature": "extern anim_t* lastanim;"}, {"doc": "Animating line specials define MAXLINEANIMS 64", "kind": "variable", "line": 137, "name": "numlinespecials", "signature": "extern short numlinespecials;"}, {"kind": "variable", "line": 139, "name": "linespeciallist", "signature": "extern line_t* linespeciallist[MAXLINEANIMS];"}, {"kind": "variable", "line": 1184, "name": "numflats", "signature": "extern int numflats;"}, {"kind": "macro", "line": 75, "name": "MAXANIMS", "signature": "#define MAXANIMS"}, {"kind": "macro", "line": 136, "name": "MAXLINEANIMS", "signature": "#define MAXLINEANIMS"}, {"kind": "macro", "line": 327, "name": "MAX_ADJOINING_SECTORS", "signature": "#define MAX_ADJOINING_SECTORS"}, {"kind": "macro", "line": 1174, "name": "DONUT_FLOORHEIGHT_DEFAULT", "signature": "#define DONUT_FLOORHEIGHT_DEFAULT"}, {"kind": "macro", "line": 1176, "name": "DONUT_FLOORPIC_DEFAULT", "signature": "#define DONUT_FLOORPIC_DEFAULT"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: none Implements special effects: Texture animation, height or lighting changes according to adjacent sectors, respective utility functions, etc. ifndef __P_SPEC__ define __P_SPEC__ End-level timer (-TIMER option)", "id": "progs/doomgeneric/p_spec.h", "kind": "module", "label": "p_spec.h", "language": "h", "sha256": "1591dafb9585a4f2", "symbol_count": 96, "symbols": [{"doc": "P_LIGHTS", "kind": "struct", "line": 121, "name": "fireflicker_t"}, {"kind": "struct", "line": 133, "name": "lightflash_t"}, {"kind": "struct", "line": 147, "name": "strobe_t"}, {"kind": "struct", "line": 162, "name": "glow_t"}, {"doc": "P_SWITCH", "kind": "struct", "line": 206, "name": "switchlist_t"}, {"kind": "struct", "line": 224, "name": "button_t"}, {"kind": "struct", "line": 282, "name": "plat_t"}, {"kind": "struct", "line": 340, "name": "vldoor_t"}, {"kind": "struct", "line": 415, "name": "slidedoor_t"}, {"kind": "struct", "line": 431, "name": "slidename_t"}, {"kind": "struct", "line": 446, "name": "slideframe_t"}, {"kind": "struct", "line": 490, "name": "ceiling_t"}, {"kind": "struct", "line": 581, "name": "floormove_t"}, {"doc": "at game start", "kind": "function", "line": 39, "name": "P_InitPicAnims", "signature": "void P_InitPicAnims (void);"}, {"doc": "at map load", "kind": "function", "line": 42, "name": "P_SpawnSpecials", "signature": "void P_SpawnSpecials (void);"}, {"doc": "every tic", "kind": "function", "line": 45, "name": "P_UpdateSpecials", "signature": "void P_UpdateSpecials (void);"}, {"doc": "when needed", "kind": "function", "line": 48, "name": "P_UseSpecialLine", "signature": "boolean P_UseSpecialLine ( mobj_t* thing, line_t* line, int side );"}, {"kind": "function", "line": 53, "name": "P_ShootSpecialLine", "signature": "void P_ShootSpecialLine ( mobj_t* thing, line_t* line );"}, {"kind": "function", "line": 58, "name": "P_CrossSpecialLine", "signature": "void P_CrossSpecialLine ( int linenum, int side, mobj_t* thing );"}, {"kind": "function", "line": 64, "name": "P_PlayerInSpecialSector", "signature": "void P_PlayerInSpecialSector (player_t* player);"}, {"kind": "function", "line": 66, "name": "twoSided", "signature": "int twoSided ( int sector, int line );"}, {"kind": "function", "line": 71, "name": "getSector", "signature": "sector_t* getSector ( int currentSector, int line, int side );"}, {"kind": "function", "line": 77, "name": "getSide", "signature": "side_t* getSide ( int currentSector, int line, int side );"}, {"kind": "function", "line": 83, "name": "P_FindLowestFloorSurrounding", "signature": "fixed_t P_FindLowestFloorSurrounding(sector_t* sec);"}, {"kind": "function", "line": 85, "name": "P_FindHighestFloorSurrounding", "signature": "fixed_t P_FindHighestFloorSurrounding(sector_t* sec);"}, {"kind": "function", "line": 86, "name": "P_FindNextHighestFloor", "signature": "fixed_t P_FindNextHighestFloor ( sector_t* sec, int currentheight );"}, {"kind": "function", "line": 91, "name": "P_FindLowestCeilingSurrounding", "signature": "fixed_t P_FindLowestCeilingSurrounding(sector_t* sec);"}, {"kind": "function", "line": 93, "name": "P_FindHighestCeilingSurrounding", "signature": "fixed_t P_FindHighestCeilingSurrounding(sector_t* sec);"}, {"kind": "function", "line": 94, "name": "P_FindSectorFromLineTag", "signature": "int P_FindSectorFromLineTag ( line_t* line, int start );"}, {"kind": "function", "line": 99, "name": "P_FindMinSurroundingLight", "signature": "int P_FindMinSurroundingLight ( sector_t* sector, int max );"}, {"kind": "function", "line": 104, "name": "getNextSector", "signature": "sector_t* getNextSector ( line_t* line, sector_t* sec );"}, {"doc": "SPECIAL", "kind": "function", "line": 114, "name": "EV_DoDonut", "signature": "int EV_DoDonut(line_t* line);"}, {"doc": "define GLOWSPEED\t\t\t8 define STROBEBRIGHT\t\t5 define FASTDARK\t\t\t15 define SLOWDARK\t\t\t35", "kind": "function", "line": 177, "name": "P_SpawnFireFlicker", "signature": "void P_SpawnFireFlicker (sector_t* sector);"}, {"kind": "function", "line": 179, "name": "T_LightFlash", "signature": "void T_LightFlash (lightflash_t* flash);"}, {"kind": "function", "line": 180, "name": "P_SpawnLightFlash", "signature": "void P_SpawnLightFlash (sector_t* sector);"}, {"kind": "function", "line": 181, "name": "T_StrobeFlash", "signature": "void T_StrobeFlash (strobe_t* flash);"}, {"kind": "function", "line": 182, "name": "P_SpawnStrobeFlash", "signature": "void P_SpawnStrobeFlash ( sector_t* sector, int fastOrSlow, int inSync );"}, {"kind": "function", "line": 188, "name": "EV_StartLightStrobing", "signature": "void EV_StartLightStrobing(line_t* line);"}, {"kind": "function", "line": 190, "name": "EV_TurnTagLightsOff", "signature": "void EV_TurnTagLightsOff(line_t* line);"}, {"kind": "function", "line": 191, "name": "EV_LightTurnOn", "signature": "void EV_LightTurnOn ( line_t* line, int bright );"}, {"kind": "function", "line": 196, "name": "T_Glow", "signature": "void T_Glow(glow_t* g);"}, {"kind": "function", "line": 198, "name": "P_SpawnGlowingLight", "signature": "void P_SpawnGlowingLight(sector_t* sector);"}, {"kind": "function", "line": 247, "name": "P_ChangeSwitchTexture", "signature": "void P_ChangeSwitchTexture ( line_t* line, int useAgain );"}, {"kind": "function", "line": 252, "name": "P_InitSwitchList", "signature": "void P_InitSwitchList(void);"}, {"kind": "function", "line": 307, "name": "T_PlatRaise", "signature": "void T_PlatRaise(plat_t* plat);"}, {"kind": "function", "line": 309, "name": "EV_DoPlat", "signature": "int EV_DoPlat ( line_t* line, plattype_e type, int amount );"}, {"kind": "function", "line": 315, "name": "P_AddActivePlat", "signature": "void P_AddActivePlat(plat_t* plat);"}, {"kind": "function", "line": 317, "name": "P_RemoveActivePlat", "signature": "void P_RemoveActivePlat(plat_t* plat);"}, {"kind": "function", "line": 318, "name": "EV_StopPlat", "signature": "void EV_StopPlat(line_t* line);"}, {"kind": "function", "line": 319, "name": "P_ActivateInStasis", "signature": "void P_ActivateInStasis(int tag);"}, {"doc": "define VDOORSPEED\t\tFRACUNIT*2 define VDOORWAIT\t\t150", "kind": "function", "line": 363, "name": "EV_VerticalDoor", "signature": "void EV_VerticalDoor ( line_t* line, mobj_t* thing );"}, {"kind": "function", "line": 368, "name": "EV_DoDoor", "signature": "int EV_DoDoor ( line_t* line, vldoor_e type );"}, {"kind": "function", "line": 373, "name": "EV_DoLockedDoor", "signature": "int EV_DoLockedDoor ( line_t* line, vldoor_e type, mobj_t* thing );"}, {"kind": "function", "line": 379, "name": "T_VerticalDoor", "signature": "void T_VerticalDoor (vldoor_t* door);"}, {"kind": "function", "line": 381, "name": "P_SpawnDoorCloseIn30", "signature": "void P_SpawnDoorCloseIn30 (sector_t* sec);"}, {"kind": "function", "line": 382, "name": "P_SpawnDoorRaiseIn5Mins", "signature": "void P_SpawnDoorRaiseIn5Mins ( sector_t* sec, int secnum );"}, {"doc": "how many diff. types of anims define MAXSLIDEDOORS\t5", "kind": "function", "line": 463, "name": "P_InitSlidingDoorFrames", "signature": "void P_InitSlidingDoorFrames(void);"}, {"kind": "function", "line": 465, "name": "EV_SlidingDoor", "signature": "void EV_SlidingDoor ( line_t* line, mobj_t* thing );"}, {"kind": "function", "line": 518, "name": "EV_DoCeiling", "signature": "int EV_DoCeiling ( line_t* line, ceiling_e type );"}, {"kind": "function", "line": 523, "name": "T_MoveCeiling", "signature": "void T_MoveCeiling (ceiling_t* ceiling);"}, {"kind": "function", "line": 525, "name": "P_AddActiveCeiling", "signature": "void P_AddActiveCeiling(ceiling_t* c);"}, {"kind": "function", "line": 526, "name": "P_RemoveActiveCeiling", "signature": "void P_RemoveActiveCeiling(ceiling_t* c);"}, {"kind": "function", "line": 527, "name": "EV_CeilingCrushStop", "signature": "int EV_CeilingCrushStop(line_t* line);"}, {"kind": "function", "line": 528, "name": "P_ActivateInStasisCeiling", "signature": "void P_ActivateInStasisCeiling(line_t* line);"}, {"kind": "function", "line": 606, "name": "T_MovePlane", "signature": "result_e T_MovePlane ( sector_t* sector, fixed_t speed, fixed_t dest, boolean crush, int floorOrCeiling, int direction );"}, {"kind": "function", "line": 615, "name": "EV_BuildStairs", "signature": "int EV_BuildStairs ( line_t* line, stair_e type );"}, {"kind": "function", "line": 620, "name": "EV_DoFloor", "signature": "int EV_DoFloor ( line_t* line, floor_e floortype );"}, {"kind": "function", "line": 625, "name": "T_MoveFloor", "signature": "void T_MoveFloor( floormove_t* floor);"}, {"doc": "P_TELEPT", "kind": "function", "line": 631, "name": "EV_Teleport", "signature": "int EV_Teleport ( line_t* line, int side, mobj_t* thing );"}, {"doc": "End-level timer (-TIMER option)", "kind": "variable", "line": 30, "name": "levelTimer", "signature": "extern boolean levelTimer;"}, {"kind": "variable", "line": 31, "name": "levelTimeCount", "signature": "extern int levelTimeCount;"}, {"doc": "1 second, in ticks. define BUTTONTIME 35", "kind": "variable", "line": 245, "name": "buttonlist", "signature": "extern button_t buttonlist[MAXBUTTONS];"}, {"doc": "define PLATWAIT\t\t3 define PLATSPEED\t\tFRACUNIT define MAXPLATS\t\t30", "kind": "variable", "line": 304, "name": "activeplats", "signature": "extern plat_t* activeplats[MAXPLATS];"}, {"doc": "define CEILSPEED\t\tFRACUNIT define CEILWAIT\t\t150 define MAXCEILINGS\t\t30", "kind": "variable", "line": 516, "name": "activeceilings", "signature": "extern ceiling_t* activeceilings[MAXCEILINGS];"}, {"kind": "macro", "line": 24, "name": "__P_SPEC__", "signature": "#define __P_SPEC__"}, {"kind": "macro", "line": 35, "name": "MO_TELEPORTMAN", "signature": "#define MO_TELEPORTMAN"}, {"kind": "macro", "line": 171, "name": "GLOWSPEED", "signature": "#define GLOWSPEED"}, {"kind": "macro", "line": 174, "name": "STROBEBRIGHT", "signature": "#define STROBEBRIGHT"}, {"kind": "macro", "line": 175, "name": "FASTDARK", "signature": "#define FASTDARK"}, {"kind": "macro", "line": 176, "name": "SLOWDARK", "signature": "#define SLOWDARK"}, {"kind": "macro", "line": 238, "name": "MAXSWITCHES", "signature": "#define MAXSWITCHES"}, {"kind": "macro", "line": 241, "name": "MAXBUTTONS", "signature": "#define MAXBUTTONS"}, {"kind": "macro", "line": 244, "name": "BUTTONTIME", "signature": "#define BUTTONTIME"}, {"kind": "macro", "line": 298, "name": "PLATWAIT", "signature": "#define PLATWAIT"}, {"kind": "macro", "line": 302, "name": "PLATSPEED", "signature": "#define PLATSPEED"}, {"kind": "macro", "line": 303, "name": "MAXPLATS", "signature": "#define MAXPLATS"}, {"kind": "macro", "line": 358, "name": "VDOORSPEED", "signature": "#define VDOORSPEED"}, {"kind": "macro", "line": 362, "name": "VDOORWAIT", "signature": "#define VDOORWAIT"}, {"kind": "macro", "line": 456, "name": "SNUMFRAMES", "signature": "#define SNUMFRAMES"}, {"kind": "macro", "line": 457, "name": "SDOORWAIT", "signature": "#define SDOORWAIT"}, {"kind": "macro", "line": 459, "name": "SWAITTICS", "signature": "#define SWAITTICS"}, {"kind": "macro", "line": 462, "name": "MAXSLIDEDOORS", "signature": "#define MAXSLIDEDOORS"}, {"kind": "macro", "line": 508, "name": "CEILSPEED", "signature": "#define CEILSPEED"}, {"kind": "macro", "line": 514, "name": "CEILWAIT", "signature": "#define CEILWAIT"}, {"kind": "macro", "line": 515, "name": "MAXCEILINGS", "signature": "#define MAXCEILINGS"}, {"kind": "macro", "line": 594, "name": "FLOORSPEED", "signature": "#define FLOORSPEED"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Switches, buttons. Two-state animation. Exits. include include \"i_system.h\" include \"deh_main.h\" include \"doomdef.h\" include \"p_local.h\" include \"g_game.h\" include \"s_sound.h\"", "id": "progs/doomgeneric/p_switch.c", "kind": "module", "label": "p_switch.c", "language": "c", "sha256": "aa7a7579c18c9f6b", "symbol_count": 10, "symbols": [{"doc": "P_InitSwitchList Only called at game initialization.", "kind": "function", "line": 101, "name": "P_InitSwitchList", "signature": "void P_InitSwitchList(void)"}, {"doc": "Start a button counting down till it turns off.", "kind": "function", "line": 148, "name": "P_StartButton", "signature": "void\nP_StartButton\n( line_t*\tline,\n bwhere_e\tw,\n int\t\ttexture,\n int\t\ttime )"}, {"doc": "Function that changes wall texture. Tell it if switch is ok to use again (1=yes, it's a button).", "kind": "function", "line": 194, "name": "P_ChangeSwitchTexture", "signature": "void\nP_ChangeSwitchTexture\n( line_t*\tline,\n int \t\tuseAgain )"}, {"doc": "P_UseSpecialLine Called when a thing uses a special line. Only the front sides of lines are usable.", "kind": "function", "line": 269, "name": "P_UseSpecialLine", "signature": "boolean\nP_UseSpecialLine\n( mobj_t*\tthing,\n line_t*\tline,\n int\t\tside )"}, {"kind": "function", "line": 131, "name": "I_Error", "signature": "I_Error(\"Can't find switch texture '%s'!\", alphSwitchList[i].name1);"}, {"kind": "function", "line": 222, "name": "S_StartSound", "signature": "S_StartSound(buttonlist->soundorg,sound);"}, {"kind": "function", "line": 332, "name": "EV_VerticalDoor", "signature": "EV_VerticalDoor (line, thing);"}, {"kind": "function", "line": 356, "name": "G_ExitLevel", "signature": "G_ExitLevel ();"}, {"kind": "function", "line": 428, "name": "G_SecretExitLevel", "signature": "G_SecretExitLevel ();"}, {"doc": "Light Turn On", "kind": "function", "line": 634, "name": "EV_LightTurnOn", "signature": "EV_LightTurnOn(line,255);"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Teleportation. include \"doomdef.h\" include \"doomstat.h\" include \"s_sound.h\" include \"p_local.h\" Data.", "id": "progs/doomgeneric/p_telept.c", "kind": "module", "label": "p_telept.c", "language": "c", "sha256": "e141e0f53b6082ff", "symbol_count": 2, "symbols": [{"doc": "TELEPORTATION", "kind": "function", "line": 41, "name": "EV_Teleport", "signature": "int\nEV_Teleport\n( line_t*\tline,\n int\t\tside,\n mobj_t*\tthing )"}, {"kind": "function", "line": 113, "name": "S_StartSound", "signature": "S_StartSound (fog, sfx_telept);"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Archiving: SaveGame I/O. Thinker, Ticker. include \"z_zone.h\" include \"p_local.h\" include \"doomstat.h\"", "id": "progs/doomgeneric/p_tick.c", "kind": "module", "label": "p_tick.c", "language": "c", "sha256": "65839ffe4064f4c7", "symbol_count": 9, "symbols": [{"doc": "P_InitThinkers", "kind": "function", "line": 46, "name": "P_InitThinkers", "signature": "void P_InitThinkers (void)"}, {"doc": "P_AddThinker Adds a new thinker at the end of the list.", "kind": "function", "line": 58, "name": "P_AddThinker", "signature": "void P_AddThinker (thinker_t* thinker)"}, {"doc": "P_RemoveThinker Deallocation is lazy -- it will not actually be freed until its thinking turn comes up.", "kind": "function", "line": 73, "name": "P_RemoveThinker", "signature": "void P_RemoveThinker (thinker_t* thinker)"}, {"doc": "P_AllocateThinker Allocates memory and adds a new thinker at the end of the list.", "kind": "function", "line": 85, "name": "P_AllocateThinker", "signature": "void P_AllocateThinker (thinker_t*\tthinker)"}, {"doc": "P_RunThinkers", "kind": "function", "line": 94, "name": "P_RunThinkers", "signature": "void P_RunThinkers (void)"}, {"doc": "P_Ticker", "kind": "function", "line": 122, "name": "P_Ticker", "signature": "void P_Ticker (void)"}, {"kind": "function", "line": 106, "name": "Z_Free", "signature": "Z_Free (currentthinker);"}, {"kind": "function", "line": 146, "name": "P_UpdateSpecials", "signature": "P_UpdateSpecials ();"}, {"kind": "function", "line": 147, "name": "P_RespawnSpecials", "signature": "P_RespawnSpecials ();"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: ? ifndef __P_TICK__ define __P_TICK__ Called by C_Ticker, can call G_PlayerExited. Carries out all thinking of monsters and players.", "id": "progs/doomgeneric/p_tick.h", "kind": "module", "label": "p_tick.h", "language": "h", "sha256": "adce8e2c4a03fce9", "symbol_count": 2, "symbols": [{"doc": "Called by C_Ticker, can call G_PlayerExited. Carries out all thinking of monsters and players.", "kind": "function", "line": 29, "name": "P_Ticker", "signature": "void P_Ticker (void);"}, {"kind": "macro", "line": 21, "name": "__P_TICK__", "signature": "#define __P_TICK__"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Player related stuff. Bobbing POV/weapon, movement. Pending weapon. include \"doomdef.h\" include \"d_event.h\" include \"p_local.h\" include \"doomstat.h\"", "id": "progs/doomgeneric/p_user.c", "kind": "module", "label": "p_user.c", "language": "c", "sha256": "0383e83abda3b092", "symbol_count": 12, "symbols": [{"doc": "P_Thrust Moves the given origin along a given angle.", "kind": "function", "line": 51, "name": "P_Thrust", "signature": "void\nP_Thrust\n( player_t*\tplayer,\n angle_t\tangle,\n fixed_t\tmove )"}, {"doc": "P_CalcHeight Calculate the walking / running height adjustment", "kind": "function", "line": 70, "name": "P_CalcHeight", "signature": "void P_CalcHeight (player_t* player)"}, {"doc": "P_MovePlayer", "kind": "function", "line": 141, "name": "P_MovePlayer", "signature": "void P_MovePlayer (player_t* player)"}, {"doc": "P_DeathThink Fall on your face when dying. Decrease POV height to floor height. define ANG5 \t(ANG90/18)", "kind": "function", "line": 174, "name": "P_DeathThink", "signature": "void P_DeathThink (player_t* player)"}, {"doc": "P_PlayerThink", "kind": "function", "line": 229, "name": "P_PlayerThink", "signature": "void P_PlayerThink (player_t* player)"}, {"kind": "function", "line": 82, "name": "FixedMul", "signature": "FixedMul (player->mo->momx, player->mo->momx) + FixedMul (player->mo->momy,player->mo->momy);"}, {"kind": "function", "line": 162, "name": "P_SetMobjState", "signature": "P_SetMobjState (player->mo, S_PLAY_RUN1);"}, {"kind": "function", "line": 179, "name": "P_MovePsprites", "signature": "P_MovePsprites (player);"}, {"kind": "function", "line": 319, "name": "P_UseLines", "signature": "P_UseLines (player);"}, {"kind": "macro", "line": 34, "name": "INVERSECOLORMAP", "signature": "#define INVERSECOLORMAP"}, {"kind": "macro", "line": 42, "name": "MAXBOB", "signature": "#define MAXBOB"}, {"kind": "macro", "line": 173, "name": "ANG5", "signature": "#define ANG5"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: BSP traversal, handling of LineSegs for rendering. include \"doomdef.h\" include \"m_bbox.h\" include \"i_system.h\" include \"r_main.h\" include \"r_plane.h\" include \"r_things.h\"", "id": "progs/doomgeneric/r_bsp.c", "kind": "module", "label": "r_bsp.c", "language": "c", "sha256": "cc5a300f388f7372", "symbol_count": 12, "symbols": [{"doc": "ClipWallSegment Clips the given range of columns and includes it in the new clip list.", "kind": "struct", "line": 73, "name": "cliprange_t"}, {"doc": "R_ClearDrawSegs", "kind": "function", "line": 61, "name": "R_ClearDrawSegs", "signature": "void R_ClearDrawSegs (void)"}, {"doc": "R_ClipSolidWallSegment Does handle solid walls, e.g. single sided LineDefs (middle texture) that entirely block the view.", "kind": "function", "line": 96, "name": "R_ClipSolidWallSegment", "signature": "void\nR_ClipSolidWallSegment\n( int\t\t\tfirst,\n int\t\t\tlast )"}, {"doc": "R_ClipPassWallSegment Clips the given range of columns, but does not includes it in the clip list. Does handle windows, e.g. LineDefs with upper and lower texture.", "kind": "function", "line": 189, "name": "R_ClipPassWallSegment", "signature": "void\nR_ClipPassWallSegment\n( int\tfirst,\n int\tlast )"}, {"doc": "R_ClearClipSegs", "kind": "function", "line": 238, "name": "R_ClearClipSegs", "signature": "void R_ClearClipSegs (void)"}, {"doc": "R_AddLine Clips the given segment and adds any visible pieces to the line list.", "kind": "function", "line": 252, "name": "R_AddLine", "signature": "void R_AddLine (seg_t*\tline)"}, {"kind": "function", "line": 372, "name": "R_CheckBBox", "signature": "boolean R_CheckBBox (fixed_t*\tbspcoord)"}, {"doc": "R_Subsector Determine floor/ceiling planes. Add sprites of things in sector. Draw one or more line segments.", "kind": "function", "line": 490, "name": "R_Subsector", "signature": "void R_Subsector (int num)"}, {"doc": "RenderBSPNode Renders all subsectors below a given node, traversing subtree recursively. Just call with BSP root.", "kind": "function", "line": 545, "name": "R_RenderBSPNode", "signature": "void R_RenderBSPNode (int bspnum)"}, {"kind": "function", "line": 48, "name": "R_StoreWallRange", "signature": "void R_StoreWallRange ( int start, int stop );"}, {"kind": "function", "line": 527, "name": "R_AddSprites", "signature": "R_AddSprites (frontsector);"}, {"kind": "macro", "line": 79, "name": "MAXSEGS", "signature": "#define MAXSEGS"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Refresh module, BSP traversal and handling. ifndef __R_BSP__ define __R_BSP__", "id": "progs/doomgeneric/r_bsp.h", "kind": "module", "label": "r_bsp.h", "language": "h", "sha256": "9ef3d6d28d4becf2", "symbol_count": 21, "symbols": [{"kind": "function", "line": 48, "name": "void", "signature": "typedef void (*drawfunc_t) (int start, int stop);"}, {"doc": "BSP?", "kind": "function", "line": 54, "name": "R_ClearClipSegs", "signature": "void R_ClearClipSegs (void);"}, {"kind": "function", "line": 55, "name": "R_ClearDrawSegs", "signature": "void R_ClearDrawSegs (void);"}, {"kind": "function", "line": 56, "name": "R_RenderBSPNode", "signature": "void R_RenderBSPNode (int bspnum);"}, {"doc": "ifndef __R_BSP__ define __R_BSP__", "kind": "variable", "line": 22, "name": "curline", "signature": "extern seg_t* curline;"}, {"kind": "variable", "line": 26, "name": "sidedef", "signature": "extern side_t* sidedef;"}, {"kind": "variable", "line": 27, "name": "linedef", "signature": "extern line_t* linedef;"}, {"kind": "variable", "line": 28, "name": "frontsector", "signature": "extern sector_t* frontsector;"}, {"kind": "variable", "line": 29, "name": "backsector", "signature": "extern sector_t* backsector;"}, {"kind": "variable", "line": 30, "name": "rw_x", "signature": "extern int rw_x;"}, {"kind": "variable", "line": 32, "name": "rw_stopx", "signature": "extern int rw_stopx;"}, {"kind": "variable", "line": 33, "name": "segtextured", "signature": "extern boolean segtextured;"}, {"doc": "false if the back side is the same plane", "kind": "variable", "line": 37, "name": "markfloor", "signature": "extern boolean markfloor;"}, {"kind": "variable", "line": 38, "name": "markceiling", "signature": "extern boolean markceiling;"}, {"kind": "variable", "line": 39, "name": "skymap", "signature": "extern boolean skymap;"}, {"kind": "variable", "line": 41, "name": "drawsegs", "signature": "extern drawseg_t drawsegs[MAXDRAWSEGS];"}, {"kind": "variable", "line": 43, "name": "ds_p", "signature": "extern drawseg_t* ds_p;"}, {"kind": "variable", "line": 44, "name": "hscalelight", "signature": "extern lighttable_t** hscalelight;"}, {"kind": "variable", "line": 46, "name": "vscalelight", "signature": "extern lighttable_t** vscalelight;"}, {"kind": "variable", "line": 47, "name": "dscalelight", "signature": "extern lighttable_t** dscalelight;"}, {"kind": "macro", "line": 21, "name": "__R_BSP__", "signature": "#define __R_BSP__"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Preparation of data for rendering, generation of lookups, caching, retrieval by name. include include \"deh_main.h\" include \"i_swap.h\" include \"i_system.h\" include \"z_zone.h\" include \"w_wad.h\" include \"doomdef.h\"", "id": "progs/doomgeneric/r_data.c", "kind": "module", "label": "r_data.c", "language": "c", "sha256": "08cfa4755cf5eab2", "symbol_count": 27, "symbols": [{"kind": "struct", "line": 106, "name": "texture_s"}, {"doc": "A single patch from a texture definition, basically a rectangular area within the texture rectangle.", "kind": "struct", "line": 89, "name": "texpatch_t"}, {"doc": "A maptexturedef_t describes a rectangular texture, which is composed of one or more mappatch_t structures that arrange graphic patches.", "kind": "type_alias", "line": 103, "name": "texture_t", "signature": "typedef struct texture_s texture_t;"}, {"doc": "R_DrawColumnInCache Clip and draw a column from a patch into a cached post.", "kind": "function", "line": 185, "name": "R_DrawColumnInCache", "signature": "void\nR_DrawColumnInCache\n( column_t*\tpatch,\n byte*\t\tcache,\n int\t\toriginy,\n int\t\tcacheheight )"}, {"doc": "R_GenerateComposite Using the texture definition, the composite texture is created from the patches, and each column is cached.", "kind": "function", "line": 226, "name": "R_GenerateComposite", "signature": "void R_GenerateComposite (int texnum)"}, {"doc": "R_GenerateLookup", "kind": "function", "line": 294, "name": "R_GenerateLookup", "signature": "void R_GenerateLookup (int texnum)"}, {"doc": "R_GetColumn", "kind": "function", "line": 382, "name": "R_GetColumn", "signature": "byte*\nR_GetColumn\n( int\t\ttex,\n int\t\tcol )"}, {"kind": "function", "line": 402, "name": "GenerateTextureHashTable", "signature": "static void GenerateTextureHashTable(void)"}, {"doc": "R_InitTextures Initializes the texture list with the textures from the world map.", "kind": "function", "line": 451, "name": "R_InitTextures", "signature": "void R_InitTextures (void)"}, {"doc": "R_InitFlats", "kind": "function", "line": 633, "name": "R_InitFlats", "signature": "void R_InitFlats (void)"}, {"doc": "R_InitSpriteLumps Finds the width and hoffset of all sprites in the wad, so the sprite does not need to be cached completely just for having the header info ready during rendering.", "kind": "function", "line": 655, "name": "R_InitSpriteLumps", "signature": "void R_InitSpriteLumps (void)"}, {"doc": "R_InitColormaps", "kind": "function", "line": 685, "name": "R_InitColormaps", "signature": "void R_InitColormaps (void)"}, {"doc": "R_InitData Locates all the lumps that will be used by all views Must be called after W_Init.", "kind": "function", "line": 703, "name": "R_InitData", "signature": "void R_InitData (void)"}, {"doc": "R_FlatNumForName Retrieval, get a flat number for a flat name.", "kind": "function", "line": 720, "name": "R_FlatNumForName", "signature": "int R_FlatNumForName (char* name)"}, {"doc": "R_CheckTextureNumForName Check whether texture is available. Filter out NoTexture indicator.", "kind": "function", "line": 744, "name": "R_CheckTextureNumForName", "signature": "int\tR_CheckTextureNumForName (char *name)"}, {"doc": "R_TextureNumForName Calls R_CheckTextureNumForName, aborts with error message.", "kind": "function", "line": 775, "name": "R_TextureNumForName", "signature": "int\tR_TextureNumForName (char* name)"}, {"kind": "function", "line": 799, "name": "R_PrecacheLevel", "signature": "void R_PrecacheLevel (void)"}, {"doc": "Now that the texture has been built in column cache, it is purgable from zone memory.", "kind": "function", "line": 286, "name": "Z_ChangeTag", "signature": "Z_ChangeTag (block, PU_CACHE);"}, {"kind": "function", "line": 321, "name": "memset", "signature": "memset (patchcount, 0, texture->width);"}, {"kind": "function", "line": 351, "name": "printf", "signature": "printf (\"R_GenerateLookup: column without a patch (%s)\\n\", texture->name);"}, {"kind": "function", "line": 365, "name": "I_Error", "signature": "I_Error (\"R_GenerateLookup: texture %i is >64k\", texnum);"}, {"kind": "function", "line": 372, "name": "Z_Free", "signature": "Z_Free(patchcount);"}, {"kind": "function", "line": 495, "name": "M_StringCopy", "signature": "M_StringCopy(name, name_p + i * 8, sizeof(name));"}, {"kind": "function", "line": 498, "name": "W_ReleaseLumpName", "signature": "W_ReleaseLumpName(DEH_String(\"PNAMES\"));"}, {"kind": "function", "line": 572, "name": "Z_Malloc", "signature": "Z_Malloc (sizeof(texture_t) + sizeof(texpatch_t)*(SHORT(mtexture->patchcount)-1), PU_STATIC, 0);"}, {"kind": "function", "line": 579, "name": "memcpy", "signature": "memcpy (texture->name, mtexture->name, sizeof(texture->name));"}, {"kind": "function", "line": 836, "name": "W_CacheLumpNum", "signature": "W_CacheLumpNum(lump, PU_CACHE);"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Refresh module, data I/O, caching, retrieval of graphics by name. ifndef __R_DATA__ define __R_DATA__ include \"r_defs.h\" include \"r_state.h\" Retrieve column data for span blitting.", "id": "progs/doomgeneric/r_data.h", "kind": "module", "label": "r_data.h", "language": "h", "sha256": "744ac5db9fa50f89", "symbol_count": 7, "symbols": [{"doc": "Retrieve column data for span blitting.", "kind": "function", "line": 29, "name": "R_GetColumn", "signature": "byte* R_GetColumn ( int tex, int col );"}, {"doc": "I/O, setting up the stuff.", "kind": "function", "line": 36, "name": "R_InitData", "signature": "void R_InitData (void);"}, {"kind": "function", "line": 37, "name": "R_PrecacheLevel", "signature": "void R_PrecacheLevel (void);"}, {"doc": "Retrieval. Floor/ceiling opaque texture tiles, lookup by name. For animation?", "kind": "function", "line": 43, "name": "R_FlatNumForName", "signature": "int R_FlatNumForName (char* name);"}, {"doc": "Called by P_Ticker for switches and animations, returns the texture number for the texture name.", "kind": "function", "line": 48, "name": "R_TextureNumForName", "signature": "int R_TextureNumForName (char *name);"}, {"kind": "function", "line": 49, "name": "R_CheckTextureNumForName", "signature": "int R_CheckTextureNumForName (char *name);"}, {"kind": "macro", "line": 22, "name": "__R_DATA__", "signature": "#define __R_DATA__"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Refresh/rendering module, shared data struct definitions. ifndef __R_DEFS__ define __R_DEFS__ Screenwidth. include \"doomdef.h\" Some more or less basic data types we depend on. include \"m_fixed.h\"", "id": "progs/doomgeneric/r_defs.h", "kind": "module", "label": "r_defs.h", "language": "h", "sha256": "5658e81dc2069f4b", "symbol_count": 25, "symbols": [{"doc": "Forward of LineDefs, for Sectors.", "kind": "struct", "line": 76, "name": "line_s"}, {"kind": "struct", "line": 175, "name": "line_s"}, {"doc": "A SubSector. References a Sector. Basically, this is a list of LineSegs, indicating the visible walls that define (all or some) sides of a convex BSP leaf.", "kind": "struct", "line": 223, "name": "subsector_s"}, {"doc": "?", "kind": "struct", "line": 306, "name": "drawseg_s"}, {"doc": "A vissprite_t is a thing that will be drawn during a refresh. I.e. a sprite object that is partly visible.", "kind": "struct", "line": 338, "name": "vissprite_s"}, {"doc": "Your plain vanilla vertex. Note: transformed values not buffered locally, like some DOOM-alikes (\"wt\", \"WebView\") did.", "kind": "struct", "line": 67, "name": "vertex_t"}, {"doc": "Each sector has a degenmobj_t in its center for sound origin purposes. I suppose this does not handle sound from moving objects (doppler), because position is prolly just buffered, not updated.", "kind": "struct", "line": 84, "name": "degenmobj_t"}, {"doc": "The SECTORS record, at runtime. Stores things/mobjs.", "kind": "struct", "line": 97, "name": "sector_t"}, {"kind": "struct", "line": 140, "name": "side_t"}, {"doc": "The LineSeg.", "kind": "struct", "line": 236, "name": "seg_t"}, {"doc": "BSP node.", "kind": "struct", "line": 261, "name": "node_t"}, {"doc": "Sprites are patches with a special naming convention so they can be recognized by R_InitSprites. The base name is NNNNFx or NNNNFxFx, with x indicating the rotation, x = 0, 1-7. The sprite and frame specified by a thing_t is range checked at run time. A sprite is a patch_t that is assumed to represent a three dimensional object and may have multiple rotations pre drawn. Horizontal flipping is used to save space, thus NNNNF2F5 defines a mirrored patch. Some sprites will only have one picture used for all views: NNNNF0", "kind": "struct", "line": 390, "name": "spriteframe_t"}, {"doc": "A sprite definition: a number of animation frames.", "kind": "struct", "line": 411, "name": "spritedef_t"}, {"doc": "Now what is a visplane, anyway?", "kind": "struct", "line": 423, "name": "visplane_t"}, {"kind": "type_alias", "line": 172, "name": "v1", "signature": "typedef struct line_s { // Vertices, from v1 to v2. vertex_t* v1;"}, {"doc": "A SubSector. References a Sector. Basically, this is a list of LineSegs, indicating the visible walls that define (all or some) sides of a convex BSP leaf.", "kind": "type_alias", "line": 223, "name": "sector", "signature": "typedef struct subsector_s { sector_t* sector;"}, {"doc": "This could be wider for >8 bit display. Indeed, true color support is posibble precalculating 24bpp lightmap/colormap LUT. from darkening PLAYPAL to all black. Could even us emore than 32 levels.", "kind": "type_alias", "line": 298, "name": "lighttable_t", "signature": "typedef byte lighttable_t;"}, {"doc": "?", "kind": "type_alias", "line": 306, "name": "curline", "signature": "typedef struct drawseg_s { seg_t* curline;"}, {"doc": "A vissprite_t is a thing that will be drawn during a refresh. I.e. a sprite object that is partly visible.", "kind": "type_alias", "line": 338, "name": "prev", "signature": "typedef struct vissprite_s { // Doubly linked list. struct vissprite_s* prev;"}, {"kind": "macro", "line": 21, "name": "__R_DEFS__", "signature": "#define __R_DEFS__"}, {"kind": "macro", "line": 46, "name": "SIL_NONE", "signature": "#define SIL_NONE"}, {"kind": "macro", "line": 47, "name": "SIL_BOTTOM", "signature": "#define SIL_BOTTOM"}, {"kind": "macro", "line": 48, "name": "SIL_TOP", "signature": "#define SIL_TOP"}, {"kind": "macro", "line": 49, "name": "SIL_BOTH", "signature": "#define SIL_BOTH"}, {"kind": "macro", "line": 50, "name": "MAXDRAWSEGS", "signature": "#define MAXDRAWSEGS"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: The actual span/column drawing functions. Here find the main potential for optimization, e.g. inline assembly, different algorithms. include \"doomdef.h\" include \"deh_main.h\" include \"i_system.h\" include \"z_zone.h\" include \"w_wad.h\"", "id": "progs/doomgeneric/r_draw.c", "kind": "module", "label": "r_draw.c", "language": "c", "sha256": "586163db8981a9de", "symbol_count": 27, "symbols": [{"doc": "A column is a vertical slice/span from a wall texture that, given the DOOM style restrictions on the view orientation, will always have constant z depth. Thus a special case loop for very fast rendering can be used. It has also been used with Wolfenstein 3D.", "kind": "function", "line": 102, "name": "R_DrawColumn", "signature": "void R_DrawColumn (void)"}, {"doc": "UNUSED. Loop unrolled. if 0", "kind": "function", "line": 152, "name": "R_DrawColumn", "signature": "void R_DrawColumn (void)"}, {"doc": "endif", "kind": "function", "line": 206, "name": "R_DrawColumnLow", "signature": "void R_DrawColumnLow (void)"}, {"doc": "Framebuffer postprocessing. Creates a fuzzy image by copying pixels from adjacent ones to left and right. Used with an all black colormap, this could create the SHADOW effect, i.e. spectres and invisible players.", "kind": "function", "line": 283, "name": "R_DrawFuzzColumn", "signature": "void R_DrawFuzzColumn (void)"}, {"doc": "low detail mode version", "kind": "function", "line": 341, "name": "R_DrawFuzzColumnLow", "signature": "void R_DrawFuzzColumnLow (void)"}, {"kind": "function", "line": 423, "name": "R_DrawTranslatedColumn", "signature": "void R_DrawTranslatedColumn (void)"}, {"kind": "function", "line": 467, "name": "R_DrawTranslatedColumnLow", "signature": "void R_DrawTranslatedColumnLow (void)"}, {"doc": "R_InitTranslationTables Creates the translation tables to map the green color ramp to gray, brown, red. Assumes a given structure of the PLAYPAL. Could be read from a lump instead.", "kind": "function", "line": 530, "name": "R_InitTranslationTables", "signature": "void R_InitTranslationTables (void)"}, {"doc": "Draws the actual span.", "kind": "function", "line": 590, "name": "R_DrawSpan", "signature": "void R_DrawSpan (void)"}, {"doc": "UNUSED. Loop unrolled by 4. if 0", "kind": "function", "line": 646, "name": "R_DrawSpan", "signature": "void R_DrawSpan (void)"}, {"doc": "Again..", "kind": "function", "line": 719, "name": "R_DrawSpanLow", "signature": "void R_DrawSpanLow (void)"}, {"doc": "R_InitBuffer Creats lookup tables that avoid multiplies and other hazzles for getting the framebuffer address of a pixel to draw.", "kind": "function", "line": 776, "name": "R_InitBuffer", "signature": "void\nR_InitBuffer\n( int\t\twidth,\n int\t\theight )"}, {"doc": "R_FillBackScreen Fills the back screen with a pattern for variable screen sizes Also draws a beveled edge.", "kind": "function", "line": 812, "name": "R_FillBackScreen", "signature": "void R_FillBackScreen (void)"}, {"doc": "Copy a screen buffer.", "kind": "function", "line": 918, "name": "R_VideoErase", "signature": "void\nR_VideoErase\n( unsigned\tofs,\n int\t\tcount )"}, {"doc": "R_DrawViewBorder Draws the border around the view for different size windows?", "kind": "function", "line": 941, "name": "R_DrawViewBorder", "signature": "void R_DrawViewBorder (void)"}, {"kind": "function", "line": 228, "name": "I_Error", "signature": "I_Error (\"R_DrawColumn: %i to %i at %i\", dc_yl, dc_yh, dc_x);"}, {"kind": "function", "line": 835, "name": "Z_Free", "signature": "Z_Free(background_buffer);"}, {"kind": "function", "line": 862, "name": "memcpy", "signature": "memcpy (dest, src+((y&63)<<6), 64);"}, {"doc": "Draw screen and bezel; this is done to a separate screen buffer.", "kind": "function", "line": 874, "name": "V_UseBuffer", "signature": "V_UseBuffer(background_buffer);"}, {"kind": "function", "line": 880, "name": "V_DrawPatch", "signature": "V_DrawPatch(viewwindowx+x, viewwindowy-8, patch);"}, {"kind": "function", "line": 910, "name": "V_RestoreBuffer", "signature": "V_RestoreBuffer();"}, {"doc": "?", "kind": "function", "line": 972, "name": "V_MarkRect", "signature": "V_MarkRect (0,0,SCREENWIDTH, SCREENHEIGHT-SBARHEIGHT);"}, {"kind": "macro", "line": 41, "name": "MAXWIDTH", "signature": "#define MAXWIDTH"}, {"kind": "macro", "line": 42, "name": "MAXHEIGHT", "signature": "#define MAXHEIGHT"}, {"kind": "macro", "line": 45, "name": "SBARHEIGHT", "signature": "#define SBARHEIGHT"}, {"kind": "macro", "line": 257, "name": "FUZZTABLE", "signature": "#define FUZZTABLE"}, {"kind": "macro", "line": 258, "name": "FUZZOFF", "signature": "#define FUZZOFF"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: System specific interface stuff. ifndef __R_DRAW__ define __R_DRAW__", "id": "progs/doomgeneric/r_draw.h", "kind": "module", "label": "r_draw.h", "language": "h", "sha256": "62caa694f8c831e5", "symbol_count": 32, "symbols": [{"doc": "The span blitting interface. Hook in assembler or system specific BLT here.", "kind": "function", "line": 40, "name": "R_DrawColumn", "signature": "void R_DrawColumn (void);"}, {"kind": "function", "line": 41, "name": "R_DrawColumnLow", "signature": "void R_DrawColumnLow (void);"}, {"doc": "The Spectre/Invisibility effect.", "kind": "function", "line": 44, "name": "R_DrawFuzzColumn", "signature": "void R_DrawFuzzColumn (void);"}, {"kind": "function", "line": 45, "name": "R_DrawFuzzColumnLow", "signature": "void R_DrawFuzzColumnLow (void);"}, {"doc": "Draw with color translation tables, for player sprite rendering, Green/Red/Blue/Indigo shirts.", "kind": "function", "line": 50, "name": "R_DrawTranslatedColumn", "signature": "void R_DrawTranslatedColumn (void);"}, {"kind": "function", "line": 51, "name": "R_DrawTranslatedColumnLow", "signature": "void R_DrawTranslatedColumnLow (void);"}, {"kind": "function", "line": 52, "name": "R_VideoErase", "signature": "void R_VideoErase ( unsigned ofs, int count );"}, {"doc": "Span blitting for rows, floor/ceiling. No Sepctre effect needed.", "kind": "function", "line": 78, "name": "R_DrawSpan", "signature": "void R_DrawSpan (void);"}, {"doc": "Low resolution mode, 160x200?", "kind": "function", "line": 81, "name": "R_DrawSpanLow", "signature": "void R_DrawSpanLow (void);"}, {"kind": "function", "line": 82, "name": "R_InitBuffer", "signature": "void R_InitBuffer ( int width, int height );"}, {"doc": "Initialize color translation tables, for player rendering etc.", "kind": "function", "line": 92, "name": "R_InitTranslationTables", "signature": "void R_InitTranslationTables (void);"}, {"doc": "Rendering function.", "kind": "function", "line": 97, "name": "R_FillBackScreen", "signature": "void R_FillBackScreen (void);"}, {"doc": "If the view size is not full screen, draws a border around it.", "kind": "function", "line": 100, "name": "R_DrawViewBorder", "signature": "void R_DrawViewBorder (void);"}, {"doc": "ifndef __R_DRAW__ define __R_DRAW__", "kind": "variable", "line": 22, "name": "dc_colormap", "signature": "extern lighttable_t* dc_colormap;"}, {"kind": "variable", "line": 27, "name": "dc_x", "signature": "extern int dc_x;"}, {"kind": "variable", "line": 28, "name": "dc_yl", "signature": "extern int dc_yl;"}, {"kind": "variable", "line": 29, "name": "dc_yh", "signature": "extern int dc_yh;"}, {"kind": "variable", "line": 30, "name": "dc_iscale", "signature": "extern fixed_t dc_iscale;"}, {"kind": "variable", "line": 31, "name": "dc_texturemid", "signature": "extern fixed_t dc_texturemid;"}, {"doc": "first pixel in a column", "kind": "variable", "line": 34, "name": "dc_source", "signature": "extern byte* dc_source;"}, {"kind": "variable", "line": 57, "name": "ds_y", "signature": "extern int ds_y;"}, {"kind": "variable", "line": 59, "name": "ds_x1", "signature": "extern int ds_x1;"}, {"kind": "variable", "line": 60, "name": "ds_x2", "signature": "extern int ds_x2;"}, {"kind": "variable", "line": 61, "name": "ds_colormap", "signature": "extern lighttable_t* ds_colormap;"}, {"kind": "variable", "line": 63, "name": "ds_xfrac", "signature": "extern fixed_t ds_xfrac;"}, {"kind": "variable", "line": 65, "name": "ds_yfrac", "signature": "extern fixed_t ds_yfrac;"}, {"kind": "variable", "line": 66, "name": "ds_xstep", "signature": "extern fixed_t ds_xstep;"}, {"kind": "variable", "line": 67, "name": "ds_ystep", "signature": "extern fixed_t ds_ystep;"}, {"doc": "start of a 64*64 tile image", "kind": "variable", "line": 70, "name": "ds_source", "signature": "extern byte* ds_source;"}, {"kind": "variable", "line": 71, "name": "translationtables", "signature": "extern byte* translationtables;"}, {"kind": "variable", "line": 73, "name": "dc_translation", "signature": "extern byte* dc_translation;"}, {"kind": "macro", "line": 21, "name": "__R_DRAW__", "signature": "#define __R_DRAW__"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Refresh (R_*) module, global header. All the rendering/drawing stuff is here. ifndef __R_LOCAL__ define __R_LOCAL__ Binary Angles, sine/cosine/atan lookups. include \"tables.h\" Screen size related parameters. include \"doomdef.h\" Include the refresh/render data structs. include \"r_data.h\"", "id": "progs/doomgeneric/r_local.h", "kind": "module", "label": "r_local.h", "language": "h", "sha256": "e957f7e74dcbff58", "symbol_count": 1, "symbols": [{"kind": "macro", "line": 21, "name": "__R_LOCAL__", "signature": "#define __R_LOCAL__"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Rendering main loop and setup functions, utility functions (BSP, geometry, trigonometry). See tables.c, too. include include include \"doomdef.h\" include \"d_loop.h\"", "id": "progs/doomgeneric/r_main.c", "kind": "module", "label": "r_main.c", "language": "c", "sha256": "b2b6cb1251089365", "symbol_count": 35, "symbols": [{"doc": "R_AddPointToBox Expand a given bbox so that it encloses a given point.", "kind": "function", "line": 122, "name": "R_AddPointToBox", "signature": "void\nR_AddPointToBox\n( int\t\tx,\n int\t\ty,\n fixed_t*\tbox )"}, {"doc": "R_PointOnSide Traverse BSP (sub) tree, check point against partition plane. Returns side 0 (front) or 1 (back).", "kind": "function", "line": 145, "name": "R_PointOnSide", "signature": "int\nR_PointOnSide\n( fixed_t\tx,\n fixed_t\ty,\n node_t*\tnode )"}, {"kind": "function", "line": 196, "name": "R_PointOnSegSide", "signature": "int\nR_PointOnSegSide\n( fixed_t\tx,\n fixed_t\ty,\n seg_t*\tline )"}, {"kind": "function", "line": 271, "name": "R_PointToAngle", "signature": "angle_t\nR_PointToAngle\n( fixed_t\tx,\n fixed_t\ty )"}, {"kind": "function", "line": 359, "name": "R_PointToAngle2", "signature": "angle_t\nR_PointToAngle2\n( fixed_t\tx1,\n fixed_t\ty1,\n fixed_t\tx2,\n fixed_t\ty2 )"}, {"kind": "function", "line": 373, "name": "R_PointToDist", "signature": "fixed_t\nR_PointToDist\n( fixed_t\tx,\n fixed_t\ty )"}, {"doc": "R_InitPointToAngle", "kind": "function", "line": 422, "name": "R_InitPointToAngle", "signature": "void R_InitPointToAngle (void)"}, {"doc": "R_ScaleFromGlobalAngle Returns the texture mapping scale for the current line (horizontal span) at the given angle. rw_distance must be calculated first.", "kind": "function", "line": 449, "name": "R_ScaleFromGlobalAngle", "signature": "fixed_t R_ScaleFromGlobalAngle (angle_t visangle)"}, {"doc": "R_InitTables", "kind": "function", "line": 505, "name": "R_InitTables", "signature": "void R_InitTables (void)"}, {"doc": "R_InitTextureMapping", "kind": "function", "line": 540, "name": "R_InitTextureMapping", "signature": "void R_InitTextureMapping (void)"}, {"doc": "R_InitLightTables Only inits the zlight table, because the scalelight table changes with view size. define DISTMAP\t\t2", "kind": "function", "line": 609, "name": "R_InitLightTables", "signature": "void R_InitLightTables (void)"}, {"kind": "function", "line": 651, "name": "R_SetViewSize", "signature": "void\nR_SetViewSize\n( int\t\tblocks,\n int\t\tdetail )"}, {"doc": "R_ExecuteSetViewSize", "kind": "function", "line": 667, "name": "R_ExecuteSetViewSize", "signature": "void R_ExecuteSetViewSize (void)"}, {"doc": "R_Init", "kind": "function", "line": 764, "name": "R_Init", "signature": "void R_Init (void)"}, {"doc": "R_PointInSubsector", "kind": "function", "line": 793, "name": "R_PointInSubsector", "signature": "subsector_t*\nR_PointInSubsector\n( fixed_t\tx,\n fixed_t\ty )"}, {"doc": "R_SetupFrame", "kind": "function", "line": 823, "name": "R_SetupFrame", "signature": "void R_SetupFrame (player_t* player)"}, {"doc": "R_RenderView", "kind": "function", "line": 863, "name": "R_RenderPlayerView", "signature": "void R_RenderPlayerView (player_t* player)"}, {"kind": "function", "line": 106, "name": "void", "signature": "void (*colfunc) (void);"}, {"kind": "function", "line": 712, "name": "R_InitBuffer", "signature": "R_InitBuffer (scaledviewwidth, viewheight);"}, {"kind": "function", "line": 769, "name": "R_InitData", "signature": "R_InitData ();"}, {"kind": "function", "line": 770, "name": "printf", "signature": "printf (\".\");"}, {"kind": "function", "line": 778, "name": "R_InitPlanes", "signature": "R_InitPlanes ();"}, {"kind": "function", "line": 782, "name": "R_InitSkyMap", "signature": "R_InitSkyMap ();"}, {"kind": "function", "line": 783, "name": "R_InitTranslationTables", "signature": "R_InitTranslationTables ();"}, {"doc": "Clear buffers.", "kind": "function", "line": 868, "name": "R_ClearClipSegs", "signature": "R_ClearClipSegs ();"}, {"kind": "function", "line": 869, "name": "R_ClearDrawSegs", "signature": "R_ClearDrawSegs ();"}, {"kind": "function", "line": 870, "name": "R_ClearPlanes", "signature": "R_ClearPlanes ();"}, {"kind": "function", "line": 871, "name": "R_ClearSprites", "signature": "R_ClearSprites ();"}, {"doc": "check for new console commands.", "kind": "function", "line": 874, "name": "NetUpdate", "signature": "NetUpdate ();"}, {"doc": "The head node is the last node output.", "kind": "function", "line": 877, "name": "R_RenderBSPNode", "signature": "R_RenderBSPNode (numnodes-1);"}, {"kind": "function", "line": 881, "name": "R_DrawPlanes", "signature": "R_DrawPlanes ();"}, {"kind": "function", "line": 886, "name": "R_DrawMasked", "signature": "R_DrawMasked ();"}, {"kind": "variable", "line": 54, "name": "walllights", "signature": "extern lighttable_t** walllights;"}, {"kind": "macro", "line": 43, "name": "FIELDOFVIEW", "signature": "#define FIELDOFVIEW"}, {"kind": "macro", "line": 608, "name": "DISTMAP", "signature": "#define DISTMAP"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: System specific interface stuff. ifndef __R_MAIN__ define __R_MAIN__ include \"d_player.h\" include \"r_data.h\" POV related.", "id": "progs/doomgeneric/r_main.h", "kind": "module", "label": "r_main.h", "language": "h", "sha256": "f5a8f537d531e9aa", "symbol_count": 36, "symbols": [{"doc": "Function pointers to switch refresh/drawing functions. Used to select shadow mode etc.", "kind": "function", "line": 92, "name": "void", "signature": "extern void (*colfunc) (void);"}, {"doc": "Utility functions.", "kind": "function", "line": 102, "name": "R_PointOnSide", "signature": "int R_PointOnSide ( fixed_t x, fixed_t y, node_t* node );"}, {"kind": "function", "line": 107, "name": "R_PointOnSegSide", "signature": "int R_PointOnSegSide ( fixed_t x, fixed_t y, seg_t* line );"}, {"kind": "function", "line": 113, "name": "R_PointToAngle", "signature": "angle_t R_PointToAngle ( fixed_t x, fixed_t y );"}, {"kind": "function", "line": 118, "name": "R_PointToAngle2", "signature": "angle_t R_PointToAngle2 ( fixed_t x1, fixed_t y1, fixed_t x2, fixed_t y2 );"}, {"kind": "function", "line": 125, "name": "R_PointToDist", "signature": "fixed_t R_PointToDist ( fixed_t x, fixed_t y );"}, {"kind": "function", "line": 130, "name": "R_ScaleFromGlobalAngle", "signature": "fixed_t R_ScaleFromGlobalAngle (angle_t visangle);"}, {"kind": "function", "line": 133, "name": "R_PointInSubsector", "signature": "subsector_t* R_PointInSubsector ( fixed_t x, fixed_t y );"}, {"kind": "function", "line": 138, "name": "R_AddPointToBox", "signature": "void R_AddPointToBox ( int x, int y, fixed_t* box );"}, {"doc": "Called by G_Drawer.", "kind": "function", "line": 152, "name": "R_RenderPlayerView", "signature": "void R_RenderPlayerView (player_t *player);"}, {"doc": "Called by startup code.", "kind": "function", "line": 155, "name": "R_Init", "signature": "void R_Init (void);"}, {"doc": "Called by M_Responder.", "kind": "function", "line": 158, "name": "R_SetViewSize", "signature": "void R_SetViewSize (int blocks, int detail);"}, {"doc": "POV related.", "kind": "variable", "line": 32, "name": "viewcos", "signature": "extern fixed_t viewcos;"}, {"kind": "variable", "line": 33, "name": "viewsin", "signature": "extern fixed_t viewsin;"}, {"kind": "variable", "line": 34, "name": "viewwindowx", "signature": "extern int viewwindowx;"}, {"kind": "variable", "line": 36, "name": "viewwindowy", "signature": "extern int viewwindowy;"}, {"kind": "variable", "line": 37, "name": "centerx", "signature": "extern int centerx;"}, {"kind": "variable", "line": 41, "name": "centery", "signature": "extern int centery;"}, {"kind": "variable", "line": 42, "name": "centerxfrac", "signature": "extern fixed_t centerxfrac;"}, {"kind": "variable", "line": 44, "name": "centeryfrac", "signature": "extern fixed_t centeryfrac;"}, {"kind": "variable", "line": 45, "name": "projection", "signature": "extern fixed_t projection;"}, {"kind": "variable", "line": 46, "name": "validcount", "signature": "extern int validcount;"}, {"kind": "variable", "line": 48, "name": "linecount", "signature": "extern int linecount;"}, {"kind": "variable", "line": 50, "name": "loopcount", "signature": "extern int loopcount;"}, {"kind": "variable", "line": 70, "name": "scalelightfixed", "signature": "extern lighttable_t* scalelightfixed[MAXLIGHTSCALE];"}, {"kind": "variable", "line": 72, "name": "extralight", "signature": "extern int extralight;"}, {"kind": "variable", "line": 74, "name": "fixedcolormap", "signature": "extern lighttable_t* fixedcolormap;"}, {"doc": "Blocky/low detail mode. B remove this? 0 = high, 1 = low", "kind": "variable", "line": 85, "name": "detailshift", "signature": "extern int detailshift;"}, {"kind": "macro", "line": 21, "name": "__R_MAIN__", "signature": "#define __R_MAIN__"}, {"kind": "macro", "line": 61, "name": "LIGHTLEVELS", "signature": "#define LIGHTLEVELS"}, {"kind": "macro", "line": 62, "name": "LIGHTSEGSHIFT", "signature": "#define LIGHTSEGSHIFT"}, {"kind": "macro", "line": 63, "name": "MAXLIGHTSCALE", "signature": "#define MAXLIGHTSCALE"}, {"kind": "macro", "line": 65, "name": "LIGHTSCALESHIFT", "signature": "#define LIGHTSCALESHIFT"}, {"kind": "macro", "line": 66, "name": "MAXLIGHTZ", "signature": "#define MAXLIGHTZ"}, {"kind": "macro", "line": 67, "name": "LIGHTZSHIFT", "signature": "#define LIGHTZSHIFT"}, {"kind": "macro", "line": 79, "name": "NUMCOLORMAPS", "signature": "#define NUMCOLORMAPS"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Here is a core component: drawing the floors and ceilings, while maintaining a per column clipping list only. Moreover, the sky areas have to be determined. include include include \"i_system.h\" include \"z_zone.h\" include \"w_wad.h\" include \"doomdef.h\" include \"doomstat.h\"", "id": "progs/doomgeneric/r_plane.c", "kind": "module", "label": "r_plane.c", "language": "c", "sha256": "e0255f3159ab6248", "symbol_count": 14, "symbols": [{"doc": "R_InitPlanes Only at game startup.", "kind": "function", "line": 94, "name": "R_InitPlanes", "signature": "void R_InitPlanes (void)"}, {"doc": "R_MapPlane Uses global vars: planeheight ds_source basexscale baseyscale viewx viewy BASIC PRIMITIVE", "kind": "function", "line": 113, "name": "R_MapPlane", "signature": "void\nR_MapPlane\n( int\t\ty,\n int\t\tx1,\n int\t\tx2 )"}, {"doc": "R_ClearPlanes At begining of frame.", "kind": "function", "line": 178, "name": "R_ClearPlanes", "signature": "void R_ClearPlanes (void)"}, {"doc": "R_FindPlane", "kind": "function", "line": 210, "name": "R_FindPlane", "signature": "visplane_t*\nR_FindPlane\n( fixed_t\theight,\n int\t\tpicnum,\n int\t\tlightlevel )"}, {"doc": "R_CheckPlane", "kind": "function", "line": 258, "name": "R_CheckPlane", "signature": "visplane_t*\nR_CheckPlane\n( visplane_t*\tpl,\n int\t\tstart,\n int\t\tstop )"}, {"doc": "R_MakeSpans", "kind": "function", "line": 323, "name": "R_MakeSpans", "signature": "void\nR_MakeSpans\n( int\t\tx,\n int\t\tt1,\n int\t\tb1,\n int\t\tt2,\n int\t\tb2 )"}, {"doc": "R_DrawPlanes At the end of each frame.", "kind": "function", "line": 360, "name": "R_DrawPlanes", "signature": "void R_DrawPlanes (void)"}, {"kind": "function", "line": 130, "name": "I_Error", "signature": "I_Error (\"R_MapPlane: %i, %i at %i\",x1,x2,y);"}, {"doc": "high or low detail", "kind": "function", "line": 170, "name": "spanfunc", "signature": "spanfunc ();"}, {"doc": "texture calculation", "kind": "function", "line": 194, "name": "memset", "signature": "memset (cachedheight, 0, sizeof(cachedheight));"}, {"kind": "function", "line": 410, "name": "colfunc", "signature": "colfunc ();"}, {"kind": "function", "line": 443, "name": "W_ReleaseLumpNum", "signature": "W_ReleaseLumpNum(lumpnum);"}, {"kind": "macro", "line": 45, "name": "MAXVISPLANES", "signature": "#define MAXVISPLANES"}, {"kind": "macro", "line": 52, "name": "MAXOPENINGS", "signature": "#define MAXOPENINGS"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Refresh, visplane stuff (floor, ceilings). ifndef __R_PLANE__ define __R_PLANE__ include \"r_data.h\" Visplane related.", "id": "progs/doomgeneric/r_plane.h", "kind": "module", "label": "r_plane.h", "language": "h", "sha256": "e0ba6538fe6a6c18", "symbol_count": 16, "symbols": [{"kind": "function", "line": 30, "name": "void", "signature": "typedef void (*planefunction_t) (int top, int bottom);"}, {"kind": "function", "line": 42, "name": "R_InitPlanes", "signature": "void R_InitPlanes (void);"}, {"kind": "function", "line": 44, "name": "R_ClearPlanes", "signature": "void R_ClearPlanes (void);"}, {"kind": "function", "line": 45, "name": "R_MapPlane", "signature": "void R_MapPlane ( int y, int x1, int x2 );"}, {"kind": "function", "line": 51, "name": "R_MakeSpans", "signature": "void R_MakeSpans ( int x, int t1, int b1, int t2, int b2 );"}, {"kind": "function", "line": 59, "name": "R_DrawPlanes", "signature": "void R_DrawPlanes (void);"}, {"kind": "function", "line": 61, "name": "R_FindPlane", "signature": "visplane_t* R_FindPlane ( fixed_t height, int picnum, int lightlevel );"}, {"kind": "function", "line": 67, "name": "R_CheckPlane", "signature": "visplane_t* R_CheckPlane ( visplane_t* pl, int start, int stop );"}, {"doc": "Visplane related.", "kind": "variable", "line": 29, "name": "lastopening", "signature": "extern short* lastopening;"}, {"kind": "variable", "line": 33, "name": "floorfunc", "signature": "extern planefunction_t floorfunc;"}, {"kind": "variable", "line": 35, "name": "ceilingfunc_t", "signature": "extern planefunction_t ceilingfunc_t;"}, {"kind": "variable", "line": 36, "name": "floorclip", "signature": "extern short floorclip[SCREENWIDTH];"}, {"kind": "variable", "line": 38, "name": "ceilingclip", "signature": "extern short ceilingclip[SCREENWIDTH];"}, {"kind": "variable", "line": 39, "name": "yslope", "signature": "extern fixed_t yslope[SCREENHEIGHT];"}, {"kind": "variable", "line": 41, "name": "distscale", "signature": "extern fixed_t distscale[SCREENWIDTH];"}, {"kind": "macro", "line": 21, "name": "__R_PLANE__", "signature": "#define __R_PLANE__"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: All the clipping: columns, horizontal spans, sky columns. include include include \"i_system.h\" include \"doomdef.h\" include \"doomstat.h\"", "id": "progs/doomgeneric/r_segs.c", "kind": "module", "label": "r_segs.c", "language": "c", "sha256": "c1c44705e69098df", "symbol_count": 9, "symbols": [{"doc": "R_RenderMaskedSegRange", "kind": "function", "line": 95, "name": "R_RenderMaskedSegRange", "signature": "void\nR_RenderMaskedSegRange\n( drawseg_t*\tds,\n int\t\tx1,\n int\t\tx2 )"}, {"doc": "R_RenderSegLoop Draws zero, one, or two textures (and possibly a masked texture) for walls. Can draw or mark the starting pixel of floor and ceiling textures. CALLED: CORE LOOPING ROUTINE. define HEIGHTBITS\t\t12 define HEIGHTUNIT\t\t(1< include include \"deh_main.h\" include \"doomdef.h\" include \"i_swap.h\" include \"i_system.h\"", "id": "progs/doomgeneric/r_things.c", "kind": "module", "label": "r_things.c", "language": "c", "sha256": "25f6fa3972c6e364", "symbol_count": 23, "symbols": [{"kind": "struct", "line": 48, "name": "maskdraw_t"}, {"doc": "R_InstallSpriteLump Local function for R_InitSprites.", "kind": "function", "line": 99, "name": "R_InstallSpriteLump", "signature": "void\nR_InstallSpriteLump\n( int\t\tlump,\n unsigned\tframe,\n unsigned\trotation,\n boolean\tflipped )"}, {"doc": "R_InitSpriteDefs Pass a null terminated list of sprite names (4 chars exactly) to be used. Builds the sprite rotation matrixes to account for horizontally flipped sprites. Will report an error if the lumps are inconsistant. Only called at startup. Sprite lump names are 4 characters for the actor, a letter for the frame, and a number for the rotation. A sprite that is flippable will have an additional letter/number appended. The rotation character can be 0 to signify no rotations.", "kind": "function", "line": 171, "name": "R_InitSpriteDefs", "signature": "void R_InitSpriteDefs (char** namelist)"}, {"doc": "R_InitSprites Called at program start.", "kind": "function", "line": 291, "name": "R_InitSprites", "signature": "void R_InitSprites (char** namelist)"}, {"doc": "R_ClearSprites Called at frame start.", "kind": "function", "line": 309, "name": "R_ClearSprites", "signature": "void R_ClearSprites (void)"}, {"kind": "function", "line": 319, "name": "R_NewVisSprite", "signature": "vissprite_t* R_NewVisSprite (void)"}, {"kind": "function", "line": 342, "name": "R_DrawMaskedColumn", "signature": "void R_DrawMaskedColumn (column_t* column)"}, {"doc": "R_DrawVisSprite mfloorclip and mceilingclip should also be set.", "kind": "function", "line": 388, "name": "R_DrawVisSprite", "signature": "void\nR_DrawVisSprite\n( vissprite_t*\t\tvis,\n int\t\t\tx1,\n int\t\t\tx2 )"}, {"doc": "R_ProjectSprite Generates a vissprite for a thing if it might be visible.", "kind": "function", "line": 444, "name": "R_ProjectSprite", "signature": "void R_ProjectSprite (mobj_t* thing)"}, {"doc": "R_AddSprites During BSP traversal, this adds sprites by sector.", "kind": "function", "line": 605, "name": "R_AddSprites", "signature": "void R_AddSprites (sector_t* sec)"}, {"doc": "R_DrawPSprite", "kind": "function", "line": 638, "name": "R_DrawPSprite", "signature": "void R_DrawPSprite (pspdef_t* psp)"}, {"doc": "R_DrawPlayerSprites", "kind": "function", "line": 738, "name": "R_DrawPlayerSprites", "signature": "void R_DrawPlayerSprites (void)"}, {"kind": "function", "line": 777, "name": "R_SortVisSprites", "signature": "void R_SortVisSprites (void)"}, {"kind": "function", "line": 837, "name": "R_DrawSprite", "signature": "void R_DrawSprite (vissprite_t* spr)"}, {"doc": "R_DrawMasked", "kind": "function", "line": 951, "name": "R_DrawMasked", "signature": "void R_DrawMasked (void)"}, {"kind": "function", "line": 203, "name": "memset", "signature": "memset (sprtemp,-1, sizeof(sprtemp));"}, {"doc": "no rotations were found for that frame at all", "kind": "function", "line": 247, "name": "I_Error", "signature": "I_Error (\"R_InitSprites: No patches found \" \"for %s frame %c\", spritename, frame+'A');"}, {"kind": "function", "line": 269, "name": "Z_Malloc", "signature": "Z_Malloc (maxframe * sizeof(spriteframe_t), PU_STATIC, NULL);"}, {"kind": "function", "line": 270, "name": "memcpy", "signature": "memcpy (sprites[i].spriteframes, sprtemp, maxframe*sizeof(spriteframe_t));"}, {"doc": "Drawn by either R_DrawColumn or (SHADOW) R_DrawFuzzColumn.", "kind": "function", "line": 374, "name": "colfunc", "signature": "colfunc ();"}, {"kind": "function", "line": 430, "name": "LONG", "signature": "LONG(patch->columnofs[texturecolumn]));"}, {"kind": "macro", "line": 37, "name": "MINZ", "signature": "#define MINZ"}, {"kind": "macro", "line": 41, "name": "BASEYCENTER", "signature": "#define BASEYCENTER"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Rendering of moving objects, sprites. ifndef __R_THINGS__ define __R_THINGS__ define MAXVISSPRITES \t128", "id": "progs/doomgeneric/r_things.h", "kind": "module", "label": "r_things.h", "language": "h", "sha256": "7ba63986c43016ff", "symbol_count": 22, "symbols": [{"kind": "function", "line": 44, "name": "R_DrawMaskedColumn", "signature": "void R_DrawMaskedColumn (column_t* column);"}, {"kind": "function", "line": 47, "name": "R_SortVisSprites", "signature": "void R_SortVisSprites (void);"}, {"kind": "function", "line": 50, "name": "R_AddSprites", "signature": "void R_AddSprites (sector_t* sec);"}, {"kind": "function", "line": 52, "name": "R_AddPSprites", "signature": "void R_AddPSprites (void);"}, {"kind": "function", "line": 53, "name": "R_DrawSprites", "signature": "void R_DrawSprites (void);"}, {"kind": "function", "line": 54, "name": "R_InitSprites", "signature": "void R_InitSprites (char** namelist);"}, {"kind": "function", "line": 55, "name": "R_ClearSprites", "signature": "void R_ClearSprites (void);"}, {"kind": "function", "line": 56, "name": "R_DrawMasked", "signature": "void R_DrawMasked (void);"}, {"kind": "function", "line": 57, "name": "R_ClipVisSprite", "signature": "void R_ClipVisSprite ( vissprite_t* vis, int xl, int xh );"}, {"doc": "define MAXVISSPRITES \t128", "kind": "variable", "line": 26, "name": "vissprites", "signature": "extern vissprite_t vissprites[MAXVISSPRITES];"}, {"kind": "variable", "line": 28, "name": "vissprite_p", "signature": "extern vissprite_t* vissprite_p;"}, {"kind": "variable", "line": 29, "name": "vsprsortedhead", "signature": "extern vissprite_t vsprsortedhead;"}, {"doc": "Constant arrays used for psprite clipping and initializing clipping.", "kind": "variable", "line": 33, "name": "negonearray", "signature": "extern short negonearray[SCREENWIDTH];"}, {"kind": "variable", "line": 34, "name": "screenheightarray", "signature": "extern short screenheightarray[SCREENWIDTH];"}, {"doc": "vars for R_DrawMaskedColumn", "kind": "variable", "line": 37, "name": "mfloorclip", "signature": "extern short* mfloorclip;"}, {"kind": "variable", "line": 38, "name": "mceilingclip", "signature": "extern short* mceilingclip;"}, {"kind": "variable", "line": 39, "name": "spryscale", "signature": "extern fixed_t spryscale;"}, {"kind": "variable", "line": 40, "name": "sprtopscreen", "signature": "extern fixed_t sprtopscreen;"}, {"kind": "variable", "line": 41, "name": "pspritescale", "signature": "extern fixed_t pspritescale;"}, {"kind": "variable", "line": 43, "name": "pspriteiscale", "signature": "extern fixed_t pspriteiscale;"}, {"kind": "macro", "line": 21, "name": "__R_THINGS__", "signature": "#define __R_THINGS__"}, {"kind": "macro", "line": 22, "name": "MAXVISSPRITES", "signature": "#define MAXVISSPRITES"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: none include include include \"i_sound.h\" include \"i_system.h\" include \"doomfeatures.h\" include \"deh_str.h\" include \"doomstat.h\" include \"doomtype.h\" include \"sounds.h\"", "id": "progs/doomgeneric/s_sound.c", "kind": "module", "label": "s_sound.c", "language": "c", "sha256": "96a3c82f2c151a63", "symbol_count": 42, "symbols": [{"kind": "struct", "line": 66, "name": "channel_t"}, {"doc": "Initializes sound stuff, including volume Sets channels, SFX and music volume, allocates channel buffer, sets S_sfx lookup.", "kind": "function", "line": 113, "name": "S_Init", "signature": "void S_Init(int sfxVolume, int musicVolume)"}, {"kind": "function", "line": 145, "name": "S_Shutdown", "signature": "void S_Shutdown(void)"}, {"kind": "function", "line": 151, "name": "S_StopChannel", "signature": "static void S_StopChannel(int cnum)"}, {"doc": "Per level startup code. Kills playing sounds at start of level, determines music if any, changes music.", "kind": "function", "line": 190, "name": "S_Start", "signature": "void S_Start(void)"}, {"kind": "function", "line": 242, "name": "S_StopSound", "signature": "void S_StopSound(mobj_t *origin)"}, {"doc": "S_GetChannel : If none available, return -1. Otherwise channel #.", "kind": "function", "line": 261, "name": "S_GetChannel", "signature": "static int S_GetChannel(mobj_t *origin, sfxinfo_t *sfxinfo)"}, {"doc": "Changes volume and stereo-separation variables from the norm of a sound effect to be played. If the sound is not audible, returns a 0. Otherwise, modifies parameters and returns 1.", "kind": "function", "line": 322, "name": "S_AdjustSoundParams", "signature": "static int S_AdjustSoundParams(mobj_t *listener, mobj_t *source,\n i..."}, {"kind": "function", "line": 390, "name": "S_StartSound", "signature": "void S_StartSound(void *origin_p, int sfx_id)"}, {"doc": "Stop and resume music, during game PAUSE.", "kind": "function", "line": 481, "name": "S_PauseSound", "signature": "void S_PauseSound(void)"}, {"kind": "function", "line": 490, "name": "S_ResumeSound", "signature": "void S_ResumeSound(void)"}, {"doc": "Updates music & sounds", "kind": "function", "line": 503, "name": "S_UpdateSounds", "signature": "void S_UpdateSounds(mobj_t *listener)"}, {"kind": "function", "line": 570, "name": "S_SetMusicVolume", "signature": "void S_SetMusicVolume(int volume)"}, {"kind": "function", "line": 581, "name": "S_SetSfxVolume", "signature": "void S_SetSfxVolume(int volume)"}, {"doc": "Starts some music with the music id found in sounds.h.", "kind": "function", "line": 595, "name": "S_StartMusic", "signature": "void S_StartMusic(int m_id)"}, {"kind": "function", "line": 600, "name": "S_ChangeMusic", "signature": "void S_ChangeMusic(int musicnum, int looping)"}, {"kind": "function", "line": 648, "name": "S_MusicPlaying", "signature": "boolean S_MusicPlaying(void)"}, {"kind": "function", "line": 653, "name": "S_StopMusic", "signature": "void S_StopMusic(void)"}, {"kind": "function", "line": 117, "name": "I_PrecacheSounds", "signature": "I_PrecacheSounds(S_sfx, NUMSFX);"}, {"kind": "function", "line": 142, "name": "I_AtExit", "signature": "I_AtExit(S_Shutdown, true);"}, {"kind": "function", "line": 148, "name": "I_ShutdownSound", "signature": "I_ShutdownSound();"}, {"kind": "function", "line": 149, "name": "I_ShutdownMusic", "signature": "I_ShutdownMusic();"}, {"kind": "function", "line": 165, "name": "I_StopSound", "signature": "I_StopSound(c->handle);"}, {"kind": "function", "line": 406, "name": "I_Error", "signature": "I_Error(\"Bad sfx #: %d\", sfx_id);"}, {"kind": "function", "line": 486, "name": "I_PauseSong", "signature": "I_PauseSong();"}, {"kind": "function", "line": 495, "name": "I_ResumeSong", "signature": "I_ResumeSong();"}, {"kind": "function", "line": 512, "name": "I_UpdateSound", "signature": "I_UpdateSound();"}, {"kind": "function", "line": 557, "name": "I_UpdateSoundParams", "signature": "I_UpdateSoundParams(c->handle, volume, sep);"}, {"kind": "function", "line": 578, "name": "I_SetMusicVolume", "signature": "I_SetMusicVolume(volume);"}, {"kind": "function", "line": 636, "name": "M_snprintf", "signature": "M_snprintf(namebuf, sizeof(namebuf), \"d_%s\", DEH_String(music->name));"}, {"kind": "function", "line": 644, "name": "I_PlaySong", "signature": "I_PlaySong(handle, looping);"}, {"kind": "function", "line": 651, "name": "I_MusicIsPlaying", "signature": "return I_MusicIsPlaying();"}, {"kind": "function", "line": 662, "name": "I_StopSong", "signature": "I_StopSong();"}, {"kind": "function", "line": 664, "name": "I_UnRegisterSong", "signature": "I_UnRegisterSong(mus_playing->handle);"}, {"kind": "function", "line": 665, "name": "W_ReleaseLumpNum", "signature": "W_ReleaseLumpNum(mus_playing->lumpnum);"}, {"kind": "macro", "line": 43, "name": "S_CLIPPING_DIST", "signature": "#define S_CLIPPING_DIST"}, {"kind": "macro", "line": 51, "name": "S_CLOSE_DIST", "signature": "#define S_CLOSE_DIST"}, {"kind": "macro", "line": 55, "name": "S_ATTENUATOR", "signature": "#define S_ATTENUATOR"}, {"kind": "macro", "line": 59, "name": "S_STEREO_SWING", "signature": "#define S_STEREO_SWING"}, {"kind": "macro", "line": 61, "name": "NORM_PITCH", "signature": "#define NORM_PITCH"}, {"kind": "macro", "line": 63, "name": "NORM_PRIORITY", "signature": "#define NORM_PRIORITY"}, {"kind": "macro", "line": 64, "name": "NORM_SEP", "signature": "#define NORM_SEP"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: The not so system specific sound interface. ifndef __S_SOUND__ define __S_SOUND__ include \"p_mobj.h\" include \"sounds.h\" Initializes sound stuff, including volume Sets channels, SFX and music volume, allocates channel buffer, sets S_sfx lookup.", "id": "progs/doomgeneric/s_sound.h", "kind": "module", "label": "s_sound.h", "language": "h", "sha256": "fb0681ca34c42fe0", "symbol_count": 16, "symbols": [{"doc": "Initializes sound stuff, including volume Sets channels, SFX and music volume, allocates channel buffer, sets S_sfx lookup.", "kind": "function", "line": 31, "name": "S_Init", "signature": "void S_Init(int sfxVolume, int musicVolume);"}, {"doc": "Shut down sound", "kind": "function", "line": 36, "name": "S_Shutdown", "signature": "void S_Shutdown(void);"}, {"doc": "Per level startup code. Kills playing sounds at start of level, determines music if any, changes music.", "kind": "function", "line": 46, "name": "S_Start", "signature": "void S_Start(void);"}, {"doc": "Start sound for thing at using from sounds.h", "kind": "function", "line": 53, "name": "S_StartSound", "signature": "void S_StartSound(void *origin, int sound_id);"}, {"doc": "Stop sound for thing at ", "kind": "function", "line": 57, "name": "S_StopSound", "signature": "void S_StopSound(mobj_t *origin);"}, {"doc": "Start music using from sounds.h", "kind": "function", "line": 61, "name": "S_StartMusic", "signature": "void S_StartMusic(int music_id);"}, {"doc": "Start music using from sounds.h, and set whether looping", "kind": "function", "line": 65, "name": "S_ChangeMusic", "signature": "void S_ChangeMusic(int music_id, int looping);"}, {"doc": "query if music is playing", "kind": "function", "line": 68, "name": "S_MusicPlaying", "signature": "boolean S_MusicPlaying(void);"}, {"doc": "Stops the music fer sure.", "kind": "function", "line": 71, "name": "S_StopMusic", "signature": "void S_StopMusic(void);"}, {"doc": "Stop and resume music, during game PAUSE.", "kind": "function", "line": 74, "name": "S_PauseSound", "signature": "void S_PauseSound(void);"}, {"kind": "function", "line": 75, "name": "S_ResumeSound", "signature": "void S_ResumeSound(void);"}, {"doc": "Updates music & sounds", "kind": "function", "line": 81, "name": "S_UpdateSounds", "signature": "void S_UpdateSounds(mobj_t *listener);"}, {"kind": "function", "line": 82, "name": "S_SetMusicVolume", "signature": "void S_SetMusicVolume(int volume);"}, {"kind": "function", "line": 84, "name": "S_SetSfxVolume", "signature": "void S_SetSfxVolume(int volume);"}, {"kind": "variable", "line": 85, "name": "snd_channels", "signature": "extern int snd_channels;"}, {"kind": "macro", "line": 21, "name": "__S_SOUND__", "signature": "#define __S_SOUND__"}]}, {"doc": "sha1.c - SHA1 hash function", "id": "progs/doomgeneric/sha1.c", "kind": "module", "label": "sha1.c", "language": "c", "sha256": "0899ff255ed8771f", "symbol_count": 23, "symbols": [{"doc": "include \"i_swap.h\" include \"sha1.h\"", "kind": "function", "line": 39, "name": "SHA1_Init", "signature": "void SHA1_Init(sha1_context_t *hd)"}, {"doc": "Transform the message X which consists of 16 32-bit-words", "kind": "function", "line": 55, "name": "Transform", "signature": "static void Transform(sha1_context_t *hd, byte *data)"}, {"doc": "Update the message digest with the contents of INBUF with length INLEN.", "kind": "function", "line": 198, "name": "SHA1_Update", "signature": "void SHA1_Update(sha1_context_t *hd, byte *inbuf, size_t inlen)"}, {"doc": "The routine final terminates the computation and returns the digest. The handle is prepared for a new cycle, but adding bytes to the handle will the destroy the returned buffer. Returns: 20 bytes representing the digest.", "kind": "function", "line": 237, "name": "SHA1_Final", "signature": "void SHA1_Final(sha1_digest_t digest, sha1_context_t *hd)"}, {"kind": "function", "line": 302, "name": "SHA1_UpdateInt32", "signature": "void SHA1_UpdateInt32(sha1_context_t *context, unsigned int val)"}, {"kind": "function", "line": 314, "name": "SHA1_UpdateString", "signature": "void SHA1_UpdateString(sha1_context_t *context, char *str)"}, {"doc": "ifdef SYS_BIG_ENDIAN", "kind": "function", "line": 68, "name": "memcpy", "signature": "memcpy(x, data, 64);"}, {"kind": "function", "line": 105, "name": "R", "signature": "R( a, b, c, d, e, F1, K1, x[ 0] );"}, {"kind": "function", "line": 273, "name": "memset", "signature": "memset(hd->buf, 0, 56 );"}, {"doc": "endif", "kind": "function", "line": 293, "name": "X", "signature": "X(0);"}, {"kind": "macro", "line": 82, "name": "K1", "signature": "#define K1"}, {"kind": "macro", "line": 85, "name": "K2", "signature": "#define K2"}, {"kind": "macro", "line": 86, "name": "K3", "signature": "#define K3"}, {"kind": "macro", "line": 87, "name": "K4", "signature": "#define K4"}, {"kind": "macro", "line": 88, "name": "F1", "signature": "#define F1(x,y,z)"}, {"kind": "macro", "line": 89, "name": "F2", "signature": "#define F2(x,y,z)"}, {"kind": "macro", "line": 90, "name": "F3", "signature": "#define F3(x,y,z)"}, {"kind": "macro", "line": 91, "name": "F4", "signature": "#define F4(x,y,z)"}, {"kind": "macro", "line": 92, "name": "rol", "signature": "#define rol(x,n)"}, {"kind": "macro", "line": 94, "name": "M", "signature": "#define M(i)"}, {"kind": "macro", "line": 98, "name": "R", "signature": "#define R(a,b,c,d,e,f,k,m)"}, {"kind": "macro", "line": 288, "name": "X", "signature": "#define X(a)"}, {"kind": "macro", "line": 290, "name": "X", "signature": "#define X(a)"}]}, {"doc": "Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: SHA-1 digest. ifndef __SHA1_H__ define __SHA1_H__ include \"doomtype.h\"", "id": "progs/doomgeneric/sha1.h", "kind": "module", "label": "sha1.h", "language": "h", "sha256": "05cf75267618db71", "symbol_count": 9, "symbols": [{"kind": "struct", "line": 26, "name": "sha1_context_s"}, {"doc": "include \"doomtype.h\"", "kind": "type_alias", "line": 22, "name": "sha1_context_t", "signature": "typedef struct sha1_context_s sha1_context_t;"}, {"kind": "type_alias", "line": 24, "name": "sha1_digest_t", "signature": "typedef byte sha1_digest_t[20];"}, {"kind": "function", "line": 32, "name": "SHA1_Init", "signature": "void SHA1_Init(sha1_context_t *context);"}, {"kind": "function", "line": 34, "name": "SHA1_Update", "signature": "void SHA1_Update(sha1_context_t *context, byte *buf, size_t len);"}, {"kind": "function", "line": 35, "name": "SHA1_Final", "signature": "void SHA1_Final(sha1_digest_t digest, sha1_context_t *context);"}, {"kind": "function", "line": 36, "name": "SHA1_UpdateInt32", "signature": "void SHA1_UpdateInt32(sha1_context_t *context, unsigned int val);"}, {"kind": "function", "line": 37, "name": "SHA1_UpdateString", "signature": "void SHA1_UpdateString(sha1_context_t *context, char *str);"}, {"kind": "macro", "line": 19, "name": "__SHA1_H__", "signature": "#define __SHA1_H__"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Created by a sound utility. Kept as a sample, DOOM2 sounds. include include \"doomtype.h\" include \"sounds.h\" Information about all the music", "id": "progs/doomgeneric/sounds.c", "kind": "module", "label": "sounds.c", "language": "c", "sha256": "42fd2091c541a304", "symbol_count": 3, "symbols": [{"kind": "macro", "line": 30, "name": "MUSIC", "signature": "#define MUSIC(name)"}, {"kind": "macro", "line": 110, "name": "SOUND", "signature": "#define SOUND(name, priority)"}, {"kind": "macro", "line": 113, "name": "SOUND_LINK", "signature": "#define SOUND_LINK(name, priority, link_id, pitch, volume)"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Created by the sound utility written by Dave Taylor. Kept as a sample, DOOM2 sounds. Frozen. ifndef __SOUNDS__ define __SOUNDS__ include \"i_sound.h\" the complete set of sound effects", "id": "progs/doomgeneric/sounds.h", "kind": "module", "label": "sounds.h", "language": "h", "sha256": "11d2c0a233fe8a99", "symbol_count": 3, "symbols": [{"doc": "the complete set of sound effects", "kind": "variable", "line": 26, "name": "S_sfx", "signature": "extern sfxinfo_t S_sfx[];"}, {"doc": "the complete set of music", "kind": "variable", "line": 29, "name": "S_music", "signature": "extern musicinfo_t S_music[];"}, {"kind": "macro", "line": 21, "name": "__SOUNDS__", "signature": "#define __SOUNDS__"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: The status bar widget code. include include include \"deh_main.h\" include \"doomdef.h\" include \"z_zone.h\" include \"v_video.h\" include \"i_swap.h\" include \"i_system.h\"", "id": "progs/doomgeneric/st_lib.c", "kind": "module", "label": "st_lib.c", "language": "c", "sha256": "2cb621542b04c65e", "symbol_count": 13, "symbols": [{"kind": "function", "line": 50, "name": "STlib_init", "signature": "void STlib_init(void)"}, {"doc": "?", "kind": "function", "line": 58, "name": "STlib_initNum", "signature": "void\nSTlib_initNum\n( st_number_t*\t\tn,\n int\t\t\tx,\n int\t\t\ty,\n patch_t**\t\tpl,\n int*\t\t\tnum,\n bool..."}, {"doc": "A fairly efficient way to draw a number based on differences from the old number. Note: worth the trouble?", "kind": "function", "line": 83, "name": "STlib_drawNum", "signature": "void\nSTlib_drawNum\n( st_number_t*\tn,\n boolean\trefresh )"}, {"kind": "function", "line": 145, "name": "STlib_updateNum", "signature": "void\nSTlib_updateNum\n( st_number_t*\t\tn,\n boolean\t\trefresh )"}, {"kind": "function", "line": 155, "name": "STlib_initPercent", "signature": "void\nSTlib_initPercent\n( st_percent_t*\t\tp,\n int\t\t\tx,\n int\t\t\ty,\n patch_t**\t\tpl,\n int*\t\t\tnum,\n ..."}, {"kind": "function", "line": 168, "name": "STlib_updatePercent", "signature": "void\nSTlib_updatePercent\n( st_percent_t*\t\tper,\n int\t\t\trefresh )"}, {"kind": "function", "line": 182, "name": "STlib_initMultIcon", "signature": "void\nSTlib_initMultIcon\n( st_multicon_t*\ti,\n int\t\t\tx,\n int\t\t\ty,\n patch_t**\t\til,\n int*\t\t\tinum,..."}, {"kind": "function", "line": 201, "name": "STlib_updateMultIcon", "signature": "void\nSTlib_updateMultIcon\n( st_multicon_t*\tmi,\n boolean\t\trefresh )"}, {"kind": "function", "line": 232, "name": "STlib_initBinIcon", "signature": "void\nSTlib_initBinIcon\n( st_binicon_t*\t\tb,\n int\t\t\tx,\n int\t\t\ty,\n patch_t*\t\ti,\n boolean*\t\tval,\n..."}, {"kind": "function", "line": 251, "name": "STlib_updateBinIcon", "signature": "void\nSTlib_updateBinIcon\n( st_binicon_t*\t\tbi,\n boolean\t\trefresh )"}, {"kind": "function", "line": 117, "name": "V_CopyRect", "signature": "V_CopyRect(x, n->y - ST_Y, st_backing_screen, w*numdigits, h, x, n->y);"}, {"kind": "function", "line": 134, "name": "V_DrawPatch", "signature": "V_DrawPatch(x, n->y, n->p[ num % 10 ]);"}, {"doc": "in AM_map.c", "kind": "variable", "line": 40, "name": "automapactive", "signature": "extern boolean automapactive;"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: The status bar widget code. ifndef __STLIB__ define __STLIB__ We are referring to patches. include \"r_defs.h\" Typedefs of widgets Number widget", "id": "progs/doomgeneric/st_lib.h", "kind": "module", "label": "st_lib.h", "language": "h", "sha256": "f0ea7eb8daf85705", "symbol_count": 14, "symbols": [{"kind": "struct", "line": 32, "name": "st_number_t"}, {"doc": "Percent widget (\"child\" of number widget, or, more precisely, contains a number widget.)", "kind": "struct", "line": 64, "name": "st_percent_t"}, {"doc": "Multiple Icon widget", "kind": "struct", "line": 77, "name": "st_multicon_t"}, {"kind": "struct", "line": 106, "name": "st_binicon_t"}, {"doc": "Initializes widget library. More precisely, initialize STMINUS, everything else is done somewhere else.", "kind": "function", "line": 138, "name": "STlib_init", "signature": "void STlib_init(void);"}, {"doc": "Number widget routines", "kind": "function", "line": 143, "name": "STlib_initNum", "signature": "void STlib_initNum ( st_number_t* n, int x, int y, patch_t** pl, int* num, boolean* on, int width );"}, {"kind": "function", "line": 152, "name": "STlib_updateNum", "signature": "void STlib_updateNum ( st_number_t* n, boolean refresh );"}, {"doc": "Percent widget routines", "kind": "function", "line": 160, "name": "STlib_initPercent", "signature": "void STlib_initPercent ( st_percent_t* p, int x, int y, patch_t** pl, int* num, boolean* on, patch_t* percent );"}, {"kind": "function", "line": 169, "name": "STlib_updatePercent", "signature": "void STlib_updatePercent ( st_percent_t* per, int refresh );"}, {"doc": "Multiple Icon widget routines", "kind": "function", "line": 178, "name": "STlib_initMultIcon", "signature": "void STlib_initMultIcon ( st_multicon_t* mi, int x, int y, patch_t** il, int* inum, boolean* on );"}, {"kind": "function", "line": 186, "name": "STlib_updateMultIcon", "signature": "void STlib_updateMultIcon ( st_multicon_t* mi, boolean refresh );"}, {"doc": "Binary Icon widget routines", "kind": "function", "line": 194, "name": "STlib_initBinIcon", "signature": "void STlib_initBinIcon ( st_binicon_t* b, int x, int y, patch_t* i, boolean* val, boolean* on );"}, {"kind": "function", "line": 203, "name": "STlib_updateBinIcon", "signature": "void STlib_updateBinIcon ( st_binicon_t* bi, boolean refresh );"}, {"kind": "macro", "line": 20, "name": "__STLIB__", "signature": "#define __STLIB__"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Status bar code. Does the face/direction indicator animatin. Does palette indicators as well (red pain/berserk, bright pickup) include include \"i_system.h\" include \"i_video.h\" include \"z_zone.h\" include \"m_misc.h\" include \"m_random.h\" include \"w_wad.h\"", "id": "progs/doomgeneric/st_stuff.c", "kind": "module", "label": "st_stuff.c", "language": "c", "sha256": "00f1f495b8fe735f", "symbol_count": 158, "symbols": [{"kind": "function", "line": 415, "name": "ST_refreshBackground", "signature": "void ST_refreshBackground(void)"}, {"doc": "Respond to keyboard input events, intercept cheats.", "kind": "function", "line": 438, "name": "ST_Responder", "signature": "boolean\nST_Responder (event_t* ev)"}, {"kind": "function", "line": 662, "name": "ST_calcPainOffset", "signature": "int ST_calcPainOffset(void)"}, {"doc": "This is a not-very-pretty routine which handles the face states and their timing. the precedence of expressions is: dead > evil grin > turned head > straight ahead", "kind": "function", "line": 688, "name": "ST_updateFaceWidget", "signature": "void ST_updateFaceWidget(void)"}, {"kind": "function", "line": 859, "name": "ST_updateWidgets", "signature": "void ST_updateWidgets(void)"}, {"kind": "function", "line": 923, "name": "ST_Ticker", "signature": "void ST_Ticker (void)"}, {"kind": "function", "line": 935, "name": "ST_doPaletteStuff", "signature": "void ST_doPaletteStuff(void)"}, {"kind": "function", "line": 1000, "name": "ST_drawWidgets", "signature": "void ST_drawWidgets(boolean refresh)"}, {"kind": "function", "line": 1035, "name": "ST_doRefresh", "signature": "void ST_doRefresh(void)"}, {"kind": "function", "line": 1048, "name": "ST_diffDraw", "signature": "void ST_diffDraw(void)"}, {"kind": "function", "line": 1054, "name": "ST_Drawer", "signature": "void ST_Drawer (boolean fullscreen, boolean refresh)"}, {"doc": "Iterates through all graphics to be loaded or unloaded, along with the variable they use, invoking the specified callback function.", "kind": "function", "line": 1075, "name": "ST_loadUnloadGraphics", "signature": "static void ST_loadUnloadGraphics(load_callback_t callback)"}, {"kind": "function", "line": 1161, "name": "ST_loadCallback", "signature": "static void ST_loadCallback(char *lumpname, patch_t **variable)"}, {"kind": "function", "line": 1166, "name": "ST_loadGraphics", "signature": "void ST_loadGraphics(void)"}, {"kind": "function", "line": 1171, "name": "ST_loadData", "signature": "void ST_loadData(void)"}, {"kind": "function", "line": 1177, "name": "ST_unloadCallback", "signature": "static void ST_unloadCallback(char *lumpname, patch_t **variable)"}, {"kind": "function", "line": 1183, "name": "ST_unloadGraphics", "signature": "void ST_unloadGraphics(void)"}, {"kind": "function", "line": 1188, "name": "ST_unloadData", "signature": "void ST_unloadData(void)"}, {"kind": "function", "line": 1193, "name": "ST_initData", "signature": "void ST_initData(void)"}, {"kind": "function", "line": 1224, "name": "ST_createWidgets", "signature": "void ST_createWidgets(void)"}, {"kind": "function", "line": 1387, "name": "ST_Start", "signature": "void ST_Start (void)"}, {"kind": "function", "line": 1400, "name": "ST_Stop", "signature": "void ST_Stop (void)"}, {"kind": "function", "line": 1410, "name": "ST_Init", "signature": "void ST_Init (void)"}, {"kind": "function", "line": 421, "name": "V_UseBuffer", "signature": "V_UseBuffer(st_backing_screen);"}, {"kind": "function", "line": 422, "name": "V_DrawPatch", "signature": "V_DrawPatch(ST_X, 0, sbar);"}, {"kind": "function", "line": 427, "name": "V_RestoreBuffer", "signature": "V_RestoreBuffer();"}, {"kind": "function", "line": 429, "name": "V_CopyRect", "signature": "V_CopyRect(ST_X, 0, st_backing_screen, ST_WIDTH, ST_HEIGHT, ST_X, ST_Y);"}, {"kind": "function", "line": 520, "name": "cht_GetParam", "signature": "cht_GetParam(&cheat_mus, buf);"}, {"kind": "function", "line": 533, "name": "S_ChangeMusic", "signature": "else S_ChangeMusic(musnum, 1);"}, {"kind": "function", "line": 657, "name": "G_DeferedInitNew", "signature": "G_DeferedInitNew(gameskill, epsd, map);"}, {"kind": "function", "line": 996, "name": "I_SetPalette", "signature": "I_SetPalette (pal);"}, {"kind": "function", "line": 1010, "name": "STlib_updateNum", "signature": "STlib_updateNum(&w_ready, refresh);"}, {"kind": "function", "line": 1018, "name": "STlib_updatePercent", "signature": "STlib_updatePercent(&w_health, refresh);"}, {"kind": "function", "line": 1021, "name": "STlib_updateBinIcon", "signature": "STlib_updateBinIcon(&w_armsbg, refresh);"}, {"kind": "function", "line": 1025, "name": "STlib_updateMultIcon", "signature": "STlib_updateMultIcon(&w_arms[i], refresh);"}, {"kind": "function", "line": 1070, "name": "void", "signature": "typedef void (*load_callback_t)(char *lumpname, patch_t **variable);"}, {"kind": "function", "line": 1088, "name": "DEH_snprintf", "signature": "DEH_snprintf(namebuf, 9, \"STTNUM%d\", i);"}, {"kind": "function", "line": 1089, "name": "callback", "signature": "callback(namebuf, &tallnum[i]);"}, {"kind": "function", "line": 1180, "name": "W_ReleaseLumpName", "signature": "W_ReleaseLumpName(lumpname);"}, {"kind": "function", "line": 1220, "name": "STlib_init", "signature": "STlib_init();"}, {"doc": "ready weapon ammo", "kind": "function", "line": 1233, "name": "STlib_initNum", "signature": "STlib_initNum(&w_ready, ST_AMMOX, ST_AMMOY, tallnum, &plyr->ammo[weaponinfo[plyr->readyweapon].ammo], &st_statusbaron, ST_AMMOWIDTH );"}, {"doc": "health percentage", "kind": "function", "line": 1245, "name": "STlib_initPercent", "signature": "STlib_initPercent(&w_health, ST_HEALTHX, ST_HEALTHY, tallnum, &plyr->health, &st_statusbaron, tallpercent);"}, {"doc": "arms background", "kind": "function", "line": 1254, "name": "STlib_initBinIcon", "signature": "STlib_initBinIcon(&w_armsbg, ST_ARMSBGX, ST_ARMSBGY, armsbg, &st_notdeathmatch, &st_statusbaron);"}, {"kind": "function", "line": 1264, "name": "STlib_initMultIcon", "signature": "STlib_initMultIcon(&w_arms[i], ST_ARMSX+(i%3)*ST_ARMSXSPACE, ST_ARMSY+(i/3)*ST_ARMSYSPACE, arms[i], (int *) &plyr->weaponowned[i+1], &st_armson);"}, {"kind": "macro", "line": 68, "name": "STARTREDPALS", "signature": "#define STARTREDPALS"}, {"kind": "macro", "line": 69, "name": "STARTBONUSPALS", "signature": "#define STARTBONUSPALS"}, {"kind": "macro", "line": 70, "name": "NUMREDPALS", "signature": "#define NUMREDPALS"}, {"kind": "macro", "line": 71, "name": "NUMBONUSPALS", "signature": "#define NUMBONUSPALS"}, {"kind": "macro", "line": 73, "name": "RADIATIONPAL", "signature": "#define RADIATIONPAL"}, {"kind": "macro", "line": 77, "name": "ST_FACEPROBABILITY", "signature": "#define ST_FACEPROBABILITY"}, {"kind": "macro", "line": 80, "name": "ST_TOGGLECHAT", "signature": "#define ST_TOGGLECHAT"}, {"kind": "macro", "line": 83, "name": "ST_X", "signature": "#define ST_X"}, {"kind": "macro", "line": 84, "name": "ST_X2", "signature": "#define ST_X2"}, {"kind": "macro", "line": 85, "name": "ST_FX", "signature": "#define ST_FX"}, {"kind": "macro", "line": 87, "name": "ST_FY", "signature": "#define ST_FY"}, {"kind": "macro", "line": 91, "name": "ST_TALLNUMWIDTH", "signature": "#define ST_TALLNUMWIDTH"}, {"kind": "macro", "line": 94, "name": "ST_NUMPAINFACES", "signature": "#define ST_NUMPAINFACES"}, {"kind": "macro", "line": 95, "name": "ST_NUMSTRAIGHTFACES", "signature": "#define ST_NUMSTRAIGHTFACES"}, {"kind": "macro", "line": 96, "name": "ST_NUMTURNFACES", "signature": "#define ST_NUMTURNFACES"}, {"kind": "macro", "line": 97, "name": "ST_NUMSPECIALFACES", "signature": "#define ST_NUMSPECIALFACES"}, {"kind": "macro", "line": 98, "name": "ST_FACESTRIDE", "signature": "#define ST_FACESTRIDE"}, {"kind": "macro", "line": 101, "name": "ST_NUMEXTRAFACES", "signature": "#define ST_NUMEXTRAFACES"}, {"kind": "macro", "line": 103, "name": "ST_NUMFACES", "signature": "#define ST_NUMFACES"}, {"kind": "macro", "line": 106, "name": "ST_TURNOFFSET", "signature": "#define ST_TURNOFFSET"}, {"kind": "macro", "line": 108, "name": "ST_OUCHOFFSET", "signature": "#define ST_OUCHOFFSET"}, {"kind": "macro", "line": 109, "name": "ST_EVILGRINOFFSET", "signature": "#define ST_EVILGRINOFFSET"}, {"kind": "macro", "line": 110, "name": "ST_RAMPAGEOFFSET", "signature": "#define ST_RAMPAGEOFFSET"}, {"kind": "macro", "line": 111, "name": "ST_GODFACE", "signature": "#define ST_GODFACE"}, {"kind": "macro", "line": 112, "name": "ST_DEADFACE", "signature": "#define ST_DEADFACE"}, {"kind": "macro", "line": 113, "name": "ST_FACESX", "signature": "#define ST_FACESX"}, {"kind": "macro", "line": 115, "name": "ST_FACESY", "signature": "#define ST_FACESY"}, {"kind": "macro", "line": 116, "name": "ST_EVILGRINCOUNT", "signature": "#define ST_EVILGRINCOUNT"}, {"kind": "macro", "line": 118, "name": "ST_STRAIGHTFACECOUNT", "signature": "#define ST_STRAIGHTFACECOUNT"}, {"kind": "macro", "line": 119, "name": "ST_TURNCOUNT", "signature": "#define ST_TURNCOUNT"}, {"kind": "macro", "line": 120, "name": "ST_OUCHCOUNT", "signature": "#define ST_OUCHCOUNT"}, {"kind": "macro", "line": 121, "name": "ST_RAMPAGEDELAY", "signature": "#define ST_RAMPAGEDELAY"}, {"kind": "macro", "line": 122, "name": "ST_MUCHPAIN", "signature": "#define ST_MUCHPAIN"}, {"kind": "macro", "line": 135, "name": "ST_AMMOWIDTH", "signature": "#define ST_AMMOWIDTH"}, {"kind": "macro", "line": 136, "name": "ST_AMMOX", "signature": "#define ST_AMMOX"}, {"kind": "macro", "line": 137, "name": "ST_AMMOY", "signature": "#define ST_AMMOY"}, {"kind": "macro", "line": 140, "name": "ST_HEALTHWIDTH", "signature": "#define ST_HEALTHWIDTH"}, {"kind": "macro", "line": 141, "name": "ST_HEALTHX", "signature": "#define ST_HEALTHX"}, {"kind": "macro", "line": 142, "name": "ST_HEALTHY", "signature": "#define ST_HEALTHY"}, {"kind": "macro", "line": 145, "name": "ST_ARMSX", "signature": "#define ST_ARMSX"}, {"kind": "macro", "line": 146, "name": "ST_ARMSY", "signature": "#define ST_ARMSY"}, {"kind": "macro", "line": 147, "name": "ST_ARMSBGX", "signature": "#define ST_ARMSBGX"}, {"kind": "macro", "line": 148, "name": "ST_ARMSBGY", "signature": "#define ST_ARMSBGY"}, {"kind": "macro", "line": 149, "name": "ST_ARMSXSPACE", "signature": "#define ST_ARMSXSPACE"}, {"kind": "macro", "line": 150, "name": "ST_ARMSYSPACE", "signature": "#define ST_ARMSYSPACE"}, {"kind": "macro", "line": 153, "name": "ST_FRAGSX", "signature": "#define ST_FRAGSX"}, {"kind": "macro", "line": 154, "name": "ST_FRAGSY", "signature": "#define ST_FRAGSY"}, {"kind": "macro", "line": 155, "name": "ST_FRAGSWIDTH", "signature": "#define ST_FRAGSWIDTH"}, {"kind": "macro", "line": 158, "name": "ST_ARMORWIDTH", "signature": "#define ST_ARMORWIDTH"}, {"kind": "macro", "line": 159, "name": "ST_ARMORX", "signature": "#define ST_ARMORX"}, {"kind": "macro", "line": 160, "name": "ST_ARMORY", "signature": "#define ST_ARMORY"}, {"kind": "macro", "line": 163, "name": "ST_KEY0WIDTH", "signature": "#define ST_KEY0WIDTH"}, {"kind": "macro", "line": 164, "name": "ST_KEY0HEIGHT", "signature": "#define ST_KEY0HEIGHT"}, {"kind": "macro", "line": 165, "name": "ST_KEY0X", "signature": "#define ST_KEY0X"}, {"kind": "macro", "line": 166, "name": "ST_KEY0Y", "signature": "#define ST_KEY0Y"}, {"kind": "macro", "line": 167, "name": "ST_KEY1WIDTH", "signature": "#define ST_KEY1WIDTH"}, {"kind": "macro", "line": 168, "name": "ST_KEY1X", "signature": "#define ST_KEY1X"}, {"kind": "macro", "line": 169, "name": "ST_KEY1Y", "signature": "#define ST_KEY1Y"}, {"kind": "macro", "line": 170, "name": "ST_KEY2WIDTH", "signature": "#define ST_KEY2WIDTH"}, {"kind": "macro", "line": 171, "name": "ST_KEY2X", "signature": "#define ST_KEY2X"}, {"kind": "macro", "line": 172, "name": "ST_KEY2Y", "signature": "#define ST_KEY2Y"}, {"kind": "macro", "line": 175, "name": "ST_AMMO0WIDTH", "signature": "#define ST_AMMO0WIDTH"}, {"kind": "macro", "line": 176, "name": "ST_AMMO0HEIGHT", "signature": "#define ST_AMMO0HEIGHT"}, {"kind": "macro", "line": 177, "name": "ST_AMMO0X", "signature": "#define ST_AMMO0X"}, {"kind": "macro", "line": 178, "name": "ST_AMMO0Y", "signature": "#define ST_AMMO0Y"}, {"kind": "macro", "line": 179, "name": "ST_AMMO1WIDTH", "signature": "#define ST_AMMO1WIDTH"}, {"kind": "macro", "line": 180, "name": "ST_AMMO1X", "signature": "#define ST_AMMO1X"}, {"kind": "macro", "line": 181, "name": "ST_AMMO1Y", "signature": "#define ST_AMMO1Y"}, {"kind": "macro", "line": 182, "name": "ST_AMMO2WIDTH", "signature": "#define ST_AMMO2WIDTH"}, {"kind": "macro", "line": 183, "name": "ST_AMMO2X", "signature": "#define ST_AMMO2X"}, {"kind": "macro", "line": 184, "name": "ST_AMMO2Y", "signature": "#define ST_AMMO2Y"}, {"kind": "macro", "line": 185, "name": "ST_AMMO3WIDTH", "signature": "#define ST_AMMO3WIDTH"}, {"kind": "macro", "line": 186, "name": "ST_AMMO3X", "signature": "#define ST_AMMO3X"}, {"kind": "macro", "line": 187, "name": "ST_AMMO3Y", "signature": "#define ST_AMMO3Y"}, {"kind": "macro", "line": 191, "name": "ST_MAXAMMO0WIDTH", "signature": "#define ST_MAXAMMO0WIDTH"}, {"kind": "macro", "line": 192, "name": "ST_MAXAMMO0HEIGHT", "signature": "#define ST_MAXAMMO0HEIGHT"}, {"kind": "macro", "line": 193, "name": "ST_MAXAMMO0X", "signature": "#define ST_MAXAMMO0X"}, {"kind": "macro", "line": 194, "name": "ST_MAXAMMO0Y", "signature": "#define ST_MAXAMMO0Y"}, {"kind": "macro", "line": 195, "name": "ST_MAXAMMO1WIDTH", "signature": "#define ST_MAXAMMO1WIDTH"}, {"kind": "macro", "line": 196, "name": "ST_MAXAMMO1X", "signature": "#define ST_MAXAMMO1X"}, {"kind": "macro", "line": 197, "name": "ST_MAXAMMO1Y", "signature": "#define ST_MAXAMMO1Y"}, {"kind": "macro", "line": 198, "name": "ST_MAXAMMO2WIDTH", "signature": "#define ST_MAXAMMO2WIDTH"}, {"kind": "macro", "line": 199, "name": "ST_MAXAMMO2X", "signature": "#define ST_MAXAMMO2X"}, {"kind": "macro", "line": 200, "name": "ST_MAXAMMO2Y", "signature": "#define ST_MAXAMMO2Y"}, {"kind": "macro", "line": 201, "name": "ST_MAXAMMO3WIDTH", "signature": "#define ST_MAXAMMO3WIDTH"}, {"kind": "macro", "line": 202, "name": "ST_MAXAMMO3X", "signature": "#define ST_MAXAMMO3X"}, {"kind": "macro", "line": 203, "name": "ST_MAXAMMO3Y", "signature": "#define ST_MAXAMMO3Y"}, {"kind": "macro", "line": 206, "name": "ST_WEAPON0X", "signature": "#define ST_WEAPON0X"}, {"kind": "macro", "line": 207, "name": "ST_WEAPON0Y", "signature": "#define ST_WEAPON0Y"}, {"kind": "macro", "line": 210, "name": "ST_WEAPON1X", "signature": "#define ST_WEAPON1X"}, {"kind": "macro", "line": 211, "name": "ST_WEAPON1Y", "signature": "#define ST_WEAPON1Y"}, {"kind": "macro", "line": 214, "name": "ST_WEAPON2X", "signature": "#define ST_WEAPON2X"}, {"kind": "macro", "line": 215, "name": "ST_WEAPON2Y", "signature": "#define ST_WEAPON2Y"}, {"kind": "macro", "line": 218, "name": "ST_WEAPON3X", "signature": "#define ST_WEAPON3X"}, {"kind": "macro", "line": 219, "name": "ST_WEAPON3Y", "signature": "#define ST_WEAPON3Y"}, {"kind": "macro", "line": 222, "name": "ST_WEAPON4X", "signature": "#define ST_WEAPON4X"}, {"kind": "macro", "line": 223, "name": "ST_WEAPON4Y", "signature": "#define ST_WEAPON4Y"}, {"kind": "macro", "line": 226, "name": "ST_WEAPON5X", "signature": "#define ST_WEAPON5X"}, {"kind": "macro", "line": 227, "name": "ST_WEAPON5Y", "signature": "#define ST_WEAPON5Y"}, {"kind": "macro", "line": 230, "name": "ST_WPNSX", "signature": "#define ST_WPNSX"}, {"kind": "macro", "line": 231, "name": "ST_WPNSY", "signature": "#define ST_WPNSY"}, {"kind": "macro", "line": 234, "name": "ST_DETHX", "signature": "#define ST_DETHX"}, {"kind": "macro", "line": 235, "name": "ST_DETHY", "signature": "#define ST_DETHY"}, {"kind": "macro", "line": 241, "name": "ST_MSGTEXTX", "signature": "#define ST_MSGTEXTX"}, {"kind": "macro", "line": 242, "name": "ST_MSGTEXTY", "signature": "#define ST_MSGTEXTY"}, {"kind": "macro", "line": 244, "name": "ST_MSGWIDTH", "signature": "#define ST_MSGWIDTH"}, {"kind": "macro", "line": 246, "name": "ST_MSGHEIGHT", "signature": "#define ST_MSGHEIGHT"}, {"kind": "macro", "line": 247, "name": "ST_OUTTEXTX", "signature": "#define ST_OUTTEXTX"}, {"kind": "macro", "line": 249, "name": "ST_OUTTEXTY", "signature": "#define ST_OUTTEXTY"}, {"kind": "macro", "line": 252, "name": "ST_OUTWIDTH", "signature": "#define ST_OUTWIDTH"}, {"kind": "macro", "line": 254, "name": "ST_OUTHEIGHT", "signature": "#define ST_OUTHEIGHT"}, {"kind": "macro", "line": 255, "name": "ST_MAPTITLEX", "signature": "#define ST_MAPTITLEX"}, {"kind": "macro", "line": 258, "name": "ST_MAPTITLEY", "signature": "#define ST_MAPTITLEY"}, {"kind": "macro", "line": 260, "name": "ST_MAPHEIGHT", "signature": "#define ST_MAPHEIGHT"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Status bar code. Does the face/direction indicator animatin. Does palette indicators as well (red pain/berserk, bright pickup) ifndef __STSTUFF_H__ define __STSTUFF_H__ include \"doomtype.h\" include \"d_event.h\" include \"m_cheat.h\" Size of statusbar. Now sensitive for scaling. define ST_HEIGHT\t32", "id": "progs/doomgeneric/st_stuff.h", "kind": "module", "label": "st_stuff.h", "language": "h", "sha256": "9a5570967e1f8016", "symbol_count": 20, "symbols": [{"doc": "Called by main loop.", "kind": "function", "line": 40, "name": "ST_Responder", "signature": "boolean ST_Responder (event_t* ev);"}, {"doc": "Called by main loop.", "kind": "function", "line": 43, "name": "ST_Ticker", "signature": "void ST_Ticker (void);"}, {"doc": "Called by main loop.", "kind": "function", "line": 46, "name": "ST_Drawer", "signature": "void ST_Drawer (boolean fullscreen, boolean refresh);"}, {"doc": "Called when the console player is spawned on each level.", "kind": "function", "line": 49, "name": "ST_Start", "signature": "void ST_Start (void);"}, {"doc": "Called by startup code.", "kind": "function", "line": 52, "name": "ST_Init", "signature": "void ST_Init (void);"}, {"kind": "variable", "line": 73, "name": "st_backing_screen", "signature": "extern byte *st_backing_screen;"}, {"kind": "variable", "line": 77, "name": "cheat_mus", "signature": "extern cheatseq_t cheat_mus;"}, {"kind": "variable", "line": 78, "name": "cheat_god", "signature": "extern cheatseq_t cheat_god;"}, {"kind": "variable", "line": 79, "name": "cheat_ammo", "signature": "extern cheatseq_t cheat_ammo;"}, {"kind": "variable", "line": 80, "name": "cheat_ammonokey", "signature": "extern cheatseq_t cheat_ammonokey;"}, {"kind": "variable", "line": 81, "name": "cheat_noclip", "signature": "extern cheatseq_t cheat_noclip;"}, {"kind": "variable", "line": 82, "name": "cheat_commercial_noclip", "signature": "extern cheatseq_t cheat_commercial_noclip;"}, {"kind": "variable", "line": 83, "name": "cheat_powerup", "signature": "extern cheatseq_t cheat_powerup[7];"}, {"kind": "variable", "line": 84, "name": "cheat_choppers", "signature": "extern cheatseq_t cheat_choppers;"}, {"kind": "variable", "line": 85, "name": "cheat_clev", "signature": "extern cheatseq_t cheat_clev;"}, {"kind": "variable", "line": 86, "name": "cheat_mypos", "signature": "extern cheatseq_t cheat_mypos;"}, {"kind": "macro", "line": 22, "name": "__STSTUFF_H__", "signature": "#define __STSTUFF_H__"}, {"kind": "macro", "line": 30, "name": "ST_HEIGHT", "signature": "#define ST_HEIGHT"}, {"kind": "macro", "line": 31, "name": "ST_WIDTH", "signature": "#define ST_WIDTH"}, {"kind": "macro", "line": 32, "name": "ST_Y", "signature": "#define ST_Y"}]}, {"id": "progs/doomgeneric/statdump.c", "kind": "module", "label": "statdump.c", "language": "c", "sha256": "9a47984f3f76d1a9", "symbol_count": 15, "symbols": [{"doc": "Try to work out whether this is a Doom 1 or Doom 2 game, by looking at the episode and map, and the par times. This is used to decide how to format the level name. Unfortunately, in some cases it is * impossible to determine whether this is Doom 1 or Doom 2.", "kind": "function", "line": 70, "name": "DiscoverGamemode", "signature": "static void DiscoverGamemode(wbstartstruct_t *stats, int num_stats)"}, {"doc": "if (partime != doom1_par_times[level] * TICRATE && partime == doom2_par_times[level] * TICRATE) { discovered_gamemission = doom2; return; } } } #endif #if ORIGCODE /* Returns the number of players active in the given stats buffer.", "kind": "function", "line": 129, "name": "GetNumPlayers", "signature": "static int GetNumPlayers(wbstartstruct_t *stats)"}, {"doc": "if ORIGCODE", "kind": "function", "line": 149, "name": "PrintBanner", "signature": "static void PrintBanner(FILE *stream)"}, {"kind": "function", "line": 154, "name": "PrintPercentage", "signature": "static void PrintPercentage(FILE *stream, int amount, int total)"}, {"doc": "statdump.exe is a 16-bit program, so very occasionally an integer overflow can occur when doing this calculation with a large value. Therefore, cast to short to give the same output. fprintf(stream, \" (%i%%)\", (short) (amount * 100) / total); } } #endif #if ORIGCODE /* Display statistics for a single player.", "kind": "function", "line": 179, "name": "PrintPlayerStats", "signature": "static void PrintPlayerStats(FILE *stream, wbstartstruct_t *stats,\n int player_num)"}, {"doc": "fprintf(stream, \"\\n\"); /* Secrets percentage fprintf(stream, \"\\tSecrets: \"); PrintPercentage(stream, player->ssecret, stats->maxsecret); fprintf(stream, \"\\n\"); } #endif #if ORIGCODE /* Frags table for multiplayer games.", "kind": "function", "line": 212, "name": "PrintFragsTable", "signature": "static void PrintFragsTable(FILE *stream, wbstartstruct_t *stats)"}, {"doc": "} fprintf(stream, \"\\n\"); } fprintf(stream, \"\\t\\t|\\n\"); fprintf(stream, \"\\t KILLERS\\n\"); } #endif #if ORIGCODE /* Displays the level name: MAPxy or ExMy, depending on game mode.", "kind": "function", "line": 271, "name": "PrintLevelName", "signature": "static void PrintLevelName(FILE *stream, int episode, int level)"}, {"doc": "case none: fprintf(stream, \"E%iM%i / MAP%02i\\n\", episode + 1, level + 1, level + 1); break; } PrintBanner(stream); } #endif #if ORIGCODE /* Print details of a statistics buffer to the given file.", "kind": "function", "line": 300, "name": "PrintStats", "signature": "static void PrintStats(FILE *stream, wbstartstruct_t *stats)"}, {"doc": "endif", "kind": "function", "line": 332, "name": "StatCopy", "signature": "void StatCopy(wbstartstruct_t *stats)"}, {"kind": "function", "line": 342, "name": "StatDump", "signature": "void StatDump(void)"}, {"kind": "function", "line": 152, "name": "fprintf", "signature": "fprintf(stream, \"===========================================\\n\");"}, {"kind": "function", "line": 337, "name": "memcpy", "signature": "memcpy(&captured_stats[num_captured_stats], stats, sizeof(wbstartstruct_t));"}, {"kind": "function", "line": 362, "name": "printf", "signature": "printf(\"Statistics captured for %i level(s)\\n\", num_captured_stats);"}, {"kind": "function", "line": 387, "name": "fclose", "signature": "fclose(dumpfile);"}, {"kind": "macro", "line": 55, "name": "MAX_CAPTURES", "signature": "#define MAX_CAPTURES"}]}, {"id": "progs/doomgeneric/statdump.h", "kind": "module", "label": "statdump.h", "language": "h", "sha256": "233abdc00a53366a", "symbol_count": 3, "symbols": [{"doc": "ifndef DOOM_STATDUMP_H define DOOM_STATDUMP_H", "kind": "function", "line": 19, "name": "StatCopy", "signature": "void StatCopy(wbstartstruct_t *stats);"}, {"kind": "function", "line": 21, "name": "StatDump", "signature": "void StatDump(void);"}, {"kind": "macro", "line": 18, "name": "DOOM_STATDUMP_H", "signature": "#define DOOM_STATDUMP_H"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Lookup tables. Do not try to look them up :-). In the order of appearance: int finetangent[4096]\t- Tangens LUT. Should work with BAM fairly well (12 of 16bit, effectively, by shifting). int finesine[10240]\t\t- Sine lookup. Guess what, serves as cosine, too. Remarkable thing is, how to use BAMs with this? int tantoangle[2049]\t- ArcTan LUT, maps tan(angle) to angle fast. Gotta search.", "id": "progs/doomgeneric/tables.c", "kind": "module", "label": "tables.c", "language": "c", "sha256": "4355b79ded36cdd5", "symbol_count": 1, "symbols": [{"doc": "to get a global angle from cartesian coordinates, the coordinates are flipped until they are in the first octant of the coordinate system, then the y (<=x) is scaled and divided by x to get a tangent (slope) value which is looked up in the tantoangle[] table. The +1 size is to handle the case when x==y without additional checking.", "kind": "function", "line": 40, "name": "SlopeDiv", "signature": "int SlopeDiv(unsigned int num, unsigned int den)"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 1993-2008 Raven Software Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Lookup tables. Do not try to look them up :-). In the order of appearance: int finetangent[4096]\t- Tangens LUT. Should work with BAM fairly well (12 of 16bit, effectively, by shifting). int finesine[10240]\t\t- Sine lookup. Guess what, serves as cosine, too. Remarkable thing is, how to use BAMs with this? int tantoangle[2049]\t- ArcTan LUT, maps tan(angle) to angle fast. Gotta search.", "id": "progs/doomgeneric/tables.h", "kind": "module", "label": "tables.h", "language": "h", "sha256": "e3d352a281e50277", "symbol_count": 21, "symbols": [{"doc": "define SLOPERANGE\t\t2048 define SLOPEBITS\t\t11 define DBITS\t\t\t(FRACBITS-SLOPEBITS)", "kind": "type_alias", "line": 80, "name": "angle_t", "signature": "typedef unsigned angle_t;"}, {"doc": "Utility function, called by R_PointToAngle.", "kind": "function", "line": 92, "name": "SlopeDiv", "signature": "int SlopeDiv(unsigned int num, unsigned int den);"}, {"doc": "Effective size is 10240.", "kind": "variable", "line": 49, "name": "finesine", "signature": "extern const fixed_t finesine[5*FINEANGLES/4];"}, {"doc": "Re-use data, is just PI/2 pahse shift.", "kind": "variable", "line": 52, "name": "finecosine", "signature": "extern const fixed_t *finecosine;"}, {"doc": "Effective size is 4096.", "kind": "variable", "line": 56, "name": "finetangent", "signature": "extern const fixed_t finetangent[FINEANGLES/2];"}, {"doc": "Effective size is 2049; The +1 size is to handle the case when x==y without additional checking.", "kind": "variable", "line": 87, "name": "tantoangle", "signature": "extern const angle_t tantoangle[SLOPERANGE+1];"}, {"kind": "macro", "line": 35, "name": "__TABLES__", "signature": "#define __TABLES__"}, {"kind": "macro", "line": 40, "name": "FINEANGLES", "signature": "#define FINEANGLES"}, {"kind": "macro", "line": 42, "name": "FINEMASK", "signature": "#define FINEMASK"}, {"kind": "macro", "line": 46, "name": "ANGLETOFINESHIFT", "signature": "#define ANGLETOFINESHIFT"}, {"kind": "macro", "line": 62, "name": "ANG45", "signature": "#define ANG45"}, {"kind": "macro", "line": 64, "name": "ANG90", "signature": "#define ANG90"}, {"kind": "macro", "line": 65, "name": "ANG180", "signature": "#define ANG180"}, {"kind": "macro", "line": 66, "name": "ANG270", "signature": "#define ANG270"}, {"kind": "macro", "line": 67, "name": "ANG_MAX", "signature": "#define ANG_MAX"}, {"kind": "macro", "line": 68, "name": "ANG1", "signature": "#define ANG1"}, {"kind": "macro", "line": 70, "name": "ANG60", "signature": "#define ANG60"}, {"kind": "macro", "line": 74, "name": "ANG1_X", "signature": "#define ANG1_X"}, {"kind": "macro", "line": 76, "name": "SLOPERANGE", "signature": "#define SLOPERANGE"}, {"kind": "macro", "line": 78, "name": "SLOPEBITS", "signature": "#define SLOPEBITS"}, {"kind": "macro", "line": 79, "name": "DBITS", "signature": "#define DBITS"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Refresh/rendering module, shared data struct definitions. ifndef V_PATCH_H define V_PATCH_H Patches. A patch holds one or more columns. Patches are used for sprites and all masked pictures, and we compose textures from the TEXTURE1/2 lists of patches.", "id": "progs/doomgeneric/v_patch.h", "kind": "module", "label": "v_patch.h", "language": "h", "sha256": "8634ef248b385cd0", "symbol_count": 2, "symbols": [{"doc": "column_t is a list of 0 or more post_t, (byte)-1 terminated", "kind": "type_alias", "line": 47, "name": "column_t", "signature": "typedef post_t column_t;"}, {"kind": "macro", "line": 21, "name": "V_PATCH_H", "signature": "#define V_PATCH_H"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 1993-2008 Raven Software Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Gamma correction LUT stuff. Functions to draw patches (by post) directly to screen. Functions to blit a block to the screen. include include include include \"i_system.h\" include \"doomtype.h\" include \"deh_str.h\"", "id": "progs/doomgeneric/v_video.c", "kind": "module", "label": "v_video.c", "language": "c", "sha256": "873d70ad4f59c2f6", "symbol_count": 49, "symbols": [{"doc": "V_MarkRect", "kind": "function", "line": 69, "name": "V_MarkRect", "signature": "void V_MarkRect(int x, int y, int width, int height)"}, {"doc": "V_CopyRect", "kind": "function", "line": 85, "name": "V_CopyRect", "signature": "void V_CopyRect(int srcx, int srcy, byte *source,\n int width, int height,\n ..."}, {"doc": "V_SetPatchClipCallback haleyjd 08/28/10: Added for Strife support. By calling this function, you can setup runtime error checking for patch clipping. Strife never caused errors by drawing patches partway off-screen. Some versions of vanilla DOOM also behaved differently than the default implementation, so this could possibly be extended to those as well for accurate emulation.", "kind": "function", "line": 129, "name": "V_SetPatchClipCallback", "signature": "void V_SetPatchClipCallback(vpatchclipfunc_t func)"}, {"doc": "V_DrawPatch Masks a column based masked pic to the screen.", "kind": "function", "line": 138, "name": "V_DrawPatch", "signature": "void V_DrawPatch(int x, int y, patch_t *patch)"}, {"doc": "V_DrawPatchFlipped Masks a column based masked pic to the screen. Flips horizontally, e.g. to mirror face.", "kind": "function", "line": 202, "name": "V_DrawPatchFlipped", "signature": "void V_DrawPatchFlipped(int x, int y, patch_t *patch)"}, {"doc": "V_DrawPatchDirect Draws directly to the screen on the pc.", "kind": "function", "line": 267, "name": "V_DrawPatchDirect", "signature": "void V_DrawPatchDirect(int x, int y, patch_t *patch)"}, {"doc": "V_DrawTLPatch Masks a column based translucent masked pic to the screen.", "kind": "function", "line": 278, "name": "V_DrawTLPatch", "signature": "void V_DrawTLPatch(int x, int y, patch_t * patch)"}, {"doc": "V_DrawXlaPatch villsa [STRIFE] Masks a column based translucent masked pic to the screen.", "kind": "function", "line": 328, "name": "V_DrawXlaPatch", "signature": "void V_DrawXlaPatch(int x, int y, patch_t * patch)"}, {"doc": "V_DrawAltTLPatch Masks a column based translucent masked pic to the screen.", "kind": "function", "line": 377, "name": "V_DrawAltTLPatch", "signature": "void V_DrawAltTLPatch(int x, int y, patch_t * patch)"}, {"doc": "V_DrawShadowedPatch Masks a column based masked pic to the screen.", "kind": "function", "line": 427, "name": "V_DrawShadowedPatch", "signature": "void V_DrawShadowedPatch(int x, int y, patch_t *patch)"}, {"doc": "Load tint table from TINTTAB lump.", "kind": "function", "line": 481, "name": "V_LoadTintTable", "signature": "void V_LoadTintTable(void)"}, {"doc": "V_LoadXlaTable villsa [STRIFE] Load xla table from XLATAB lump.", "kind": "function", "line": 492, "name": "V_LoadXlaTable", "signature": "void V_LoadXlaTable(void)"}, {"doc": "V_DrawBlock Draw a linear block of pixels into the view buffer.", "kind": "function", "line": 502, "name": "V_DrawBlock", "signature": "void V_DrawBlock(int x, int y, int width, int height, byte *src)"}, {"kind": "function", "line": 528, "name": "V_DrawFilledBox", "signature": "void V_DrawFilledBox(int x, int y, int w, int h, int c)"}, {"kind": "function", "line": 548, "name": "V_DrawHorizLine", "signature": "void V_DrawHorizLine(int x, int y, int w, int c)"}, {"kind": "function", "line": 561, "name": "V_DrawVertLine", "signature": "void V_DrawVertLine(int x, int y, int h, int c)"}, {"kind": "function", "line": 575, "name": "V_DrawBox", "signature": "void V_DrawBox(int x, int y, int w, int h, int c)"}, {"doc": "Draw a \"raw\" screen (lump containing raw data to blit directly to the screen)", "kind": "function", "line": 588, "name": "V_DrawRawScreen", "signature": "void V_DrawRawScreen(byte *raw)"}, {"doc": "V_Init", "kind": "function", "line": 597, "name": "V_Init", "signature": "void V_Init (void)"}, {"doc": "Set the buffer that the code draws to.", "kind": "function", "line": 605, "name": "V_UseBuffer", "signature": "void V_UseBuffer(byte *buffer)"}, {"doc": "Restore screen buffer to the i_video screen buffer.", "kind": "function", "line": 612, "name": "V_RestoreBuffer", "signature": "void V_RestoreBuffer(void)"}, {"doc": "WritePCXfile", "kind": "function", "line": 652, "name": "WritePCXfile", "signature": "void WritePCXfile(char *filename, byte *data,\n int width, int height,\n ..."}, {"doc": "ifdef HAVE_LIBPNG WritePNGfile", "kind": "function", "line": 710, "name": "error_fn", "signature": "static void error_fn(png_structp p, png_const_charp s)"}, {"kind": "function", "line": 715, "name": "warning_fn", "signature": "static void warning_fn(png_structp p, png_const_charp s)"}, {"kind": "function", "line": 720, "name": "WritePNGfile", "signature": "void WritePNGfile(char *filename, byte *data,\n int width, int height,\n ..."}, {"doc": "V_ScreenShot", "kind": "function", "line": 790, "name": "V_ScreenShot", "signature": "void V_ScreenShot(char *format)"}, {"doc": "define MOUSE_SPEED_BOX_WIDTH 120 define MOUSE_SPEED_BOX_HEIGHT 9", "kind": "function", "line": 845, "name": "V_DrawMouseSpeedBox", "signature": "void V_DrawMouseSpeedBox(int speed)"}, {"kind": "function", "line": 76, "name": "M_AddToBox", "signature": "M_AddToBox (dirtybox, x, y);"}, {"kind": "function", "line": 102, "name": "I_Error", "signature": "I_Error (\"Bad V_CopyRect\");"}, {"kind": "function", "line": 113, "name": "memcpy", "signature": "memcpy(dest, src, width);"}, {"kind": "function", "line": 674, "name": "memset", "signature": "memset (pcx->palette,0,sizeof(pcx->palette));"}, {"kind": "function", "line": 701, "name": "M_WriteFile", "signature": "M_WriteFile (filename, pcx, length);"}, {"kind": "function", "line": 702, "name": "Z_Free", "signature": "Z_Free (pcx);"}, {"kind": "function", "line": 713, "name": "printf", "signature": "printf(\"libpng error: %s\\n\", s);"}, {"kind": "function", "line": 747, "name": "png_destroy_write_struct", "signature": "png_destroy_write_struct(&ppng, NULL);"}, {"kind": "function", "line": 750, "name": "png_init_io", "signature": "png_init_io(ppng, handle);"}, {"kind": "function", "line": 752, "name": "png_set_IHDR", "signature": "png_set_IHDR(ppng, pinfo, width, height, 8, PNG_COLOR_TYPE_PALETTE, PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT);"}, {"kind": "function", "line": 770, "name": "png_set_PLTE", "signature": "png_set_PLTE(ppng, pinfo, pcolor, 256);"}, {"kind": "function", "line": 772, "name": "free", "signature": "free(pcolor);"}, {"kind": "function", "line": 773, "name": "png_write_info", "signature": "png_write_info(ppng, pinfo);"}, {"kind": "function", "line": 778, "name": "png_write_row", "signature": "png_write_row(ppng, data + i*SCREENWIDTH);"}, {"kind": "function", "line": 780, "name": "png_write_end", "signature": "png_write_end(ppng, pinfo);"}, {"kind": "function", "line": 783, "name": "fclose", "signature": "fclose(handle);"}, {"kind": "function", "line": 813, "name": "M_snprintf", "signature": "M_snprintf(lbmname, sizeof(lbmname), format, i, ext);"}, {"doc": "ifdef HAVE_LIBPNG", "kind": "variable", "line": 800, "name": "png_screenshots", "signature": "extern int png_screenshots;"}, {"kind": "variable", "line": 848, "name": "usemouse", "signature": "extern int usemouse;"}, {"kind": "macro", "line": 46, "name": "RANGECHECK", "signature": "#define RANGECHECK"}, {"kind": "macro", "line": 842, "name": "MOUSE_SPEED_BOX_WIDTH", "signature": "#define MOUSE_SPEED_BOX_WIDTH"}, {"kind": "macro", "line": 844, "name": "MOUSE_SPEED_BOX_HEIGHT", "signature": "#define MOUSE_SPEED_BOX_HEIGHT"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Gamma correction LUT. Functions to draw patches (by post) directly to screen. Functions to blit a block to the screen. ifndef __V_VIDEO__ define __V_VIDEO__ include \"doomtype.h\" Needed because we are refering to patches. include \"v_patch.h\"", "id": "progs/doomgeneric/v_video.h", "kind": "module", "label": "v_video.h", "language": "h", "sha256": "d24caeefb6ee8930", "symbol_count": 28, "symbols": [{"doc": "haleyjd 08/28/10: implemented for Strife support haleyjd 08/28/10: Patch clipping callback, implemented to support Choco Strife.", "kind": "function", "line": 44, "name": "boolean", "signature": "typedef boolean (*vpatchclipfunc_t)(patch_t *, int, int);"}, {"kind": "function", "line": 45, "name": "V_SetPatchClipCallback", "signature": "void V_SetPatchClipCallback(vpatchclipfunc_t func);"}, {"doc": "Allocates buffer screens, call before R_Init.", "kind": "function", "line": 49, "name": "V_Init", "signature": "void V_Init (void);"}, {"doc": "Draw a block from the specified source screen to the screen.", "kind": "function", "line": 52, "name": "V_CopyRect", "signature": "void V_CopyRect(int srcx, int srcy, byte *source, int width, int height, int destx, int desty);"}, {"kind": "function", "line": 56, "name": "V_DrawPatch", "signature": "void V_DrawPatch(int x, int y, patch_t *patch);"}, {"kind": "function", "line": 58, "name": "V_DrawPatchFlipped", "signature": "void V_DrawPatchFlipped(int x, int y, patch_t *patch);"}, {"kind": "function", "line": 59, "name": "V_DrawTLPatch", "signature": "void V_DrawTLPatch(int x, int y, patch_t *patch);"}, {"kind": "function", "line": 60, "name": "V_DrawAltTLPatch", "signature": "void V_DrawAltTLPatch(int x, int y, patch_t * patch);"}, {"kind": "function", "line": 61, "name": "V_DrawShadowedPatch", "signature": "void V_DrawShadowedPatch(int x, int y, patch_t *patch);"}, {"kind": "function", "line": 62, "name": "V_DrawXlaPatch", "signature": "void V_DrawXlaPatch(int x, int y, patch_t * patch);"}, {"kind": "function", "line": 63, "name": "V_DrawPatchDirect", "signature": "void V_DrawPatchDirect(int x, int y, patch_t *patch);"}, {"doc": "Draw a linear block of pixels into the view buffer.", "kind": "function", "line": 66, "name": "V_DrawBlock", "signature": "void V_DrawBlock(int x, int y, int width, int height, byte *src);"}, {"kind": "function", "line": 68, "name": "V_MarkRect", "signature": "void V_MarkRect(int x, int y, int width, int height);"}, {"kind": "function", "line": 70, "name": "V_DrawFilledBox", "signature": "void V_DrawFilledBox(int x, int y, int w, int h, int c);"}, {"kind": "function", "line": 72, "name": "V_DrawHorizLine", "signature": "void V_DrawHorizLine(int x, int y, int w, int c);"}, {"kind": "function", "line": 73, "name": "V_DrawVertLine", "signature": "void V_DrawVertLine(int x, int y, int h, int c);"}, {"kind": "function", "line": 74, "name": "V_DrawBox", "signature": "void V_DrawBox(int x, int y, int w, int h, int c);"}, {"doc": "Draw a raw screen lump", "kind": "function", "line": 77, "name": "V_DrawRawScreen", "signature": "void V_DrawRawScreen(byte *raw);"}, {"doc": "Temporarily switch to using a different buffer to draw graphics, etc.", "kind": "function", "line": 81, "name": "V_UseBuffer", "signature": "void V_UseBuffer(byte *buffer);"}, {"doc": "Return to using the normal screen buffer to draw graphics.", "kind": "function", "line": 85, "name": "V_RestoreBuffer", "signature": "void V_RestoreBuffer(void);"}, {"doc": "Save a screenshot of the current screen to a file, named in the format described in the string passed to the function, eg. \"DOOM%02i.pcx\"", "kind": "function", "line": 91, "name": "V_ScreenShot", "signature": "void V_ScreenShot(char *format);"}, {"doc": "Load the lookup table for translucency calculations from the TINTTAB lump.", "kind": "function", "line": 96, "name": "V_LoadTintTable", "signature": "void V_LoadTintTable(void);"}, {"doc": "villsa [STRIFE] Load the lookup table for translucency calculations from the XLATAB lump.", "kind": "function", "line": 102, "name": "V_LoadXlaTable", "signature": "void V_LoadXlaTable(void);"}, {"kind": "function", "line": 104, "name": "V_DrawMouseSpeedBox", "signature": "void V_DrawMouseSpeedBox(int speed);"}, {"doc": "define CENTERY\t\t\t(SCREENHEIGHT/2)", "kind": "variable", "line": 35, "name": "dirtybox", "signature": "extern int dirtybox[4];"}, {"kind": "variable", "line": 38, "name": "tinttable", "signature": "extern byte *tinttable;"}, {"kind": "macro", "line": 23, "name": "__V_VIDEO__", "signature": "#define __V_VIDEO__"}, {"kind": "macro", "line": 33, "name": "CENTERY", "signature": "#define CENTERY"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Generate a checksum of the WAD directory. include include include include \"m_misc.h\" include \"sha1.h\" include \"w_checksum.h\" include \"w_wad.h\"", "id": "progs/doomgeneric/w_checksum.c", "kind": "module", "label": "w_checksum.c", "language": "c", "sha256": "4b8d43198c0edc91", "symbol_count": 8, "symbols": [{"kind": "function", "line": 30, "name": "GetFileNumber", "signature": "static int GetFileNumber(wad_file_t *handle)"}, {"kind": "function", "line": 56, "name": "ChecksumAddLump", "signature": "static void ChecksumAddLump(sha1_context_t *sha1_context, lumpinfo_t *lump)"}, {"kind": "function", "line": 67, "name": "W_Checksum", "signature": "void W_Checksum(sha1_digest_t digest)"}, {"kind": "function", "line": 60, "name": "M_StringCopy", "signature": "M_StringCopy(buf, lump->name, sizeof(buf));"}, {"kind": "function", "line": 62, "name": "SHA1_UpdateString", "signature": "SHA1_UpdateString(sha1_context, buf);"}, {"kind": "function", "line": 63, "name": "SHA1_UpdateInt32", "signature": "SHA1_UpdateInt32(sha1_context, GetFileNumber(lump->wad_file));"}, {"kind": "function", "line": 72, "name": "SHA1_Init", "signature": "SHA1_Init(&sha1_context);"}, {"kind": "function", "line": 84, "name": "SHA1_Final", "signature": "SHA1_Final(digest, &sha1_context);"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Generate a checksum of the WAD directory. ifndef W_CHECKSUM_H define W_CHECKSUM_H include \"doomtype.h\"", "id": "progs/doomgeneric/w_checksum.h", "kind": "module", "label": "w_checksum.h", "language": "h", "sha256": "582713e2f6ec1bd7", "symbol_count": 2, "symbols": [{"doc": "include \"doomtype.h\"", "kind": "function", "line": 23, "name": "W_Checksum", "signature": "extern void W_Checksum(sha1_digest_t digest);"}, {"kind": "macro", "line": 20, "name": "W_CHECKSUM_H", "signature": "#define W_CHECKSUM_H"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: WAD I/O functions. include include \"config.h\" include \"doomtype.h\" include \"m_argv.h\" include \"w_file.h\"", "id": "progs/doomgeneric/w_file.c", "kind": "module", "label": "w_file.c", "language": "c", "sha256": "4748e33cf4d79290", "symbol_count": 6, "symbols": [{"kind": "function", "line": 52, "name": "W_OpenFile", "signature": "wad_file_t *W_OpenFile(char *path)"}, {"kind": "function", "line": 84, "name": "W_CloseFile", "signature": "void W_CloseFile(wad_file_t *wad)"}, {"kind": "function", "line": 89, "name": "W_Read", "signature": "size_t W_Read(wad_file_t *wad, unsigned int offset,\n void *buffer, size_t buffer_len)"}, {"doc": "include \"w_file.h\"", "kind": "variable", "line": 27, "name": "stdc_wad_file", "signature": "extern wad_file_class_t stdc_wad_file;"}, {"doc": "ifdef _WIN32", "kind": "variable", "line": 32, "name": "win32_wad_file", "signature": "extern wad_file_class_t win32_wad_file;"}, {"doc": "ifdef HAVE_MMAP", "kind": "variable", "line": 37, "name": "posix_wad_file", "signature": "extern wad_file_class_t posix_wad_file;"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: WAD I/O functions. ifndef __W_FILE__ define __W_FILE__ include include \"doomtype.h\"", "id": "progs/doomgeneric/w_file.h", "kind": "module", "label": "w_file.h", "language": "h", "sha256": "184e720fe30dfea6", "symbol_count": 9, "symbols": [{"kind": "struct", "line": 46, "name": "_wad_file_s"}, {"kind": "struct", "line": 28, "name": "wad_file_class_t"}, {"doc": "include include \"doomtype.h\"", "kind": "type_alias", "line": 25, "name": "wad_file_t", "signature": "typedef struct _wad_file_s wad_file_t;"}, {"doc": "Close the specified file.", "kind": "function", "line": 35, "name": "void", "signature": "void (*CloseFile)(wad_file_t *file);"}, {"doc": "Read data from the specified position in the file into the provided buffer. Returns the number of bytes read.", "kind": "function", "line": 40, "name": "size_t", "signature": "size_t (*Read)(wad_file_t *file, unsigned int offset, void *buffer, size_t buffer_len);"}, {"doc": "Open the specified file. Returns a pointer to a new wad_file_t handle for the WAD file, or NULL if it could not be opened.", "kind": "function", "line": 64, "name": "W_OpenFile", "signature": "wad_file_t *W_OpenFile(char *path);"}, {"doc": "Close the specified WAD file.", "kind": "function", "line": 68, "name": "W_CloseFile", "signature": "void W_CloseFile(wad_file_t *wad);"}, {"doc": "Read data from the specified file into the provided buffer. The data is read from the specified offset from the start of the file. Returns the number of bytes read.", "kind": "function", "line": 74, "name": "W_Read", "signature": "size_t W_Read(wad_file_t *wad, unsigned int offset, void *buffer, size_t buffer_len);"}, {"kind": "macro", "line": 21, "name": "__W_FILE__", "signature": "#define __W_FILE__"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: WAD I/O functions. include include \"m_misc.h\" include \"w_file.h\" include \"z_zone.h\"", "id": "progs/doomgeneric/w_file_stdc.c", "kind": "module", "label": "w_file_stdc.c", "language": "c", "sha256": "11eb3566843528c5", "symbol_count": 8, "symbols": [{"kind": "struct", "line": 25, "name": "stdc_wad_file_t"}, {"kind": "function", "line": 32, "name": "W_StdC_OpenFile", "signature": "static wad_file_t *W_StdC_OpenFile(char *path)"}, {"kind": "function", "line": 55, "name": "W_StdC_CloseFile", "signature": "static void W_StdC_CloseFile(wad_file_t *wad)"}, {"doc": "Read data from the specified position in the file into the provided buffer. Returns the number of bytes read.", "kind": "function", "line": 68, "name": "W_StdC_Read", "signature": "size_t W_StdC_Read(wad_file_t *wad, unsigned int offset,\n void *buffer, size_t ..."}, {"kind": "function", "line": 61, "name": "fclose", "signature": "fclose(stdc_wad->fstream);"}, {"kind": "function", "line": 63, "name": "Z_Free", "signature": "Z_Free(stdc_wad);"}, {"doc": "Jump to the specified position in the file.", "kind": "function", "line": 78, "name": "fseek", "signature": "fseek(stdc_wad->fstream, offset, SEEK_SET);"}, {"kind": "variable", "line": 30, "name": "stdc_wad_file", "signature": "extern wad_file_class_t stdc_wad_file;"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Common code to parse command line, identifying WAD files to load. include \"doomfeatures.h\" include \"d_iwad.h\" include \"m_argv.h\" include \"w_main.h\" include \"w_merge.h\" include \"w_wad.h\" include \"z_zone.h\" Parse the command line, merging WAD files that are sppecified. Returns true if at least one file was added.", "id": "progs/doomgeneric/w_main.c", "kind": "module", "label": "w_main.c", "language": "c", "sha256": "34ba50f57c907089", "symbol_count": 6, "symbols": [{"doc": "Parse the command line, merging WAD files that are sppecified. Returns true if at least one file was added.", "kind": "function", "line": 29, "name": "W_ParseCommandLine", "signature": "boolean W_ParseCommandLine(void)"}, {"kind": "function", "line": 59, "name": "printf", "signature": "printf(\" merging %s\\n\", filename);"}, {"kind": "function", "line": 61, "name": "W_MergeFile", "signature": "W_MergeFile(filename);"}, {"kind": "function", "line": 89, "name": "W_NWTDashMerge", "signature": "W_NWTDashMerge(filename);"}, {"kind": "function", "line": 116, "name": "W_NWTMergeFile", "signature": "W_NWTMergeFile(filename, W_NWT_MERGE_FLATS);"}, {"kind": "function", "line": 190, "name": "W_AddFile", "signature": "W_AddFile(filename);"}]}, {"doc": "Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Common code to parse command line, identifying WAD files to load. ifndef W_MAIN_H define W_MAIN_H", "id": "progs/doomgeneric/w_main.h", "kind": "module", "label": "w_main.h", "language": "h", "sha256": "966a837206d9df94", "symbol_count": 2, "symbols": [{"doc": "ifndef W_MAIN_H define W_MAIN_H", "kind": "function", "line": 20, "name": "W_ParseCommandLine", "signature": "boolean W_ParseCommandLine(void);"}, {"kind": "macro", "line": 19, "name": "W_MAIN_H", "signature": "#define W_MAIN_H"}]}, {"doc": "Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Handles merging of PWADs, similar to deutex's -merge option Ideally this should work exactly the same as in deutex, but trying to read the deutex source code made my brain hurt. ifndef W_MERGE_H define W_MERGE_H define W_NWT_MERGE_SPRITES 0x1 define W_NWT_MERGE_FLATS 0x2 Add a new WAD and merge it into the main directory", "id": "progs/doomgeneric/w_merge.h", "kind": "module", "label": "w_merge.h", "language": "h", "sha256": "4157220e20813e6d", "symbol_count": 7, "symbols": [{"doc": "Add a new WAD and merge it into the main directory", "kind": "function", "line": 28, "name": "W_MergeFile", "signature": "void W_MergeFile(char *filename);"}, {"doc": "NWT-style merging", "kind": "function", "line": 32, "name": "W_NWTMergeFile", "signature": "void W_NWTMergeFile(char *filename, int flags);"}, {"doc": "Acts the same as NWT's \"-merge\" option.", "kind": "function", "line": 36, "name": "W_NWTDashMerge", "signature": "void W_NWTDashMerge(char *filename);"}, {"doc": "Debug function that prints the WAD directory.", "kind": "function", "line": 40, "name": "W_PrintDirectory", "signature": "void W_PrintDirectory(void);"}, {"kind": "macro", "line": 22, "name": "W_MERGE_H", "signature": "#define W_MERGE_H"}, {"kind": "macro", "line": 23, "name": "W_NWT_MERGE_SPRITES", "signature": "#define W_NWT_MERGE_SPRITES"}, {"kind": "macro", "line": 25, "name": "W_NWT_MERGE_FLATS", "signature": "#define W_NWT_MERGE_FLATS"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Handles WAD file header, directory, lump I/O. include include include include include \"doomtype.h\" include \"config.h\" include \"d_iwad.h\"", "id": "progs/doomgeneric/w_wad.c", "kind": "module", "label": "w_wad.c", "language": "c", "sha256": "6e507df0a279abb0", "symbol_count": 30, "symbols": [{"doc": "Hash function used for lump names.", "kind": "function", "line": 71, "name": "W_LumpNameHash", "signature": "unsigned int W_LumpNameHash(const char *s)"}, {"doc": "Increase the size of the lumpinfo[] array to the specified size.", "kind": "function", "line": 89, "name": "ExtendLumpInfo", "signature": "static void ExtendLumpInfo(int newnumlumps)"}, {"doc": "W_AddFile All files are optional, but at least one file must be found (PWAD, if all required lumps are present). Files with a .wad extension are wadlink files with multiple lumps. Other files are single lumps with the base filename for the lump name.", "kind": "function", "line": 140, "name": "W_AddFile", "signature": "wad_file_t *W_AddFile (char *filename)"}, {"doc": "W_NumLumps", "kind": "function", "line": 246, "name": "W_NumLumps", "signature": "int W_NumLumps (void)"}, {"doc": "W_CheckNumForName Returns -1 if name not found.", "kind": "function", "line": 257, "name": "W_CheckNumForName", "signature": "int W_CheckNumForName (char* name)"}, {"doc": "W_GetNumForName Calls W_CheckNumForName, but bombs out if not found.", "kind": "function", "line": 308, "name": "W_GetNumForName", "signature": "int W_GetNumForName (char* name)"}, {"doc": "W_LumpLength Returns the buffer size needed to load the given lump.", "kind": "function", "line": 327, "name": "W_LumpLength", "signature": "int W_LumpLength (unsigned int lump)"}, {"doc": "W_ReadLump Loads the lump into the given buffer, which must be >= W_LumpLength().", "kind": "function", "line": 344, "name": "W_ReadLump", "signature": "void W_ReadLump(unsigned int lump, void *dest)"}, {"doc": "W_CacheLumpNum Load a lump into memory and return a pointer to a buffer containing the lump data. 'tag' is the type of zone memory buffer to allocate for the lump (usually PU_STATIC or PU_CACHE). If the lump is loaded as PU_STATIC, it should be released back using W_ReleaseLumpNum when no longer needed (do not use Z_ChangeTag).", "kind": "function", "line": 383, "name": "W_CacheLumpNum", "signature": "void *W_CacheLumpNum(int lumpnum, int tag)"}, {"doc": "W_CacheLumpName", "kind": "function", "line": 431, "name": "W_CacheLumpName", "signature": "void *W_CacheLumpName(char *name, int tag)"}, {"doc": "Release a lump back to the cache, so that it can be reused later without having to read from disk again, or alternatively, discarded if we run out of memory. Back in Vanilla Doom, this was just done using Z_ChangeTag directly, but now that we have WAD mmap, things are a bit more complicated ...", "kind": "function", "line": 445, "name": "W_ReleaseLumpNum", "signature": "void W_ReleaseLumpNum(int lumpnum)"}, {"kind": "function", "line": 466, "name": "W_ReleaseLumpName", "signature": "void W_ReleaseLumpName(char *name)"}, {"kind": "function", "line": 479, "name": "W_Profile", "signature": "void W_Profile (void)"}, {"doc": "Generate a hash table for fast lookups", "kind": "function", "line": 540, "name": "W_GenerateHashTable", "signature": "void W_GenerateHashTable(void)"}, {"kind": "function", "line": 587, "name": "W_CheckCorrectIWAD", "signature": "void W_CheckCorrectIWAD(GameMission_t mission)"}, {"doc": "include \"w_wad.h\"", "kind": "function", "line": 38, "name": "I_EndRead", "signature": "void I_EndRead (void);"}, {"kind": "function", "line": 98, "name": "I_Error", "signature": "I_Error (\"Couldn't realloc lumpinfo\");"}, {"kind": "function", "line": 106, "name": "memcpy", "signature": "memcpy(&newlumpinfo[i], &lumpinfo[i], sizeof(lumpinfo_t));"}, {"kind": "function", "line": 110, "name": "Z_ChangeUser", "signature": "Z_ChangeUser(newlumpinfo[i].cache, &newlumpinfo[i].cache);"}, {"doc": "All done.", "kind": "function", "line": 123, "name": "free", "signature": "free(lumpinfo);"}, {"kind": "function", "line": 159, "name": "printf", "signature": "printf (\" couldn't open %s\\n\", filename);"}, {"doc": "Name the lump after the base of the filename (without the extension).", "kind": "function", "line": 180, "name": "M_ExtractFileBase", "signature": "M_ExtractFileBase (filename, fileinfo->name);"}, {"doc": "WAD file", "kind": "function", "line": 187, "name": "W_Read", "signature": "W_Read(wad_file, 0, &header, sizeof(header));"}, {"kind": "function", "line": 224, "name": "strncpy", "signature": "strncpy(lump_p->name, filerover->name, 8);"}, {"kind": "function", "line": 229, "name": "Z_Free", "signature": "Z_Free(fileinfo);"}, {"kind": "function", "line": 355, "name": "I_BeginRead", "signature": "I_BeginRead ();"}, {"kind": "function", "line": 412, "name": "Z_ChangeTag", "signature": "Z_ChangeTag(lump->cache, tag);"}, {"kind": "function", "line": 524, "name": "fprintf", "signature": "fprintf (f,\"%s \",name);"}, {"kind": "function", "line": 532, "name": "fclose", "signature": "fclose (f);"}, {"kind": "function", "line": 556, "name": "memset", "signature": "memset(lumphash, 0, sizeof(lumpinfo_t *) * numlumps);"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: WAD I/O functions. ifndef __W_WAD__ define __W_WAD__ include include \"doomtype.h\" include \"d_mode.h\" include \"w_file.h\"", "id": "progs/doomgeneric/w_wad.h", "kind": "module", "label": "w_wad.h", "language": "h", "sha256": "1a269fdb156b6785", "symbol_count": 17, "symbols": [{"kind": "struct", "line": 41, "name": "lumpinfo_s"}, {"doc": "WADFILE I/O related stuff.", "kind": "type_alias", "line": 38, "name": "lumpinfo_t", "signature": "typedef struct lumpinfo_s lumpinfo_t;"}, {"kind": "function", "line": 57, "name": "W_AddFile", "signature": "wad_file_t *W_AddFile (char *filename);"}, {"kind": "function", "line": 59, "name": "W_CheckNumForName", "signature": "int W_CheckNumForName (char* name);"}, {"kind": "function", "line": 61, "name": "W_GetNumForName", "signature": "int W_GetNumForName (char* name);"}, {"kind": "function", "line": 62, "name": "W_LumpLength", "signature": "int W_LumpLength (unsigned int lump);"}, {"kind": "function", "line": 64, "name": "W_ReadLump", "signature": "void W_ReadLump (unsigned int lump, void *dest);"}, {"kind": "function", "line": 65, "name": "W_CacheLumpNum", "signature": "void* W_CacheLumpNum (int lump, int tag);"}, {"kind": "function", "line": 67, "name": "W_CacheLumpName", "signature": "void* W_CacheLumpName (char* name, int tag);"}, {"kind": "function", "line": 68, "name": "W_GenerateHashTable", "signature": "void W_GenerateHashTable(void);"}, {"kind": "function", "line": 70, "name": "W_LumpNameHash", "signature": "extern unsigned int W_LumpNameHash(const char *s);"}, {"kind": "function", "line": 72, "name": "W_ReleaseLumpNum", "signature": "void W_ReleaseLumpNum(int lump);"}, {"kind": "function", "line": 74, "name": "W_ReleaseLumpName", "signature": "void W_ReleaseLumpName(char *name);"}, {"kind": "function", "line": 75, "name": "W_CheckCorrectIWAD", "signature": "void W_CheckCorrectIWAD(GameMission_t mission);"}, {"kind": "variable", "line": 53, "name": "lumpinfo", "signature": "extern lumpinfo_t *lumpinfo;"}, {"kind": "variable", "line": 56, "name": "numlumps", "signature": "extern unsigned int numlumps;"}, {"kind": "macro", "line": 21, "name": "__W_WAD__", "signature": "#define __W_WAD__"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Intermission screens. include include \"z_zone.h\" include \"m_misc.h\" include \"m_random.h\" include \"deh_main.h\" include \"i_swap.h\" include \"i_system.h\"", "id": "progs/doomgeneric/wi_stuff.c", "kind": "module", "label": "wi_stuff.c", "language": "c", "sha256": "32d1915cf78896cc", "symbol_count": 79, "symbols": [{"kind": "struct", "line": 117, "name": "point_t"}, {"doc": "Animation. There is another anim_t used in p_spec.", "kind": "struct", "line": 129, "name": "anim_t"}, {"doc": "slam background", "kind": "function", "line": 402, "name": "WI_slamBackground", "signature": "void WI_slamBackground(void)"}, {"doc": "The ticker is used to detect keys because of timing issues in netgames.", "kind": "function", "line": 409, "name": "WI_Responder", "signature": "boolean WI_Responder(event_t* ev)"}, {"doc": "Draws \" Finished!\"", "kind": "function", "line": 416, "name": "WI_drawLF", "signature": "void WI_drawLF(void)"}, {"doc": "Draws \"Entering \"", "kind": "function", "line": 452, "name": "WI_drawEL", "signature": "void WI_drawEL(void)"}, {"kind": "function", "line": 469, "name": "WI_drawOnLnode", "signature": "void\nWI_drawOnLnode\n( int\t\tn,\n patch_t*\tc[] )"}, {"kind": "function", "line": 516, "name": "WI_initAnimatedBack", "signature": "void WI_initAnimatedBack(void)"}, {"kind": "function", "line": 547, "name": "WI_updateAnimatedBack", "signature": "void WI_updateAnimatedBack(void)"}, {"kind": "function", "line": 598, "name": "WI_drawAnimatedBack", "signature": "void WI_drawAnimatedBack(void)"}, {"doc": "Draws a number. If digits > 0, then use that many digits minimum, otherwise only use as many as necessary. Returns new x position.", "kind": "function", "line": 626, "name": "WI_drawNum", "signature": "int\nWI_drawNum\n( int\t\tx,\n int\t\ty,\n int\t\tn,\n int\t\tdigits )"}, {"kind": "function", "line": 683, "name": "WI_drawPercent", "signature": "void\nWI_drawPercent\n( int\t\tx,\n int\t\ty,\n int\t\tp )"}, {"doc": "Display level completion time and par, or \"sucks\" message if overflow.", "kind": "function", "line": 703, "name": "WI_drawTime", "signature": "void\nWI_drawTime\n( int\t\tx,\n int\t\ty,\n int\t\tt )"}, {"kind": "function", "line": 738, "name": "WI_End", "signature": "void WI_End(void)"}, {"kind": "function", "line": 745, "name": "WI_initNoState", "signature": "void WI_initNoState(void)"}, {"kind": "function", "line": 752, "name": "WI_updateNoState", "signature": "void WI_updateNoState(void)"}, {"kind": "function", "line": 770, "name": "WI_initShowNextLoc", "signature": "void WI_initShowNextLoc(void)"}, {"kind": "function", "line": 780, "name": "WI_updateShowNextLoc", "signature": "void WI_updateShowNextLoc(void)"}, {"kind": "function", "line": 790, "name": "WI_drawShowNextLoc", "signature": "void WI_drawShowNextLoc(void)"}, {"kind": "function", "line": 831, "name": "WI_drawNoState", "signature": "void WI_drawNoState(void)"}, {"kind": "function", "line": 837, "name": "WI_fragSum", "signature": "int WI_fragSum(int playernum)"}, {"kind": "function", "line": 866, "name": "WI_initDeathmatchStats", "signature": "void WI_initDeathmatchStats(void)"}, {"kind": "function", "line": 895, "name": "WI_updateDeathmatchStats", "signature": "void WI_updateDeathmatchStats(void)"}, {"kind": "function", "line": 998, "name": "WI_drawDeathmatchStats", "signature": "void WI_drawDeathmatchStats(void)"}, {"kind": "function", "line": 1088, "name": "WI_initNetgameStats", "signature": "void WI_initNetgameStats(void)"}, {"kind": "function", "line": 1114, "name": "WI_updateNetgameStats", "signature": "void WI_updateNetgameStats(void)"}, {"kind": "function", "line": 1269, "name": "WI_drawNetgameStats", "signature": "void WI_drawNetgameStats(void)"}, {"kind": "function", "line": 1328, "name": "WI_initStats", "signature": "void WI_initStats(void)"}, {"kind": "function", "line": 1340, "name": "WI_updateStats", "signature": "void WI_updateStats(void)"}, {"kind": "function", "line": 1446, "name": "WI_drawStats", "signature": "void WI_drawStats(void)"}, {"kind": "function", "line": 1480, "name": "WI_checkForAccelerate", "signature": "void WI_checkForAccelerate(void)"}, {"doc": "Updates stuff each tick", "kind": "function", "line": 1514, "name": "WI_Ticker", "signature": "void WI_Ticker(void)"}, {"doc": "Common load/unload function. Iterates over all the graphics lumps to be loaded/unloaded into memory.", "kind": "function", "line": 1553, "name": "WI_loadUnloadData", "signature": "static void WI_loadUnloadData(load_callback_t callback)"}, {"kind": "function", "line": 1703, "name": "WI_loadCallback", "signature": "static void WI_loadCallback(char *name, patch_t **variable)"}, {"kind": "function", "line": 1708, "name": "WI_loadData", "signature": "void WI_loadData(void)"}, {"kind": "function", "line": 1734, "name": "WI_unloadCallback", "signature": "static void WI_unloadCallback(char *name, patch_t **variable)"}, {"kind": "function", "line": 1740, "name": "WI_unloadData", "signature": "void WI_unloadData(void)"}, {"kind": "function", "line": 1751, "name": "WI_Drawer", "signature": "void WI_Drawer (void)"}, {"kind": "function", "line": 1774, "name": "WI_initVariables", "signature": "void WI_initVariables(wbstartstruct_t* wbstartstruct)"}, {"kind": "function", "line": 1817, "name": "WI_Start", "signature": "void WI_Start(wbstartstruct_t* wbstartstruct)"}, {"kind": "function", "line": 404, "name": "V_DrawPatch", "signature": "V_DrawPatch(0, 0, background);"}, {"doc": "DEBUG", "kind": "function", "line": 513, "name": "printf", "signature": "printf(\"Could not place patch on level %d\", n+1);"}, {"doc": "Don't call WI_End yet. G_WorldDone doesnt immediately change gamestate, so WI_Drawer is still going to get run until that happens. If we do that after WI_End (which unloads all the graphics), we're in trouble. WI_End();", "kind": "function", "line": 764, "name": "G_WorldDone", "signature": "G_WorldDone();"}, {"kind": "function", "line": 923, "name": "S_StartSound", "signature": "S_StartSound(0, sfx_barexp);"}, {"kind": "function", "line": 1524, "name": "S_ChangeMusic", "signature": "else S_ChangeMusic(mus_inter, true);"}, {"kind": "function", "line": 1548, "name": "void", "signature": "typedef void (*load_callback_t)(char *lumpname, patch_t **variable);"}, {"kind": "function", "line": 1564, "name": "DEH_snprintf", "signature": "DEH_snprintf(name, 9, \"CWILV%2.2d\", i);"}, {"kind": "function", "line": 1565, "name": "callback", "signature": "callback(name, &lnames[i]);"}, {"kind": "function", "line": 1688, "name": "M_StringCopy", "signature": "M_StringCopy(name, DEH_String(\"INTERPIC\"), sizeof(name));"}, {"kind": "function", "line": 1737, "name": "W_ReleaseLumpName", "signature": "W_ReleaseLumpName(name);"}, {"kind": "function", "line": 1786, "name": "RNGCHECK", "signature": "else RNGCHECK(wbs->epsd, 0, 2);"}, {"kind": "macro", "line": 61, "name": "NUMEPISODES", "signature": "#define NUMEPISODES"}, {"kind": "macro", "line": 62, "name": "NUMMAPS", "signature": "#define NUMMAPS"}, {"kind": "macro", "line": 75, "name": "WI_TITLEY", "signature": "#define WI_TITLEY"}, {"kind": "macro", "line": 76, "name": "WI_SPACINGY", "signature": "#define WI_SPACINGY"}, {"kind": "macro", "line": 79, "name": "SP_STATSX", "signature": "#define SP_STATSX"}, {"kind": "macro", "line": 80, "name": "SP_STATSY", "signature": "#define SP_STATSY"}, {"kind": "macro", "line": 81, "name": "SP_TIMEX", "signature": "#define SP_TIMEX"}, {"kind": "macro", "line": 83, "name": "SP_TIMEY", "signature": "#define SP_TIMEY"}, {"kind": "macro", "line": 87, "name": "NG_STATSY", "signature": "#define NG_STATSY"}, {"kind": "macro", "line": 88, "name": "NG_STATSX", "signature": "#define NG_STATSX"}, {"kind": "macro", "line": 89, "name": "NG_SPACINGX", "signature": "#define NG_SPACINGX"}, {"kind": "macro", "line": 94, "name": "DM_MATRIXX", "signature": "#define DM_MATRIXX"}, {"kind": "macro", "line": 95, "name": "DM_MATRIXY", "signature": "#define DM_MATRIXY"}, {"kind": "macro", "line": 96, "name": "DM_SPACINGX", "signature": "#define DM_SPACINGX"}, {"kind": "macro", "line": 98, "name": "DM_TOTALSX", "signature": "#define DM_TOTALSX"}, {"kind": "macro", "line": 100, "name": "DM_KILLERSX", "signature": "#define DM_KILLERSX"}, {"kind": "macro", "line": 102, "name": "DM_KILLERSY", "signature": "#define DM_KILLERSY"}, {"kind": "macro", "line": 103, "name": "DM_VICTIMSX", "signature": "#define DM_VICTIMSX"}, {"kind": "macro", "line": 104, "name": "DM_VICTIMSY", "signature": "#define DM_VICTIMSY"}, {"kind": "macro", "line": 221, "name": "ANIM", "signature": "#define ANIM(type, period, nanims, x, y, nexttic)"}, {"kind": "macro", "line": 288, "name": "SP_KILLS", "signature": "#define SP_KILLS"}, {"kind": "macro", "line": 289, "name": "SP_ITEMS", "signature": "#define SP_ITEMS"}, {"kind": "macro", "line": 290, "name": "SP_SECRET", "signature": "#define SP_SECRET"}, {"kind": "macro", "line": 291, "name": "SP_FRAGS", "signature": "#define SP_FRAGS"}, {"kind": "macro", "line": 292, "name": "SP_TIME", "signature": "#define SP_TIME"}, {"kind": "macro", "line": 293, "name": "SP_PAR", "signature": "#define SP_PAR"}, {"kind": "macro", "line": 294, "name": "SP_PAUSE", "signature": "#define SP_PAUSE"}, {"kind": "macro", "line": 298, "name": "SHOWNEXTLOCDELAY", "signature": "#define SHOWNEXTLOCDELAY"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Intermission. ifndef __WI_STUFF__ define __WI_STUFF__ #include \"v_video.h\" include \"doomdef.h\" States for the intermission", "id": "progs/doomgeneric/wi_stuff.h", "kind": "module", "label": "wi_stuff.h", "language": "h", "sha256": "a4f6e9e22c710099", "symbol_count": 5, "symbols": [{"doc": "Called by main loop, animate the intermission.", "kind": "function", "line": 36, "name": "WI_Ticker", "signature": "void WI_Ticker (void);"}, {"doc": "Called by main loop, draws the intermission directly into the screen buffer.", "kind": "function", "line": 40, "name": "WI_Drawer", "signature": "void WI_Drawer (void);"}, {"doc": "Setup for an intermission screen.", "kind": "function", "line": 43, "name": "WI_Start", "signature": "void WI_Start(wbstartstruct_t* wbstartstruct);"}, {"doc": "Shut down the intermission screen", "kind": "function", "line": 46, "name": "WI_End", "signature": "void WI_End(void);"}, {"kind": "macro", "line": 20, "name": "__WI_STUFF__", "signature": "#define __WI_STUFF__"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Zone Memory Allocation. Neat. include \"z_zone.h\" include \"i_system.h\" include \"doomtype.h\" ZONE MEMORY ALLOCATION There is never any space between memblocks, and there will never be two contiguous free memblocks. The rover can be left pointing at a non-empty block.", "id": "progs/doomgeneric/z_zone.c", "kind": "module", "label": "z_zone.c", "language": "c", "sha256": "14c39a8097d1f3af", "symbol_count": 21, "symbols": [{"kind": "struct", "line": 39, "name": "memblock_s"}, {"kind": "struct", "line": 50, "name": "memzone_t"}, {"doc": "define MEM_ALIGN sizeof(void *) define ZONEID\t0x1d4a11", "kind": "type_alias", "line": 38, "name": "size", "signature": "typedef struct memblock_s { int size;"}, {"doc": "Z_ClearZone", "kind": "function", "line": 71, "name": "Z_ClearZone", "signature": "void Z_ClearZone (memzone_t* zone)"}, {"doc": "Z_Init", "kind": "function", "line": 97, "name": "Z_Init", "signature": "void Z_Init (void)"}, {"doc": "Z_Free", "kind": "function", "line": 126, "name": "Z_Free", "signature": "void Z_Free (void* ptr)"}, {"doc": "Z_Malloc You can pass a NULL user if the tag is < PU_PURGELEVEL. define MINFRAGMENT\t\t64", "kind": "function", "line": 182, "name": "Z_Malloc", "signature": "void*\nZ_Malloc\n( int\t\tsize,\n int\t\ttag,\n void*\t\tuser )"}, {"doc": "Z_FreeTags", "kind": "function", "line": 297, "name": "Z_FreeTags", "signature": "void\nZ_FreeTags\n( int\t\tlowtag,\n int\t\thightag )"}, {"doc": "Z_DumpHeap Note: TFileDumpHeap( stdout ) ?", "kind": "function", "line": 327, "name": "Z_DumpHeap", "signature": "void\nZ_DumpHeap\n( int\t\tlowtag,\n int\t\thightag )"}, {"doc": "Z_FileDumpHeap", "kind": "function", "line": 367, "name": "Z_FileDumpHeap", "signature": "void Z_FileDumpHeap (FILE* f)"}, {"doc": "Z_CheckHeap", "kind": "function", "line": 400, "name": "Z_CheckHeap", "signature": "void Z_CheckHeap (void)"}, {"doc": "Z_ChangeTag", "kind": "function", "line": 429, "name": "Z_ChangeTag2", "signature": "void Z_ChangeTag2(void *ptr, int tag, char *file, int line)"}, {"kind": "function", "line": 445, "name": "Z_ChangeUser", "signature": "void Z_ChangeUser(void *ptr, void **user)"}, {"doc": "Z_FreeMemory", "kind": "function", "line": 466, "name": "Z_FreeMemory", "signature": "int Z_FreeMemory (void)"}, {"kind": "function", "line": 483, "name": "Z_ZoneSize", "signature": "unsigned int Z_ZoneSize(void)"}, {"doc": "scanned all the way around the list", "kind": "function", "line": 222, "name": "I_Error", "signature": "I_Error (\"Z_Malloc: failed on allocation of %i bytes\", size);"}, {"kind": "function", "line": 333, "name": "printf", "signature": "printf (\"zone size: %i location: %p\\n\", mainzone->size,mainzone);"}, {"kind": "function", "line": 370, "name": "fprintf", "signature": "fprintf (f,\"zone size: %i location: %p\\n\",mainzone->size,mainzone);"}, {"kind": "macro", "line": 35, "name": "MEM_ALIGN", "signature": "#define MEM_ALIGN"}, {"kind": "macro", "line": 37, "name": "ZONEID", "signature": "#define ZONEID"}, {"kind": "macro", "line": 181, "name": "MINFRAGMENT", "signature": "#define MINFRAGMENT"}]}, {"doc": "Copyright(C) 1993-1996 Id Software, Inc. Copyright(C) 2005-2014 Simon Howard This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. DESCRIPTION: Zone Memory Allocation, perhaps NeXT ObjectiveC inspired. Remark: this was the only stuff that, according to John Carmack, might have been useful for Quake. ifndef __Z_ZONE__ define __Z_ZONE__ include ZONE MEMORY", "id": "progs/doomgeneric/z_zone.h", "kind": "module", "label": "z_zone.h", "language": "h", "sha256": "2a36c0cec2c11586", "symbol_count": 13, "symbols": [{"kind": "function", "line": 51, "name": "Z_Init", "signature": "void Z_Init (void);"}, {"kind": "function", "line": 54, "name": "Z_Malloc", "signature": "void* Z_Malloc (int size, int tag, void *ptr);"}, {"kind": "function", "line": 55, "name": "Z_Free", "signature": "void Z_Free (void *ptr);"}, {"kind": "function", "line": 56, "name": "Z_FreeTags", "signature": "void Z_FreeTags (int lowtag, int hightag);"}, {"kind": "function", "line": 57, "name": "Z_DumpHeap", "signature": "void Z_DumpHeap (int lowtag, int hightag);"}, {"kind": "function", "line": 58, "name": "Z_FileDumpHeap", "signature": "void Z_FileDumpHeap (FILE *f);"}, {"kind": "function", "line": 59, "name": "Z_CheckHeap", "signature": "void Z_CheckHeap (void);"}, {"kind": "function", "line": 60, "name": "Z_ChangeTag2", "signature": "void Z_ChangeTag2 (void *ptr, int tag, char *file, int line);"}, {"kind": "function", "line": 61, "name": "Z_ChangeUser", "signature": "void Z_ChangeUser(void *ptr, void **user);"}, {"kind": "function", "line": 62, "name": "Z_FreeMemory", "signature": "int Z_FreeMemory (void);"}, {"kind": "function", "line": 63, "name": "Z_ZoneSize", "signature": "unsigned int Z_ZoneSize(void);"}, {"kind": "macro", "line": 25, "name": "__Z_ZONE__", "signature": "#define __Z_ZONE__"}, {"kind": "macro", "line": 69, "name": "Z_ChangeTag", "signature": "#define Z_ChangeTag(p,t)"}]}, {"id": "progs/lua/lua_main.c", "kind": "module", "label": "lua_main.c", "language": "c", "sha256": "3c173ef1dfc66bd8", "symbol_count": 25, "symbols": [{"kind": "function", "line": 21, "name": "luaL_require_global", "signature": "static void luaL_require_global(lua_State *L, const char *name,\n l..."}, {"kind": "function", "line": 27, "name": "set_arg_table", "signature": "static void set_arg_table(lua_State *L, int argc, char **argv, int first)"}, {"kind": "function", "line": 40, "name": "docode", "signature": "static int docode(lua_State *L, const char *code)"}, {"kind": "function", "line": 50, "name": "dofile", "signature": "static int dofile(lua_State *L, const char *name)"}, {"kind": "function", "line": 60, "name": "repl", "signature": "static int repl(lua_State *L)"}, {"kind": "function", "line": 104, "name": "main", "signature": "int main(int argc, char **argv)"}, {"kind": "function", "line": 5, "name": "module", "signature": "* C module (minios.c) can be registered globally before any script runs: * `minios.run(...)`, `minios.time_ms()`, etc. are available as a plain global * table, exactly like `import minios` in MicroPyt"}, {"kind": "function", "line": 24, "name": "luaL_requiref", "signature": "luaL_requiref(L, name, openf, 1);"}, {"kind": "function", "line": 25, "name": "lua_pop", "signature": "lua_pop(L, 1);"}, {"doc": "#include \"lua.h\" #include \"lauxlib.h\" #include \"lualib.h\" int luaopen_minios(lua_State *L); static void luaL_require_global(lua_State *L, const char *name, lua_CFunction openf) { luaL_requiref(L, name, openf, 1); lua_pop(L, 1); } static void set_arg_table(lua_State *L, int argc, char **argv, int first) { /* Set the global `arg` table: arg[0] is the script, arg[1..] the rest.", "kind": "function", "line": 30, "name": "lua_createtable", "signature": "lua_createtable(L, argc - first, 1);"}, {"kind": "function", "line": 31, "name": "lua_pushinteger", "signature": "lua_pushinteger(L, argc - first);"}, {"kind": "function", "line": 32, "name": "lua_setfield", "signature": "lua_setfield(L, -2, \"n\");"}, {"kind": "function", "line": 35, "name": "lua_pushstring", "signature": "lua_pushstring(L, argv[first + i]);"}, {"kind": "function", "line": 36, "name": "lua_rawseti", "signature": "lua_rawseti(L, -2, i);"}, {"kind": "function", "line": 38, "name": "lua_setglobal", "signature": "lua_setglobal(L, \"arg\");"}, {"kind": "function", "line": 45, "name": "fprintf", "signature": "fprintf(stderr, \"lua: %s\\n\", msg ? msg : \"unknown error\");"}, {"kind": "function", "line": 63, "name": "printf", "signature": "printf(\"Lua %s (MiniOS) type 'os.exit()' to quit\\n\", LUA_VERSION);"}, {"kind": "function", "line": 66, "name": "fflush", "signature": "fflush(stdout);"}, {"kind": "function", "line": 74, "name": "snprintf", "signature": "snprintf(buf, sizeof(buf), \"return %s\", line + 1);"}, {"kind": "function", "line": 92, "name": "lua_getglobal", "signature": "lua_getglobal(L, \"print\");"}, {"kind": "function", "line": 93, "name": "lua_pushvalue", "signature": "lua_pushvalue(L, i);"}, {"kind": "function", "line": 94, "name": "lua_call", "signature": "lua_call(L, 1, 0);"}, {"kind": "function", "line": 100, "name": "lua_settop", "signature": "lua_settop(L, 0);"}, {"kind": "function", "line": 108, "name": "luaL_openlibs", "signature": "luaL_openlibs(L);"}, {"kind": "function", "line": 146, "name": "lua_close", "signature": "lua_close(L);"}]}, {"id": "progs/lua/minios.c", "kind": "module", "label": "minios.c", "language": "c", "sha256": "450d7f5200d74dde", "symbol_count": 27, "symbols": [{"doc": "/* ── raw syscall helpers (x86-64 Linux ABI) ─────────────────────────── static long msys(long n, long a1, long a2, long a3) { long ret; __asm__ volatile( \"syscall\" : \"=a\"(ret) : \"a\"(n), \"D\"(a1), \"S\"(a2), \"d\"(a3) : \"rcx\", \"r11\", \"memory\" ); return ret; } /* 5-argument syscall (SYS_SPAWN needs path, redirect, argc, argv).", "kind": "function", "line": 37, "name": "msys5", "signature": "static long msys5(long n, long a1, long a2, long a3, long a4, long a5)"}, {"doc": "} /* ── MiniOS syscall numbers (canonical table from minios_abi.h) ─────── #include \"minios_abi.h\" #define SYS_TIME_MS MINIOS_SYS_TIME #define SYS_PALETTE MINIOS_SYS_PALETTE #define SYS_PCSPK_INIT MINIOS_SYS_PCSPK_INIT #define SYS_PCSPK_TONE MINIOS_SYS_PCSPK_TONE #define SYS_RTC MINIOS_SYS_RTC #define SYS_FB_INFO MINIOS_SYS_FB_INFO #define SYS_PCSPK_VOL MINIOS_SYS_PCSPK_VOL #define SYS_SPAWN MINIOS_SYS_SPAWN /* ── minios.time_ms() ────────────────────────────────────────────────", "kind": "function", "line": 62, "name": "minios_time_ms", "signature": "static int minios_time_ms(lua_State *L)"}, {"doc": "#define SYS_PCSPK_INIT MINIOS_SYS_PCSPK_INIT #define SYS_PCSPK_TONE MINIOS_SYS_PCSPK_TONE #define SYS_RTC MINIOS_SYS_RTC #define SYS_FB_INFO MINIOS_SYS_FB_INFO #define SYS_PCSPK_VOL MINIOS_SYS_PCSPK_VOL #define SYS_SPAWN MINIOS_SYS_SPAWN /* ── minios.time_ms() ──────────────────────────────────────────────── static int minios_time_ms(lua_State *L) { lua_pushinteger(L, (lua_Integer)msys(SYS_TIME_MS, 0, 0, 0)); return 1; } /* ── minios.rtc() -> hour, minute, second ────────────────────────────", "kind": "function", "line": 68, "name": "minios_rtc", "signature": "static int minios_rtc(lua_State *L)"}, {"doc": "static int minios_rtc(lua_State *L) { int h, m, s; if (msys(SYS_RTC, (long)&h, (long)&m, (long)&s) < 0) { lua_pushnil(L); lua_pushstring(L, \"rtc read failed\"); return 2; } lua_pushinteger(L, h); lua_pushinteger(L, m); lua_pushinteger(L, s); return 3; } /* ── minios.fb_info() -> width, height, pitch ────────────────────────", "kind": "function", "line": 82, "name": "minios_fb_info", "signature": "static int minios_fb_info(lua_State *L)"}, {"doc": "static int minios_fb_info(lua_State *L) { int w, h, p; if (msys(SYS_FB_INFO, (long)&w, (long)&h, (long)&p) < 0) { lua_pushnil(L); lua_pushstring(L, \"fb_info failed\"); return 2; } lua_pushinteger(L, w); lua_pushinteger(L, h); lua_pushinteger(L, p); return 3; } /* ── minios.vol([v]) -> current volume ───────────────────────────────", "kind": "function", "line": 96, "name": "minios_vol", "signature": "static int minios_vol(lua_State *L)"}, {"doc": "/* ── minios.vol([v]) -> current volume ─────────────────────────────── static int minios_vol(lua_State *L) { if (lua_gettop(L) >= 1 && !lua_isnil(L, 1)) { int v = (int)luaL_checkinteger(L, 1); if (v < 0 || v > 100) return luaL_error(L, \"volume must be 0..100\"); lua_pushinteger(L, (lua_Integer)msys(SYS_PCSPK_VOL, v, 0, 0)); } else { lua_pushinteger(L, (lua_Integer)msys(SYS_PCSPK_VOL, -1, 0, 0)); } return 1; } /* ── minios.pal(buf) -- load a 768-byte VGA DAC palette ──────────────", "kind": "function", "line": 109, "name": "minios_pal", "signature": "static int minios_pal(lua_State *L)"}, {"doc": "return 1; } /* ── minios.pal(buf) -- load a 768-byte VGA DAC palette ────────────── static int minios_pal(lua_State *L) { size_t len; const char *buf = luaL_checklstring(L, 1, &len); if (len < 768) return luaL_error(L, \"palette must be 768 bytes\"); msys(SYS_PALETTE, (long)buf, 0, 0); return 0; } /* ── minios.pcspeaker(freq, ms) ──────────────────────────────────────", "kind": "function", "line": 119, "name": "minios_pcspeaker", "signature": "static int minios_pcspeaker(lua_State *L)"}, {"doc": "── minios.run(path[, args][, redirect]) -> exit code ─────────────── Runs a program through SYS_SPAWN (215), preserving the caller (Lua) so it can chain toolchain commands. args is an optional Lua table of strings; * redirect is an optional output file path that captures the console output.", "kind": "function", "line": 136, "name": "minios_run", "signature": "static int minios_run(lua_State *L)"}, {"kind": "function", "line": 191, "name": "luaopen_minios", "signature": "int luaopen_minios(lua_State *L)"}, {"kind": "function", "line": 27, "name": "volatile", "signature": "__asm__ volatile( \"syscall\" : \"=a\"(ret) : \"a\"(n), \"D\"(a1), \"S\"(a2), \"d\"(a3) : \"rcx\", \"r11\", \"memory\" );"}, {"kind": "function", "line": 63, "name": "lua_pushinteger", "signature": "lua_pushinteger(L, (lua_Integer)msys(SYS_TIME_MS, 0, 0, 0));"}, {"kind": "function", "line": 71, "name": "lua_pushnil", "signature": "lua_pushnil(L);"}, {"kind": "function", "line": 72, "name": "lua_pushstring", "signature": "lua_pushstring(L, \"rtc read failed\");"}, {"kind": "function", "line": 114, "name": "msys", "signature": "msys(SYS_PALETTE, (long)buf, 0, 0);"}, {"doc": "── minios.run(path[, args][, redirect]) -> exit code ─────────────── Runs a program through SYS_SPAWN (215), preserving the caller (Lua) so it can chain toolchain commands. args is an optional Lua table of strings; * redirect is an optional output file path that captures the console output. static int minios_run(lua_State *L) { const char *path = luaL_checkstring(L, 1); const char *argv[66]; size_t n = 0; argv[0] = path; if (lua_gettop(L) >= 2 && lua_istable(L, 2)) { lua_pushnil(L); while (lua_next(L, 2) != 0) { /* key is at -2, value at -1", "kind": "function", "line": 146, "name": "lua_pushvalue", "signature": "lua_pushvalue(L, -1);"}, {"kind": "function", "line": 149, "name": "lua_pop", "signature": "lua_pop(L, 2);"}, {"kind": "function", "line": 150, "name": "luaL_error", "signature": "return luaL_error(L, \"args must be strings\");"}, {"kind": "function", "line": 193, "name": "lua_newtable", "signature": "lua_newtable(L);"}, {"kind": "function", "line": 194, "name": "luaL_setfuncs", "signature": "luaL_setfuncs(L, minios_funcs, 0);"}, {"kind": "macro", "line": 52, "name": "SYS_TIME_MS", "signature": "#define SYS_TIME_MS"}, {"kind": "macro", "line": 53, "name": "SYS_PALETTE", "signature": "#define SYS_PALETTE"}, {"kind": "macro", "line": 54, "name": "SYS_PCSPK_INIT", "signature": "#define SYS_PCSPK_INIT"}, {"kind": "macro", "line": 55, "name": "SYS_PCSPK_TONE", "signature": "#define SYS_PCSPK_TONE"}, {"kind": "macro", "line": 56, "name": "SYS_RTC", "signature": "#define SYS_RTC"}, {"kind": "macro", "line": 57, "name": "SYS_FB_INFO", "signature": "#define SYS_FB_INFO"}, {"kind": "macro", "line": 58, "name": "SYS_PCSPK_VOL", "signature": "#define SYS_PCSPK_VOL"}, {"kind": "macro", "line": 59, "name": "SYS_SPAWN", "signature": "#define SYS_SPAWN"}]}, {"doc": "MiniOS frozen library package.", "id": "progs/micropython/variants/minios/lib/__init__.py", "kind": "module", "label": "__init__.py", "language": "py", "sha256": "51f3b511a54d6d26", "symbol_count": 0, "symbols": []}, {"doc": "hello.py -- frozen demo: runs at import time as a smoke test.", "id": "progs/micropython/variants/minios/lib/hello.py", "kind": "module", "label": "hello.py", "language": "py", "sha256": "1e22dbf31982b6fd", "symbol_count": 0, "symbols": []}, {"doc": "manifest.py -- frozen modules for the MiniOS MicroPython variant. Scripts listed here are compiled to .mpy by mpy-cross and embedded in the firmware binary, so they are available as frozen imports without touching the filesystem.", "id": "progs/micropython/variants/minios/manifest.py", "kind": "module", "label": "manifest.py", "language": "py", "sha256": "c1e5f0994826444a", "symbol_count": 0, "symbols": []}, {"id": "progs/micropython/variants/minios/minios_module.c", "kind": "module", "label": "minios_module.c", "language": "c", "sha256": "cfb459e9cf81271a", "symbol_count": 33, "symbols": [{"doc": "/* ── raw syscall helper (x86-64 Linux ABI) ─────────────────────────── static long msys(long n, long a1, long a2, long a3) { long ret; __asm__ volatile( \"syscall\" : \"=a\"(ret) : \"a\"(n), \"D\"(a1), \"S\"(a2), \"d\"(a3) : \"rcx\", \"r11\", \"memory\" ); return ret; } /* 5-argument syscall (SYS_SPAWN needs path, redirect, argc, argv, status).", "kind": "function", "line": 26, "name": "msys5", "signature": "static long msys5(long n, long a1, long a2, long a3, long a4, long a5)"}, {"doc": "} /* ── MiniOS syscall numbers (canonical table from minios_abi.h) ─────── #include \"minios_abi.h\" #define SYS_TIME_MS MINIOS_SYS_TIME #define SYS_PALETTE MINIOS_SYS_PALETTE #define SYS_PCSPK_INIT MINIOS_SYS_PCSPK_INIT #define SYS_PCSPK_TONE MINIOS_SYS_PCSPK_TONE #define SYS_RTC MINIOS_SYS_RTC #define SYS_FB_INFO MINIOS_SYS_FB_INFO #define SYS_PCSPK_VOL MINIOS_SYS_PCSPK_VOL #define SYS_SPAWN MINIOS_SYS_SPAWN /* ── minios.time_ms() -> int ─────────────────────────────────────────", "kind": "function", "line": 51, "name": "minios_time_ms", "signature": "static mp_obj_t minios_time_ms(void)"}, {"doc": "#define SYS_PCSPK_TONE MINIOS_SYS_PCSPK_TONE #define SYS_RTC MINIOS_SYS_RTC #define SYS_FB_INFO MINIOS_SYS_FB_INFO #define SYS_PCSPK_VOL MINIOS_SYS_PCSPK_VOL #define SYS_SPAWN MINIOS_SYS_SPAWN /* ── minios.time_ms() -> int ───────────────────────────────────────── static mp_obj_t minios_time_ms(void) { return mp_obj_new_int_from_uint((uint32_t)msys(SYS_TIME_MS, 0, 0, 0)); } static MP_DEFINE_CONST_FUN_OBJ_0(minios_time_ms_obj, minios_time_ms); /* ── minios.rtc() -> (hour, minute, second) ──────────────────────────", "kind": "function", "line": 58, "name": "minios_rtc", "signature": "static mp_obj_t minios_rtc(void)"}, {"doc": "long ret = msys(SYS_RTC, (long)&h, (long)&m, (long)&s); if (ret < 0) { mp_raise_OSError(-ret); } mp_obj_t tuple[3] = { mp_obj_new_int(h), mp_obj_new_int(m), mp_obj_new_int(s), }; return mp_obj_new_tuple(3, tuple); } static MP_DEFINE_CONST_FUN_OBJ_0(minios_rtc_obj, minios_rtc); /* ── minios.fb_info() -> (width, height, pitch) ──────────────────────", "kind": "function", "line": 75, "name": "minios_fb_info", "signature": "static mp_obj_t minios_fb_info(void)"}, {"doc": "static mp_obj_t minios_vol(size_t n_args, const mp_obj_t *args) { if (n_args == 0) { /* get volume: pass -1 to signal \"read\" return mp_obj_new_int((int)msys(SYS_PCSPK_VOL, -1, 0, 0)); } int v = mp_obj_get_int(args[0]); if (v < 0 || v > 100) { mp_raise_ValueError(MP_ERROR_TEXT(\"volume must be 0..100\")); } return mp_obj_new_int((int)msys(SYS_PCSPK_VOL, v, 0, 0)); } static MP_DEFINE_CONST_FUN_OBJ_VAR(minios_vol_obj, 0, minios_vol); /* ── minios.pal(buf) -- load a 768-byte VGA DAC palette ──────────────", "kind": "function", "line": 110, "name": "minios_pal", "signature": "static mp_obj_t minios_pal(mp_obj_t buf_in)"}, {"doc": "mp_buffer_info_t bufinfo; mp_get_buffer_raise(buf_in, &bufinfo, MP_BUFFER_READ); if (bufinfo.len < 768) { mp_raise_ValueError(MP_ERROR_TEXT(\"palette must be 768 bytes\")); } long ret = msys(SYS_PALETTE, (long)bufinfo.buf, 0, 0); if (ret < 0) { mp_raise_OSError(-ret); } return mp_const_none; } static MP_DEFINE_CONST_FUN_OBJ_1(minios_pal_obj, minios_pal); /* ── minios.pcspeaker(freq, ms) -- play a tone for ms milliseconds ──", "kind": "function", "line": 126, "name": "minios_pcspeaker", "signature": "static mp_obj_t minios_pcspeaker(mp_obj_t freq_in, mp_obj_t ms_in)"}, {"doc": "── minios.run(path, args=None, redirect=None) -> exit code ───────── Runs a program through the kernel SYS_SPAWN (215) boundary, which preserves the caller (MicroPython) so it can chain toolchain commands. `args` is an optional list/tuple of argument strings; `redirect` is an optional output file path that captures the program's console output. * Returns the child's exit code, or raises OSError on a kernel fault.", "kind": "function", "line": 148, "name": "minios_run", "signature": "static mp_obj_t minios_run(size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args)"}, {"kind": "function", "line": 16, "name": "volatile", "signature": "__asm__ volatile( \"syscall\" : \"=a\"(ret) : \"a\"(n), \"D\"(a1), \"S\"(a2), \"d\"(a3) : \"rcx\", \"r11\", \"memory\" );"}, {"kind": "function", "line": 53, "name": "mp_obj_new_int_from_uint", "signature": "return mp_obj_new_int_from_uint((uint32_t)msys(SYS_TIME_MS, 0, 0, 0));"}, {"kind": "function", "line": 55, "name": "MP_DEFINE_CONST_FUN_OBJ_0", "signature": "static MP_DEFINE_CONST_FUN_OBJ_0(minios_time_ms_obj, minios_time_ms);"}, {"kind": "function", "line": 63, "name": "mp_raise_OSError", "signature": "mp_raise_OSError(-ret);"}, {"kind": "function", "line": 70, "name": "mp_obj_new_tuple", "signature": "return mp_obj_new_tuple(3, tuple);"}, {"doc": "── minios.vol([value]) -> int ────────────────────────────────────── vol() returns current volume (0..100) vol(n) sets volume, returns new value static mp_obj_t minios_vol(size_t n_args, const mp_obj_t *args) { if (n_args == 0) { /* get volume: pass -1 to signal \"read\"", "kind": "function", "line": 99, "name": "mp_obj_new_int", "signature": "return mp_obj_new_int((int)msys(SYS_PCSPK_VOL, -1, 0, 0));"}, {"kind": "function", "line": 103, "name": "mp_raise_ValueError", "signature": "mp_raise_ValueError(MP_ERROR_TEXT(\"volume must be 0..100\"));"}, {"kind": "function", "line": 107, "name": "MP_DEFINE_CONST_FUN_OBJ_VAR", "signature": "static MP_DEFINE_CONST_FUN_OBJ_VAR(minios_vol_obj, 0, minios_vol);"}, {"kind": "function", "line": 113, "name": "mp_get_buffer_raise", "signature": "mp_get_buffer_raise(buf_in, &bufinfo, MP_BUFFER_READ);"}, {"kind": "function", "line": 123, "name": "MP_DEFINE_CONST_FUN_OBJ_1", "signature": "static MP_DEFINE_CONST_FUN_OBJ_1(minios_pal_obj, minios_pal);"}, {"kind": "function", "line": 130, "name": "msys", "signature": "msys(SYS_PCSPK_INIT, 0, 0, 0);"}, {"kind": "function", "line": 140, "name": "MP_DEFINE_CONST_FUN_OBJ_2", "signature": "static MP_DEFINE_CONST_FUN_OBJ_2(minios_pcspeaker_obj, minios_pcspeaker);"}, {"kind": "function", "line": 156, "name": "mp_arg_parse_all", "signature": "mp_arg_parse_all(n_args, pos_args, kw_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args);"}, {"kind": "function", "line": 168, "name": "mp_raise_TypeError", "signature": "mp_raise_TypeError(MP_ERROR_TEXT(\"args must be a list or tuple\"));"}, {"kind": "function", "line": 170, "name": "mp_obj_get_array", "signature": "mp_obj_get_array(args_in, &n, &items);"}, {"kind": "function", "line": 193, "name": "MP_DEFINE_CONST_FUN_OBJ_KW", "signature": "static MP_DEFINE_CONST_FUN_OBJ_KW(minios_run_obj, 1, minios_run);"}, {"kind": "function", "line": 207, "name": "MP_DEFINE_CONST_DICT", "signature": "static MP_DEFINE_CONST_DICT(minios_module_globals, minios_module_globals_table);"}, {"kind": "function", "line": 213, "name": "MP_REGISTER_MODULE", "signature": "MP_REGISTER_MODULE(MP_QSTR_minios, minios_module);"}, {"kind": "macro", "line": 41, "name": "SYS_TIME_MS", "signature": "#define SYS_TIME_MS"}, {"kind": "macro", "line": 42, "name": "SYS_PALETTE", "signature": "#define SYS_PALETTE"}, {"kind": "macro", "line": 43, "name": "SYS_PCSPK_INIT", "signature": "#define SYS_PCSPK_INIT"}, {"kind": "macro", "line": 44, "name": "SYS_PCSPK_TONE", "signature": "#define SYS_PCSPK_TONE"}, {"kind": "macro", "line": 45, "name": "SYS_RTC", "signature": "#define SYS_RTC"}, {"kind": "macro", "line": 46, "name": "SYS_FB_INFO", "signature": "#define SYS_FB_INFO"}, {"kind": "macro", "line": 47, "name": "SYS_PCSPK_VOL", "signature": "#define SYS_PCSPK_VOL"}, {"kind": "macro", "line": 48, "name": "SYS_SPAWN", "signature": "#define SYS_SPAWN"}]}, {"id": "progs/micropython/variants/minios/mpconfigvariant.h", "kind": "module", "label": "mpconfigvariant.h", "language": "h", "sha256": "6234cc6b5888fb75", "symbol_count": 38, "symbols": [{"kind": "macro", "line": 11, "name": "MICROPY_CONFIG_ROM_LEVEL", "signature": "#define MICROPY_CONFIG_ROM_LEVEL"}, {"kind": "macro", "line": 14, "name": "MICROPY_FLOAT_IMPL", "signature": "#define MICROPY_FLOAT_IMPL"}, {"kind": "macro", "line": 15, "name": "MICROPY_LONGINT_IMPL", "signature": "#define MICROPY_LONGINT_IMPL"}, {"kind": "macro", "line": 18, "name": "MICROPY_ERROR_REPORTING", "signature": "#define MICROPY_ERROR_REPORTING"}, {"kind": "macro", "line": 19, "name": "MICROPY_WARNINGS", "signature": "#define MICROPY_WARNINGS"}, {"kind": "macro", "line": 20, "name": "MICROPY_DEBUG_PRINTERS", "signature": "#define MICROPY_DEBUG_PRINTERS"}, {"kind": "macro", "line": 23, "name": "MICROPY_USE_READLINE", "signature": "#define MICROPY_USE_READLINE"}, {"kind": "macro", "line": 30, "name": "MICROPY_KBD_EXCEPTION", "signature": "#define MICROPY_KBD_EXCEPTION"}, {"kind": "macro", "line": 31, "name": "MICROPY_ASYNC_KBD_INTR", "signature": "#define MICROPY_ASYNC_KBD_INTR"}, {"kind": "macro", "line": 34, "name": "MICROPY_HELPER_REPL", "signature": "#define MICROPY_HELPER_REPL"}, {"kind": "macro", "line": 35, "name": "MICROPY_PY_SYS_PS1", "signature": "#define MICROPY_PY_SYS_PS1"}, {"kind": "macro", "line": 36, "name": "MICROPY_PY_SYS_PS2", "signature": "#define MICROPY_PY_SYS_PS2"}, {"kind": "macro", "line": 37, "name": "MICROPY_PY_SYS_ATEXIT", "signature": "#define MICROPY_PY_SYS_ATEXIT"}, {"kind": "macro", "line": 38, "name": "MICROPY_PY_SYS_EXC_INFO", "signature": "#define MICROPY_PY_SYS_EXC_INFO"}, {"kind": "macro", "line": 39, "name": "MICROPY_PY_SYS_STDFILES", "signature": "#define MICROPY_PY_SYS_STDFILES"}, {"kind": "macro", "line": 42, "name": "MICROPY_PY_OS", "signature": "#define MICROPY_PY_OS"}, {"kind": "macro", "line": 43, "name": "MICROPY_PY_OS_INCLUDEFILE", "signature": "#define MICROPY_PY_OS_INCLUDEFILE"}, {"kind": "macro", "line": 44, "name": "MICROPY_PY_OS_ERRNO", "signature": "#define MICROPY_PY_OS_ERRNO"}, {"kind": "macro", "line": 45, "name": "MICROPY_PY_OS_GETENV_PUTENV_UNSETENV", "signature": "#define MICROPY_PY_OS_GETENV_PUTENV_UNSETENV"}, {"kind": "macro", "line": 46, "name": "MICROPY_PY_OS_SYSTEM", "signature": "#define MICROPY_PY_OS_SYSTEM"}, {"kind": "macro", "line": 47, "name": "MICROPY_PY_OS_URANDOM", "signature": "#define MICROPY_PY_OS_URANDOM"}, {"kind": "macro", "line": 50, "name": "MICROPY_PY_TIME", "signature": "#define MICROPY_PY_TIME"}, {"kind": "macro", "line": 53, "name": "MICROPY_PY_SOCKET", "signature": "#define MICROPY_PY_SOCKET"}, {"kind": "macro", "line": 54, "name": "MICROPY_PY_SSL", "signature": "#define MICROPY_PY_SSL"}, {"kind": "macro", "line": 55, "name": "MICROPY_PY_FFI", "signature": "#define MICROPY_PY_FFI"}, {"kind": "macro", "line": 56, "name": "MICROPY_PY_THREAD", "signature": "#define MICROPY_PY_THREAD"}, {"kind": "macro", "line": 57, "name": "MICROPY_PY_MACHINE", "signature": "#define MICROPY_PY_MACHINE"}, {"kind": "macro", "line": 58, "name": "MICROPY_PY_WEBSOCKET", "signature": "#define MICROPY_PY_WEBSOCKET"}, {"kind": "macro", "line": 61, "name": "MICROPY_PERSISTENT_CODE_LOAD", "signature": "#define MICROPY_PERSISTENT_CODE_LOAD"}, {"kind": "macro", "line": 64, "name": "MICROPY_REPL_EMACS_WORDS_MOVE", "signature": "#define MICROPY_REPL_EMACS_WORDS_MOVE"}, {"kind": "macro", "line": 65, "name": "MICROPY_REPL_EMACS_EXTRA_WORDS_MOVE", "signature": "#define MICROPY_REPL_EMACS_EXTRA_WORDS_MOVE"}, {"kind": "macro", "line": 66, "name": "MICROPY_USE_READLINE_HISTORY", "signature": "#define MICROPY_USE_READLINE_HISTORY"}, {"kind": "macro", "line": 71, "name": "MICROPY_OPT_COMPUTED_GOTO", "signature": "#define MICROPY_OPT_COMPUTED_GOTO"}, {"kind": "macro", "line": 74, "name": "MICROPY_ENABLE_EMERGENCY_EXCEPTION_BUF", "signature": "#define MICROPY_ENABLE_EMERGENCY_EXCEPTION_BUF"}, {"kind": "macro", "line": 75, "name": "MICROPY_EMERGENCY_EXCEPTION_BUF_SIZE", "signature": "#define MICROPY_EMERGENCY_EXCEPTION_BUF_SIZE"}, {"kind": "macro", "line": 78, "name": "MICROPY_PY_GC_COLLECT_RETVAL", "signature": "#define MICROPY_PY_GC_COLLECT_RETVAL"}, {"kind": "macro", "line": 81, "name": "MICROPY_VFS_ROM", "signature": "#define MICROPY_VFS_ROM"}, {"kind": "macro", "line": 82, "name": "MICROPY_VFS_ROM_IOCTL", "signature": "#define MICROPY_VFS_ROM_IOCTL"}]}, {"doc": "ifndef MINIOS_ABI_H define MINIOS_ABI_H minios_abi.h -- Single source of truth for the MiniOS user-kernel ABI.", "id": "progs/minios_abi.h", "kind": "module", "label": "minios_abi.h", "language": "h", "sha256": "edc802a6a0aa7d07", "symbol_count": 124, "symbols": [{"kind": "macro", "line": 2, "name": "MINIOS_ABI_H", "signature": "#define MINIOS_ABI_H"}, {"kind": "macro", "line": 36, "name": "MINIOS_ABI_VERSION", "signature": "#define MINIOS_ABI_VERSION"}, {"kind": "macro", "line": 40, "name": "MINIOS_ABI_CHECKSUM", "signature": "#define MINIOS_ABI_CHECKSUM"}, {"kind": "macro", "line": 96, "name": "MINIOS_USER_LOAD_BASE", "signature": "#define MINIOS_USER_LOAD_BASE"}, {"kind": "macro", "line": 97, "name": "MINIOS_USER_LOAD_END", "signature": "#define MINIOS_USER_LOAD_END"}, {"kind": "macro", "line": 98, "name": "MINIOS_USER_STACK_SIZE", "signature": "#define MINIOS_USER_STACK_SIZE"}, {"kind": "macro", "line": 99, "name": "MINIOS_USER_STACK_TOP", "signature": "#define MINIOS_USER_STACK_TOP"}, {"kind": "macro", "line": 100, "name": "MINIOS_USER_STACK_BASE", "signature": "#define MINIOS_USER_STACK_BASE"}, {"kind": "macro", "line": 101, "name": "MINIOS_USER_BRK_END", "signature": "#define MINIOS_USER_BRK_END"}, {"kind": "macro", "line": 118, "name": "MINIOS_DOOM_BACKBUF_ADDR", "signature": "#define MINIOS_DOOM_BACKBUF_ADDR"}, {"kind": "macro", "line": 119, "name": "MINIOS_DOOM_W", "signature": "#define MINIOS_DOOM_W"}, {"kind": "macro", "line": 120, "name": "MINIOS_DOOM_H", "signature": "#define MINIOS_DOOM_H"}, {"kind": "macro", "line": 121, "name": "MINIOS_FB_ADDR", "signature": "#define MINIOS_FB_ADDR"}, {"kind": "macro", "line": 122, "name": "MINIOS_NK_BACKBUF_ADDR", "signature": "#define MINIOS_NK_BACKBUF_ADDR"}, {"kind": "macro", "line": 123, "name": "MINIOS_NK_W", "signature": "#define MINIOS_NK_W"}, {"kind": "macro", "line": 124, "name": "MINIOS_NK_H", "signature": "#define MINIOS_NK_H"}, {"kind": "macro", "line": 129, "name": "MINIOS_HEAP_BASE", "signature": "#define MINIOS_HEAP_BASE"}, {"kind": "macro", "line": 130, "name": "MINIOS_HEAP_SIZE", "signature": "#define MINIOS_HEAP_SIZE"}, {"kind": "macro", "line": 135, "name": "MINIOS_FB_WIDTH_MAX", "signature": "#define MINIOS_FB_WIDTH_MAX"}, {"kind": "macro", "line": 136, "name": "MINIOS_FB_HEIGHT_MAX", "signature": "#define MINIOS_FB_HEIGHT_MAX"}, {"kind": "macro", "line": 154, "name": "MINIOS_SYS_READ", "signature": "#define MINIOS_SYS_READ"}, {"kind": "macro", "line": 155, "name": "MINIOS_SYS_WRITE", "signature": "#define MINIOS_SYS_WRITE"}, {"kind": "macro", "line": 156, "name": "MINIOS_SYS_OPEN", "signature": "#define MINIOS_SYS_OPEN"}, {"kind": "macro", "line": 157, "name": "MINIOS_SYS_CLOSE", "signature": "#define MINIOS_SYS_CLOSE"}, {"kind": "macro", "line": 158, "name": "MINIOS_SYS_FSTAT", "signature": "#define MINIOS_SYS_FSTAT"}, {"kind": "macro", "line": 159, "name": "MINIOS_SYS_POLL", "signature": "#define MINIOS_SYS_POLL"}, {"kind": "macro", "line": 160, "name": "MINIOS_SYS_LSEEK", "signature": "#define MINIOS_SYS_LSEEK"}, {"kind": "macro", "line": 161, "name": "MINIOS_SYS_MMAP", "signature": "#define MINIOS_SYS_MMAP"}, {"kind": "macro", "line": 162, "name": "MINIOS_SYS_MPROTECT", "signature": "#define MINIOS_SYS_MPROTECT"}, {"kind": "macro", "line": 163, "name": "MINIOS_SYS_MUNMAP", "signature": "#define MINIOS_SYS_MUNMAP"}, {"kind": "macro", "line": 164, "name": "MINIOS_SYS_BRK", "signature": "#define MINIOS_SYS_BRK"}, {"kind": "macro", "line": 165, "name": "MINIOS_SYS_RT_SIGACTION", "signature": "#define MINIOS_SYS_RT_SIGACTION"}, {"kind": "macro", "line": 166, "name": "MINIOS_SYS_RT_SIGPROCMASK", "signature": "#define MINIOS_SYS_RT_SIGPROCMASK"}, {"kind": "macro", "line": 167, "name": "MINIOS_SYS_IOCTL", "signature": "#define MINIOS_SYS_IOCTL"}, {"kind": "macro", "line": 168, "name": "MINIOS_SYS_WRITEV", "signature": "#define MINIOS_SYS_WRITEV"}, {"kind": "macro", "line": 169, "name": "MINIOS_SYS_ACCESS", "signature": "#define MINIOS_SYS_ACCESS"}, {"kind": "macro", "line": 170, "name": "MINIOS_SYS_SCHED_YIELD", "signature": "#define MINIOS_SYS_SCHED_YIELD"}, {"kind": "macro", "line": 171, "name": "MINIOS_SYS_GETPID", "signature": "#define MINIOS_SYS_GETPID"}, {"kind": "macro", "line": 172, "name": "MINIOS_SYS_SOCKET", "signature": "#define MINIOS_SYS_SOCKET"}, {"kind": "macro", "line": 173, "name": "MINIOS_SYS_CONNECT", "signature": "#define MINIOS_SYS_CONNECT"}, {"kind": "macro", "line": 174, "name": "MINIOS_SYS_SENDTO", "signature": "#define MINIOS_SYS_SENDTO"}, {"kind": "macro", "line": 175, "name": "MINIOS_SYS_RECVFROM", "signature": "#define MINIOS_SYS_RECVFROM"}, {"kind": "macro", "line": 176, "name": "MINIOS_SYS_SHUTDOWN", "signature": "#define MINIOS_SYS_SHUTDOWN"}, {"kind": "macro", "line": 177, "name": "MINIOS_SYS_FORK", "signature": "#define MINIOS_SYS_FORK"}, {"kind": "macro", "line": 178, "name": "MINIOS_SYS_VFORK", "signature": "#define MINIOS_SYS_VFORK"}, {"kind": "macro", "line": 179, "name": "MINIOS_SYS_EXECVE", "signature": "#define MINIOS_SYS_EXECVE"}, {"kind": "macro", "line": 180, "name": "MINIOS_SYS_EXIT", "signature": "#define MINIOS_SYS_EXIT"}, {"kind": "macro", "line": 181, "name": "MINIOS_SYS_WAIT4", "signature": "#define MINIOS_SYS_WAIT4"}, {"kind": "macro", "line": 182, "name": "MINIOS_SYS_KILL", "signature": "#define MINIOS_SYS_KILL"}, {"kind": "macro", "line": 183, "name": "MINIOS_SYS_UNLINK", "signature": "#define MINIOS_SYS_UNLINK"}, {"kind": "macro", "line": 184, "name": "MINIOS_SYS_READLINK", "signature": "#define MINIOS_SYS_READLINK"}, {"kind": "macro", "line": 185, "name": "MINIOS_SYS_GETTID", "signature": "#define MINIOS_SYS_GETTID"}, {"kind": "macro", "line": 189, "name": "MINIOS_SYS_FLOCK", "signature": "#define MINIOS_SYS_FLOCK"}, {"kind": "macro", "line": 190, "name": "MINIOS_SYS_FSYNC", "signature": "#define MINIOS_SYS_FSYNC"}, {"kind": "macro", "line": 191, "name": "MINIOS_SYS_FDATASYNC", "signature": "#define MINIOS_SYS_FDATASYNC"}, {"kind": "macro", "line": 192, "name": "MINIOS_SYS_GETCWD", "signature": "#define MINIOS_SYS_GETCWD"}, {"kind": "macro", "line": 193, "name": "MINIOS_SYS_GETTIMEOFDAY", "signature": "#define MINIOS_SYS_GETTIMEOFDAY"}, {"kind": "macro", "line": 194, "name": "MINIOS_SYS_ARCH_PRCTL", "signature": "#define MINIOS_SYS_ARCH_PRCTL"}, {"kind": "macro", "line": 195, "name": "MINIOS_SYS_OPENAT", "signature": "#define MINIOS_SYS_OPENAT"}, {"kind": "macro", "line": 196, "name": "MINIOS_SYS_NEWFSTATAT", "signature": "#define MINIOS_SYS_NEWFSTATAT"}, {"kind": "macro", "line": 197, "name": "MINIOS_SYS_READLINK", "signature": "#define MINIOS_SYS_READLINK"}, {"kind": "macro", "line": 200, "name": "MINIOS_SYS_STATX", "signature": "#define MINIOS_SYS_STATX"}, {"kind": "macro", "line": 204, "name": "MINIOS_SYS_SET_ROBUST_LIST", "signature": "#define MINIOS_SYS_SET_ROBUST_LIST"}, {"kind": "macro", "line": 208, "name": "MINIOS_SYS_PRLIMIT64", "signature": "#define MINIOS_SYS_PRLIMIT64"}, {"kind": "macro", "line": 209, "name": "MINIOS_SYS_GETRANDOM", "signature": "#define MINIOS_SYS_GETRANDOM"}, {"kind": "macro", "line": 210, "name": "MINIOS_SYS_RSEQ", "signature": "#define MINIOS_SYS_RSEQ"}, {"kind": "macro", "line": 211, "name": "MINIOS_SYS_EXIT_GROUP", "signature": "#define MINIOS_SYS_EXIT_GROUP"}, {"kind": "macro", "line": 212, "name": "MINIOS_SYS_SET_TID_ADDRESS", "signature": "#define MINIOS_SYS_SET_TID_ADDRESS"}, {"kind": "macro", "line": 213, "name": "MINIOS_SYS_CLOCK_GETTIME", "signature": "#define MINIOS_SYS_CLOCK_GETTIME"}, {"kind": "macro", "line": 214, "name": "MINIOS_SYS_TGKILL", "signature": "#define MINIOS_SYS_TGKILL"}, {"kind": "macro", "line": 217, "name": "MINIOS_SYS_DNS", "signature": "#define MINIOS_SYS_DNS"}, {"kind": "macro", "line": 223, "name": "MINIOS_SYS_TLS_HANDSHAKE", "signature": "#define MINIOS_SYS_TLS_HANDSHAKE"}, {"kind": "macro", "line": 224, "name": "MINIOS_SYS_TLS_SEND", "signature": "#define MINIOS_SYS_TLS_SEND"}, {"kind": "macro", "line": 225, "name": "MINIOS_SYS_TLS_RECV", "signature": "#define MINIOS_SYS_TLS_RECV"}, {"kind": "macro", "line": 226, "name": "MINIOS_SYS_TIME", "signature": "#define MINIOS_SYS_TIME"}, {"kind": "macro", "line": 227, "name": "MINIOS_SYS_KBD", "signature": "#define MINIOS_SYS_KBD"}, {"kind": "macro", "line": 228, "name": "MINIOS_SYS_PALETTE", "signature": "#define MINIOS_SYS_PALETTE"}, {"kind": "macro", "line": 229, "name": "MINIOS_SYS_KBD_RAW", "signature": "#define MINIOS_SYS_KBD_RAW"}, {"kind": "macro", "line": 230, "name": "MINIOS_SYS_VGA_MODE", "signature": "#define MINIOS_SYS_VGA_MODE"}, {"kind": "macro", "line": 231, "name": "MINIOS_SYS_PCSPK_INIT", "signature": "#define MINIOS_SYS_PCSPK_INIT"}, {"kind": "macro", "line": 232, "name": "MINIOS_SYS_PCSPK_TONE", "signature": "#define MINIOS_SYS_PCSPK_TONE"}, {"kind": "macro", "line": 233, "name": "MINIOS_SYS_DOOM_FRAME", "signature": "#define MINIOS_SYS_DOOM_FRAME"}, {"kind": "macro", "line": 234, "name": "MINIOS_SYS_RTC", "signature": "#define MINIOS_SYS_RTC"}, {"kind": "macro", "line": 235, "name": "MINIOS_SYS_FB_INFO", "signature": "#define MINIOS_SYS_FB_INFO"}, {"kind": "macro", "line": 236, "name": "MINIOS_SYS_PCSPK_VOL", "signature": "#define MINIOS_SYS_PCSPK_VOL"}, {"kind": "macro", "line": 237, "name": "MINIOS_SYS_SPAWN", "signature": "#define MINIOS_SYS_SPAWN"}, {"kind": "macro", "line": 238, "name": "MINIOS_SYS_LZ4_COMPRESS", "signature": "#define MINIOS_SYS_LZ4_COMPRESS"}, {"kind": "macro", "line": 239, "name": "MINIOS_SYS_LZ4_DECOMPRESS", "signature": "#define MINIOS_SYS_LZ4_DECOMPRESS"}, {"kind": "macro", "line": 240, "name": "MINIOS_SYS_MOUSE", "signature": "#define MINIOS_SYS_MOUSE"}, {"kind": "macro", "line": 241, "name": "MINIOS_SYS_NK_FRAME", "signature": "#define MINIOS_SYS_NK_FRAME"}, {"kind": "macro", "line": 242, "name": "MINIOS_SYS_SB16_OPEN", "signature": "#define MINIOS_SYS_SB16_OPEN"}, {"kind": "macro", "line": 243, "name": "MINIOS_SYS_SB16_SUBMIT", "signature": "#define MINIOS_SYS_SB16_SUBMIT"}, {"kind": "macro", "line": 244, "name": "MINIOS_SYS_GFX_SET_TITLE", "signature": "#define MINIOS_SYS_GFX_SET_TITLE"}, {"kind": "macro", "line": 245, "name": "MINIOS_SYS_SB16_PUMP", "signature": "#define MINIOS_SYS_SB16_PUMP"}, {"kind": "macro", "line": 246, "name": "MINIOS_SYS_SB16_STREAM_OPEN", "signature": "#define MINIOS_SYS_SB16_STREAM_OPEN"}, {"kind": "macro", "line": 247, "name": "MINIOS_SYS_SB16_STREAM_CLOSE", "signature": "#define MINIOS_SYS_SB16_STREAM_CLOSE"}, {"kind": "macro", "line": 248, "name": "MINIOS_SYS_SB16_STREAM_SUBMIT", "signature": "#define MINIOS_SYS_SB16_STREAM_SUBMIT"}, {"kind": "macro", "line": 249, "name": "MINIOS_SYS_SB16_STREAM_VOLUME", "signature": "#define MINIOS_SYS_SB16_STREAM_VOLUME"}, {"kind": "macro", "line": 250, "name": "MINIOS_SYS_THREAD_SPAWN", "signature": "#define MINIOS_SYS_THREAD_SPAWN"}, {"kind": "macro", "line": 251, "name": "MINIOS_SYS_FUTEX_WAIT", "signature": "#define MINIOS_SYS_FUTEX_WAIT"}, {"kind": "macro", "line": 252, "name": "MINIOS_SYS_FUTEX_WAKE", "signature": "#define MINIOS_SYS_FUTEX_WAKE"}, {"kind": "macro", "line": 253, "name": "MINIOS_SYS_SUBMIT_BATCH", "signature": "#define MINIOS_SYS_SUBMIT_BATCH"}, {"kind": "macro", "line": 254, "name": "MINIOS_SYS_GETC_RAW", "signature": "#define MINIOS_SYS_GETC_RAW"}, {"kind": "macro", "line": 255, "name": "MINIOS_SYS_GFX_PRESENT", "signature": "#define MINIOS_SYS_GFX_PRESENT"}, {"kind": "macro", "line": 256, "name": "MINIOS_SYS_SECCOMP", "signature": "#define MINIOS_SYS_SECCOMP"}, {"kind": "macro", "line": 257, "name": "MINIOS_SYS_NICE", "signature": "#define MINIOS_SYS_NICE"}, {"kind": "macro", "line": 258, "name": "MINIOS_SYS_RLIMIT", "signature": "#define MINIOS_SYS_RLIMIT"}, {"kind": "macro", "line": 259, "name": "MINIOS_SYS_CLONE", "signature": "#define MINIOS_SYS_CLONE"}, {"kind": "macro", "line": 268, "name": "MINIOS_GFX_BUF_GAME", "signature": "#define MINIOS_GFX_BUF_GAME"}, {"kind": "macro", "line": 269, "name": "MINIOS_GFX_BUF_NK", "signature": "#define MINIOS_GFX_BUF_NK"}, {"kind": "macro", "line": 270, "name": "MINIOS_SYS_FRAMEBUFFER_COMMIT", "signature": "#define MINIOS_SYS_FRAMEBUFFER_COMMIT"}, {"kind": "macro", "line": 271, "name": "MINIOS_SYS_WINDOW_PRESENT", "signature": "#define MINIOS_SYS_WINDOW_PRESENT"}, {"kind": "macro", "line": 272, "name": "MINIOS_SYS_WINDOW_TITLE", "signature": "#define MINIOS_SYS_WINDOW_TITLE"}, {"kind": "macro", "line": 275, "name": "SYS_TIME_MS", "signature": "#define SYS_TIME_MS"}, {"kind": "macro", "line": 276, "name": "SYS_PALETTE", "signature": "#define SYS_PALETTE"}, {"kind": "macro", "line": 277, "name": "SYS_PCSPK_INIT", "signature": "#define SYS_PCSPK_INIT"}, {"kind": "macro", "line": 278, "name": "SYS_PCSPK_TONE", "signature": "#define SYS_PCSPK_TONE"}, {"kind": "macro", "line": 279, "name": "SYS_RTC", "signature": "#define SYS_RTC"}, {"kind": "macro", "line": 280, "name": "SYS_FB_INFO", "signature": "#define SYS_FB_INFO"}, {"kind": "macro", "line": 281, "name": "SYS_PCSPK_VOL", "signature": "#define SYS_PCSPK_VOL"}, {"kind": "macro", "line": 282, "name": "SYS_SPAWN", "signature": "#define SYS_SPAWN"}, {"kind": "macro", "line": 283, "name": "SYS_TIME", "signature": "#define SYS_TIME"}, {"kind": "macro", "line": 284, "name": "SYS_WRITE", "signature": "#define SYS_WRITE"}, {"kind": "macro", "line": 287, "name": "MINIOS_EABI_MISMATCH", "signature": "#define MINIOS_EABI_MISMATCH"}]}, {"doc": "cvm_emit.c — node-graph to CVM bytecode compiler.", "id": "progs/nuklear/cvm_emit.c", "kind": "module", "label": "cvm_emit.c", "language": "c", "sha256": "1582f5bf45ae5a98", "symbol_count": 59, "symbols": [{"kind": "struct", "line": 73, "name": "codebuf"}, {"kind": "function", "line": 8, "name": "code", "signature": "* exit code (OP_HALT leaves the operand-stack top as the exit status, which\n * the shell reports ..."}, {"kind": "function", "line": 78, "name": "cb_push", "signature": "static int cb_push(struct codebuf *cb, unsigned char c)"}, {"kind": "function", "line": 90, "name": "cb_u32", "signature": "static int cb_u32(struct codebuf *cb, unsigned long v)"}, {"kind": "function", "line": 96, "name": "cb_i64", "signature": "static int cb_i64(struct codebuf *cb, long long v)"}, {"kind": "function", "line": 102, "name": "cb_patch_u32", "signature": "static void cb_patch_u32(struct codebuf *cb, size_t pos, unsigned long v)"}, {"doc": "static int cb_i64(struct codebuf *cb, long long v) { for (int i = 0; i < 8; i++) if (cb_push(cb, (unsigned char)(v >> (8 * i))) < 0) return -1; return 0; } static void cb_patch_u32(struct codebuf *cb, size_t pos, unsigned long v) { cb->b[pos + 0] = (unsigned char)(v & 255); cb->b[pos + 1] = (unsigned char)((v >> 8) & 255); cb->b[pos + 2] = (unsigned char)((v >> 16) & 255); cb->b[pos + 3] = (unsigned char)((v >> 24) & 255); } /* Push an integer literal with the shortest encoding.", "kind": "function", "line": 111, "name": "cb_imm", "signature": "static int cb_imm(struct codebuf *cb, long long v)"}, {"doc": "if (v >= -128 && v <= 127) { if (cb_push(cb, OP_PUSH_IMM8) < 0) return -1; if (cb_push(cb, (unsigned char)(v & 0xFF)) < 0) return -1; } else if (v >= -2147483648LL && v <= 2147483647LL) { if (cb_push(cb, OP_PUSH_IMM32) < 0) return -1; if (cb_u32(cb, (unsigned long)(unsigned long long)v) < 0) return -1; } else { if (cb_push(cb, OP_PUSH_IMM64) < 0) return -1; if (cb_i64(cb, v) < 0) return -1; } return 0; } /* Number of required inputs for a node type.", "kind": "function", "line": 126, "name": "req_inputs", "signature": "static int req_inputs(enum cvm_node_type t)"}, {"kind": "function", "line": 144, "name": "is_sink", "signature": "static int is_sink(enum cvm_node_type t)"}, {"doc": "case NODE_EXIT: return 1; case NODE_IF: return 3; default: return 2; } } static int is_sink(enum cvm_node_type t) { return t == NODE_PRINT || t == NODE_PRINTS || t == NODE_EXIT; } /* ---- topological sort (Kahn, stable) ----", "kind": "function", "line": 150, "name": "topo_sort", "signature": "static int topo_sort(const struct cvm_node *nodes, int n,\n int *order, char *..."}, {"doc": "Emit one operand: the wired local slot or the fallback literal. The caller * guarantees validation passed, so an open input always has use_lit set.", "kind": "function", "line": 213, "name": "emit_operand", "signature": "static int emit_operand(struct codebuf *code, const struct cvm_node *nodes,\n ..."}, {"kind": "function", "line": 223, "name": "emit_jz", "signature": "static int emit_jz(struct codebuf *code, size_t *rel_pos)"}, {"kind": "function", "line": 229, "name": "emit_jmp", "signature": "static int emit_jmp(struct codebuf *code, size_t *rel_pos)"}, {"kind": "function", "line": 235, "name": "cvm_compile", "signature": "int cvm_compile(const struct cvm_node *nodes, int n,\n unsigned char **out, size_t ..."}, {"doc": "size_t ft = (size_t)nf * CVM_FUNC_ENTRY_SIZE; size_t gt = (size_t)ng * CVM_GLOBAL_ENTRY_SIZE; size_t nt = (size_t)nn * CVM_NATIVE_ENTRY_SIZE; size_t st = (size_t)ns * 8; size_t code_off = CVM_MODULE_HEADER_SIZE + ft + gt + nt + st; size_t total = code_off + (size_t)cs + ds.len + (size_t)sp; unsigned char *mod = (unsigned char *)calloc(1, total); if (!mod) goto oom; mod[0] = CVM_MAGIC_0; mod[1] = CVM_MAGIC_1; mod[2] = CVM_MAGIC_2; mod[3] = CVM_MAGIC_3; mod[4] = (unsigned char)CVM_VERSION_MAJOR; mod[5] = 0; /* minor", "kind": "function", "line": 491, "name": "w32", "signature": "void w32(void *p, unsigned v)"}, {"kind": "function", "line": 2, "name": "module", "signature": "* * Emits a cvm2 module (format v2) from a dataflow graph. Nodes are * topologically sorted (a true DAG order, so the editor can connect nodes in * any sequence);"}, {"kind": "function", "line": 154, "name": "memset", "signature": "memset(indeg, 0, (size_t)n);"}, {"kind": "function", "line": 440, "name": "memcpy", "signature": "memcpy(blob + str_off[i], nodes[i].sval, L);"}, {"kind": "function", "line": 461, "name": "free", "signature": "free(blob);"}, {"kind": "macro", "line": 29, "name": "CVM_MAGIC_0", "signature": "#define CVM_MAGIC_0"}, {"kind": "macro", "line": 30, "name": "CVM_MAGIC_1", "signature": "#define CVM_MAGIC_1"}, {"kind": "macro", "line": 31, "name": "CVM_MAGIC_2", "signature": "#define CVM_MAGIC_2"}, {"kind": "macro", "line": 32, "name": "CVM_MAGIC_3", "signature": "#define CVM_MAGIC_3"}, {"kind": "macro", "line": 33, "name": "CVM_VERSION_MAJOR", "signature": "#define CVM_VERSION_MAJOR"}, {"kind": "macro", "line": 34, "name": "CVM_MODULE_HEADER_SIZE", "signature": "#define CVM_MODULE_HEADER_SIZE"}, {"kind": "macro", "line": 35, "name": "CVM_FUNC_ENTRY_SIZE", "signature": "#define CVM_FUNC_ENTRY_SIZE"}, {"kind": "macro", "line": 36, "name": "CVM_GLOBAL_ENTRY_SIZE", "signature": "#define CVM_GLOBAL_ENTRY_SIZE"}, {"kind": "macro", "line": 37, "name": "CVM_NATIVE_ENTRY_SIZE", "signature": "#define CVM_NATIVE_ENTRY_SIZE"}, {"kind": "macro", "line": 40, "name": "OP_PUSH_IMM64", "signature": "#define OP_PUSH_IMM64"}, {"kind": "macro", "line": 41, "name": "OP_PUSH_IMM32", "signature": "#define OP_PUSH_IMM32"}, {"kind": "macro", "line": 42, "name": "OP_PUSH_IMM8", "signature": "#define OP_PUSH_IMM8"}, {"kind": "macro", "line": 43, "name": "OP_PUSH_ZERO", "signature": "#define OP_PUSH_ZERO"}, {"kind": "macro", "line": 44, "name": "OP_PUSH_LOCAL", "signature": "#define OP_PUSH_LOCAL"}, {"kind": "macro", "line": 45, "name": "OP_STORE_LOCAL", "signature": "#define OP_STORE_LOCAL"}, {"kind": "macro", "line": 46, "name": "OP_ADD", "signature": "#define OP_ADD"}, {"kind": "macro", "line": 47, "name": "OP_SUB", "signature": "#define OP_SUB"}, {"kind": "macro", "line": 48, "name": "OP_MUL", "signature": "#define OP_MUL"}, {"kind": "macro", "line": 49, "name": "OP_DIV", "signature": "#define OP_DIV"}, {"kind": "macro", "line": 50, "name": "OP_MOD", "signature": "#define OP_MOD"}, {"kind": "macro", "line": 51, "name": "OP_NEG", "signature": "#define OP_NEG"}, {"kind": "macro", "line": 52, "name": "OP_AND", "signature": "#define OP_AND"}, {"kind": "macro", "line": 53, "name": "OP_OR", "signature": "#define OP_OR"}, {"kind": "macro", "line": 54, "name": "OP_XOR", "signature": "#define OP_XOR"}, {"kind": "macro", "line": 55, "name": "OP_NOT", "signature": "#define OP_NOT"}, {"kind": "macro", "line": 56, "name": "OP_SHL", "signature": "#define OP_SHL"}, {"kind": "macro", "line": 57, "name": "OP_SHR", "signature": "#define OP_SHR"}, {"kind": "macro", "line": 58, "name": "OP_CMP_EQ", "signature": "#define OP_CMP_EQ"}, {"kind": "macro", "line": 59, "name": "OP_CMP_NE", "signature": "#define OP_CMP_NE"}, {"kind": "macro", "line": 60, "name": "OP_CMP_LT", "signature": "#define OP_CMP_LT"}, {"kind": "macro", "line": 61, "name": "OP_CMP_LE", "signature": "#define OP_CMP_LE"}, {"kind": "macro", "line": 62, "name": "OP_CMP_GT", "signature": "#define OP_CMP_GT"}, {"kind": "macro", "line": 63, "name": "OP_CMP_GE", "signature": "#define OP_CMP_GE"}, {"kind": "macro", "line": 64, "name": "OP_LNOT", "signature": "#define OP_LNOT"}, {"kind": "macro", "line": 65, "name": "OP_JMP", "signature": "#define OP_JMP"}, {"kind": "macro", "line": 66, "name": "OP_JZ", "signature": "#define OP_JZ"}, {"kind": "macro", "line": 67, "name": "OP_CALL_NATIVE", "signature": "#define OP_CALL_NATIVE"}, {"kind": "macro", "line": 68, "name": "OP_LEA_DATA", "signature": "#define OP_LEA_DATA"}, {"kind": "macro", "line": 69, "name": "OP_HALT", "signature": "#define OP_HALT"}, {"kind": "macro", "line": 70, "name": "CVM_MAX_NODES", "signature": "#define CVM_MAX_NODES"}]}, {"doc": "ifndef CVM_EMIT_H define CVM_EMIT_H cvm_emit.h — node-graph compiler for CVM (cvm2 module format v2).", "id": "progs/nuklear/cvm_emit.h", "kind": "module", "label": "cvm_emit.h", "language": "h", "sha256": "ee2d5870d73b3724", "symbol_count": 6, "symbols": [{"doc": "One node in the graph. Inputs are indices of other nodes; a negative input means open, in which case the per-input literal is used when use_lit[k] is set, otherwise compilation fails with a node-context diagnostic. Output nodes (PRINT/PRINTS/EXIT) terminate the compiled program and can never be * used as an input source.", "kind": "struct", "line": 56, "name": "cvm_node"}, {"doc": "into a self-contained .cvm module: a single entry function whose bytecode computes every node value into a local slot and prints/exits at the output nodes. The emitted module is loadable by the CVM interpreter (objects/cvm.o) exactly like one produced by `ld -f cvm`, so `run` can execute it. Output uses the `printf`/`puts` natives (registered by cvm_host.c); exit codes come from the operand stack via OP_HALT. #include /* String payload bound for STR constants and PRINT formats. #define CVM_NODE_STR_MAX 128 /* Node types the graph compiler understands.", "kind": "enum", "line": 22, "name": "cvm_node_type"}, {"kind": "function", "line": 5, "name": "graph", "signature": "* * A node graph (constants, arithmetic, bitwise, comparisons, a conditional * select, and string constants feeding PRINT/PRINTS/EXIT sinks) is compiled * into a self-contained .cvm module: a single e"}, {"kind": "function", "line": 67, "name": "err", "signature": "* err (err_cap bytes). The module is heap-allocated and owned by the caller * (free it). */ int cvm_compile(const struct cvm_node *nodes, int n, unsigned char **out, size_t *out_size, char *err, size_"}, {"kind": "macro", "line": 2, "name": "CVM_EMIT_H", "signature": "#define CVM_EMIT_H"}, {"kind": "macro", "line": 19, "name": "CVM_NODE_STR_MAX", "signature": "#define CVM_NODE_STR_MAX"}]}, {"doc": "node_editor.c — visual low-code editor that compiles to CVM bytecode.", "id": "progs/nuklear/node_editor.c", "kind": "module", "label": "node_editor.c", "language": "c", "sha256": "9c30c148b33820d7", "symbol_count": 77, "symbols": [{"kind": "struct", "line": 43, "name": "gnode"}, {"doc": "G_COUNT }; struct gnode { int kind; long long ival; char sval[STR_MAX]; int in[3]; long long lit[3]; int use_lit[3]; float x, y; }; /* Single registry: name, text-format word, inputs, outputs, color.", "kind": "struct", "line": 54, "name": "nodedef"}, {"kind": "function", "line": 94, "name": "node_inputs", "signature": "static int node_inputs(int k)"}, {"kind": "function", "line": 99, "name": "node_outputs", "signature": "static int node_outputs(int k)"}, {"kind": "function", "line": 104, "name": "kind_name", "signature": "static const char *kind_name(int k)"}, {"kind": "function", "line": 109, "name": "kind_color", "signature": "static struct nk_color kind_color(int k)"}, {"kind": "function", "line": 114, "name": "graph_clear", "signature": "static void graph_clear(void)"}, {"kind": "function", "line": 120, "name": "graph_add", "signature": "static int graph_add(int kind)"}, {"kind": "function", "line": 134, "name": "graph_del", "signature": "static void graph_del(int idx)"}, {"doc": "g_count--; for (int i = 0; i < g_count; i++) for (int k = 0; k < 3; k++) { if (g_nodes[i].in[k] == idx) { g_nodes[i].in[k] = -1; } else if (g_nodes[i].in[k] > idx) { g_nodes[i].in[k]--; } } if (g_selected == idx) g_selected = -1; else if (g_selected > idx) g_selected--; } /* Map the graph into the compiler's node array. Returns node count or <0.", "kind": "function", "line": 153, "name": "graph_to_compiler", "signature": "static int graph_to_compiler(struct cvm_node *out, int cap)"}, {"doc": "Pre-compile pass: repair every open data input with a const 0 fallback (an open PrStr prints an empty line), so Compile always writes a module instead of refusing. Repairs are loud (rep), and *bad selects the first touched node. Only unrepairable problems (herr: bad type, dangling wire, * sink used as a source, PrStr wired to a non-string) still refuse.", "kind": "function", "line": 175, "name": "repair_graph", "signature": "static int repair_graph(char *rep, size_t repcap, char *herr, size_t herrcap,\n ..."}, {"kind": "function", "line": 182, "name": "addrep", "signature": "void addrep(const char *s)"}, {"kind": "function", "line": 192, "name": "adderr", "signature": "void adderr(const char *s)"}, {"doc": "Compile the current graph to a file. Returns 0 on success. Open inputs are auto-repaired (const 0 / empty line) and reported, so this refuses * only on unrepairable problems.", "kind": "function", "line": 282, "name": "compile_to", "signature": "static int compile_to(const char *path)"}, {"doc": "--- Headless graph text format (v2, backward compatible) ---- num a 5 str s \"hi\" add b a c add c a #5 neg n a if r c t e print p e print p e \"%d ms\\n\" prints s2 s exit x e Inputs are earlier-defined node names or #integer literals (wire or const). Forward references are rejected. A quoted \"...\" token carries * C-like escapes (\\\\ \\\" \\n \\t). The print format is an optional 4th token.", "kind": "function", "line": 338, "name": "write_quoted", "signature": "static void write_quoted(FILE *f, const char *s)"}, {"kind": "function", "line": 390, "name": "save_graph_file", "signature": "static int save_graph_file(const char *path)"}, {"kind": "function", "line": 428, "name": "parse_graph_file", "signature": "static int parse_graph_file(const char *path)"}, {"kind": "function", "line": 436, "name": "resolve", "signature": "int resolve(const char *nme, int upto)"}, {"doc": "static int parse_graph_file(const char *path) { FILE *f = fopen(path, \"r\"); if (!f) return -1; graph_clear(); static char names[MAX_NODES][16]; char line[512]; int rc = 0; int resolve(const char *nme, int upto) { for (int k = 0; k < upto; k++) if (strcmp(names[k], nme) == 0) return k; return -2; } /* Parse one input token: name, #literal, or #- (open, no literal).", "kind": "function", "line": 442, "name": "parse_input", "signature": "int parse_input(const char *tok, int idx, int k)"}, {"doc": "/* Link-drag state: click an output pin, drag to an input pin. static int linking_active; static int linking_src_node; static int linking_src_slot; /* Node geometry constants. #define NODE_W 130.0f #define TITLE_H 20.0f #define PIN_R 5 #define PIN_DIAM (PIN_R * 2 + 1) #define BEZIER_PAD 50.0f #define GRID_SIZE 32.0f /* Compute the Y positions of input and output pins for a node.", "kind": "function", "line": 521, "name": "pin_y", "signature": "static float pin_y(struct gnode *n, int slot, int is_output)"}, {"kind": "function", "line": 532, "name": "node_h", "signature": "static float node_h(struct gnode *n)"}, {"kind": "function", "line": 540, "name": "ui_inspector", "signature": "static void ui_inspector(struct nk_context *ctx)"}, {"kind": "function", "line": 620, "name": "ui_build", "signature": "static void ui_build(struct nk_context *ctx, float win_w, float win_h)"}, {"doc": "circle.y = pin_y(n, k, 0) - PIN_R + oy; circle.w = PIN_DIAM; circle.h = PIN_DIAM; nk_fill_circle(canvas, circle, n->in[k] >= 0 ? nk_rgb(80, 200, 80) : nk_rgb(100, 100, 100)); } } nk_layout_space_end(ctx); nk_end(ctx); } } /* ---- main loop ----", "kind": "function", "line": 930, "name": "gui_run", "signature": "static void gui_run(void)"}, {"kind": "function", "line": 979, "name": "main", "signature": "int main(int argc, char **argv)"}, {"kind": "function", "line": 125, "name": "memset", "signature": "memset(n, 0, sizeof(*n));"}, {"kind": "function", "line": 137, "name": "memmove", "signature": "memmove(&g_nodes[idx], &g_nodes[idx + 1], (size_t)(g_count - idx - 1) * sizeof(g_nodes[0]));"}, {"kind": "function", "line": 159, "name": "memcpy", "signature": "memcpy(out[i].sval, g->sval, sizeof(out[i].sval));"}, {"kind": "function", "line": 206, "name": "snprintf", "signature": "snprintf(m, sizeof(m), \"node %d: bad type\", i);"}, {"kind": "function", "line": 306, "name": "free", "signature": "free(mod);"}, {"kind": "function", "line": 315, "name": "close", "signature": "close(fd);"}, {"kind": "function", "line": 339, "name": "fputc", "signature": "fputc('\"', f);"}, {"kind": "function", "line": 401, "name": "fprintf", "signature": "fprintf(f, \"num %s %lld\\n\", names[i], g->ival);"}, {"kind": "function", "line": 424, "name": "fclose", "signature": "fclose(f);"}, {"kind": "function", "line": 542, "name": "nk_layout_row_dynamic", "signature": "nk_layout_row_dynamic(ctx, 16, 1);"}, {"kind": "function", "line": 544, "name": "nk_label", "signature": "nk_label(ctx, \"select a node to edit its parameters\", NK_TEXT_LEFT);"}, {"kind": "function", "line": 555, "name": "nk_property_int", "signature": "nk_property_int(ctx, \"value:\", -2147483647, &v, 2147483647, 1, 10);"}, {"kind": "function", "line": 561, "name": "nk_edit_string_zero_terminated", "signature": "nk_edit_string_zero_terminated(ctx, NK_EDIT_FIELD, n->sval, (int)sizeof(n->sval), 0);"}, {"kind": "function", "line": 572, "name": "nk_layout_row_begin", "signature": "nk_layout_row_begin(ctx, NK_STATIC, 20, 3);"}, {"kind": "function", "line": 573, "name": "nk_layout_row_push", "signature": "nk_layout_row_push(ctx, 110);"}, {"kind": "function", "line": 591, "name": "nk_layout_row_end", "signature": "nk_layout_row_end(ctx);"}, {"kind": "function", "line": 609, "name": "nk_layout_row_static", "signature": "nk_layout_row_static(ctx, 22, 90, 3);"}, {"kind": "function", "line": 634, "name": "nk_combobox", "signature": "nk_combobox(ctx, items, G_COUNT, &add_sel, 20, nk_vec2(150, 300));"}, {"kind": "function", "line": 668, "name": "nk_label_colored_wrap", "signature": "nk_label_colored_wrap(ctx, g_status, nk_rgb(255, 120, 120));"}, {"kind": "function", "line": 683, "name": "nk_layout_space_begin", "signature": "nk_layout_space_begin(ctx, NK_STATIC, canvas_h, g_count + 32);"}, {"kind": "function", "line": 702, "name": "nk_stroke_line", "signature": "nk_stroke_line(canvas, x + canvas_bounds.x, canvas_bounds.y, x + canvas_bounds.x, canvas_bounds.y + canvas_bounds.h, 1.0f, grid_col);"}, {"kind": "function", "line": 722, "name": "nk_stroke_curve", "signature": "nk_stroke_curve(canvas, sx, sy, sx + BEZIER_PAD, sy, dx - BEZIER_PAD, dy, dx, dy, 2.0f, nk_rgb(180, 180, 180));"}, {"kind": "function", "line": 744, "name": "nk_layout_space_bounds", "signature": "nk_layout_space_bounds(ctx));"}, {"kind": "function", "line": 841, "name": "nk_layout_space_push", "signature": "nk_layout_space_push(ctx, nk_rect(n->x, n->y, NODE_W, h));"}, {"kind": "function", "line": 849, "name": "nk_fill_rect", "signature": "nk_fill_rect(canvas, title_bounds, 0, col);"}, {"kind": "function", "line": 901, "name": "nk_group_end", "signature": "nk_group_end(ctx);"}, {"kind": "function", "line": 911, "name": "nk_fill_circle", "signature": "nk_fill_circle(canvas, circle, nk_rgb(100, 100, 100));"}, {"kind": "function", "line": 923, "name": "nk_layout_space_end", "signature": "nk_layout_space_end(ctx);"}, {"kind": "function", "line": 925, "name": "nk_end", "signature": "nk_end(ctx);"}, {"kind": "function", "line": 933, "name": "nk_sys_vga_mode", "signature": "nk_sys_vga_mode(1);"}, {"kind": "function", "line": 935, "name": "nk_sys_gfx_set_title", "signature": "nk_sys_gfx_set_title(\"Nuklear\");"}, {"kind": "function", "line": 936, "name": "nk_sys_kbd_raw", "signature": "nk_sys_kbd_raw(1);"}, {"kind": "function", "line": 937, "name": "nk_build_palette", "signature": "nk_build_palette(pal768);"}, {"kind": "function", "line": 938, "name": "nk_sys_palette", "signature": "nk_sys_palette(pal768);"}, {"kind": "function", "line": 939, "name": "nk_sys_fb_info", "signature": "nk_sys_fb_info(&fw, &fh, &fp);"}, {"kind": "function", "line": 944, "name": "printf", "signature": "printf(\"nuklear: init failed\\n\");"}, {"kind": "function", "line": 958, "name": "nk_input_begin", "signature": "nk_input_begin(&ctx);"}, {"kind": "function", "line": 959, "name": "nk_poll_input", "signature": "nk_poll_input(&ctx);"}, {"kind": "function", "line": 960, "name": "nk_input_end", "signature": "nk_input_end(&ctx);"}, {"kind": "function", "line": 963, "name": "nk_rasterize", "signature": "nk_rasterize(&ctx);"}, {"kind": "function", "line": 967, "name": "nk_clear", "signature": "nk_clear(&ctx);"}, {"kind": "function", "line": 971, "name": "volatile", "signature": "__asm__ volatile(\"pause\");"}, {"kind": "function", "line": 974, "name": "nk_free", "signature": "nk_free(&ctx);"}, {"kind": "macro", "line": 32, "name": "MAX_NODES", "signature": "#define MAX_NODES"}, {"kind": "macro", "line": 33, "name": "STR_MAX", "signature": "#define STR_MAX"}, {"kind": "macro", "line": 499, "name": "UI_MEMORY", "signature": "#define UI_MEMORY"}, {"kind": "macro", "line": 513, "name": "NODE_W", "signature": "#define NODE_W"}, {"kind": "macro", "line": 514, "name": "TITLE_H", "signature": "#define TITLE_H"}, {"kind": "macro", "line": 515, "name": "PIN_R", "signature": "#define PIN_R"}, {"kind": "macro", "line": 516, "name": "PIN_DIAM", "signature": "#define PIN_DIAM"}, {"kind": "macro", "line": 517, "name": "BEZIER_PAD", "signature": "#define BEZIER_PAD"}, {"kind": "macro", "line": 518, "name": "GRID_SIZE", "signature": "#define GRID_SIZE"}]}, {"doc": "nuklear_minios.c — MiniOS platform layer for Nuklear.", "id": "progs/nuklear/nuklear_minios.c", "kind": "module", "label": "nuklear_minios.c", "language": "c", "sha256": "34a23c56d23cb8d3", "symbol_count": 39, "symbols": [{"doc": "wheel. All MiniOS-specific syscalls go through the Linux syscall ABI, so this compiles into a normal static ring-3 ELF. #define NK_IMPLEMENTATION #include \"nuklear.h\" #include #include #include #include \"nuklear_minios.h\" /* ---- MiniOS syscalls (canonical table from minios_abi.h) ----", "kind": "function", "line": 27, "name": "nk_sys_time_ms", "signature": "long nk_sys_time_ms(void)"}, {"kind": "function", "line": 32, "name": "nk_sys_kbd", "signature": "long nk_sys_kbd(void)"}, {"kind": "function", "line": 37, "name": "nk_sys_palette", "signature": "long nk_sys_palette(const unsigned char *pal)"}, {"kind": "function", "line": 42, "name": "nk_sys_kbd_raw", "signature": "long nk_sys_kbd_raw(int on)"}, {"kind": "function", "line": 47, "name": "nk_sys_vga_mode", "signature": "long nk_sys_vga_mode(int on)"}, {"kind": "function", "line": 52, "name": "nk_sys_fb_info", "signature": "long nk_sys_fb_info(int *w, int *h, int *pitch)"}, {"kind": "function", "line": 59, "name": "nk_sys_mouse", "signature": "long nk_sys_mouse(int *xybw)"}, {"kind": "function", "line": 64, "name": "nk_sys_mouse_badptr", "signature": "long nk_sys_mouse_badptr(void)"}, {"kind": "function", "line": 72, "name": "nk_sys_nk_frame", "signature": "long nk_sys_nk_frame(int *origin)"}, {"kind": "function", "line": 77, "name": "nk_sys_gfx_set_title", "signature": "long nk_sys_gfx_set_title(const char *t)"}, {"kind": "function", "line": 149, "name": "pal_prepare", "signature": "static void pal_prepare(void)"}, {"kind": "function", "line": 160, "name": "col_to_idx", "signature": "static int col_to_idx(struct nk_color c)"}, {"kind": "function", "line": 278, "name": "set_clip", "signature": "static void set_clip(int x, int y, int w, int h)"}, {"kind": "function", "line": 288, "name": "px", "signature": "static void px(int x, int y, int c)"}, {"kind": "function", "line": 295, "name": "fill_rect", "signature": "static void fill_rect(int x, int y, int w, int h, int c)"}, {"kind": "function", "line": 302, "name": "draw_line", "signature": "static void draw_line(int x0, int y0, int x1, int y1, int th, int c)"}, {"kind": "function", "line": 320, "name": "fill_circle", "signature": "static void fill_circle(int cx, int cy, int r, int c)"}, {"kind": "function", "line": 326, "name": "stroke_circle", "signature": "static void stroke_circle(int cx, int cy, int r, int th, int c)"}, {"doc": "draw_line(cx + x, cy - y, cx - x, cy - y, th, c); draw_line(cx - x, cy + y, cx - x, cy - y, th, c); draw_line(cx + x, cy + y, cx - x, cy - y, th, c); draw_line(cx - y, cy - x, cx - x, cy - y, th, c); draw_line(cx + y, cy - x, cx - x, cy - y, th, c); draw_line(cx - y, cy + x, cx - x, cy - y, th, c); draw_line(cx + y, cy + x, cx - x, cy - y, th, c); y++; if (err <= 0) { err += 2*y + 1; } if (err > 0) { x--; err -= 2*x + 1; } } } /* Fill a convex polygon (x[], y[]).", "kind": "function", "line": 345, "name": "fill_poly", "signature": "static void fill_poly(int *xs, int *ys, int n, int c)"}, {"kind": "function", "line": 367, "name": "stroke_poly", "signature": "static void stroke_poly(int *xs, int *ys, int n, int th, int c)"}, {"kind": "function", "line": 374, "name": "draw_text", "signature": "static void draw_text(int x, int y, const char *s, int len, int fg, int bg)"}, {"kind": "function", "line": 388, "name": "draw_arc", "signature": "static void draw_arc(int cx, int cy, int r, float a0, float a1,\n int filled, ..."}, {"kind": "function", "line": 409, "name": "nk_rasterize", "signature": "void nk_rasterize(struct nk_context *ctx)"}, {"kind": "function", "line": 414, "name": "nk_foreach", "signature": "nk_foreach(cmd, ctx)"}, {"doc": "if (c->background.a > 0) bg = col_to_idx(c->background); draw_text(c->x, c->y, c->string, c->length, fg, bg); break; } case NK_COMMAND_IMAGE: case NK_COMMAND_CUSTOM: break; default: break; } } } /* ---- Font (8x8 monospace) ----", "kind": "function", "line": 560, "name": "nk_minios_font_width", "signature": "static float nk_minios_font_width(nk_handle handle, float height,\n ..."}, {"kind": "function", "line": 565, "name": "nk_minios_font", "signature": "struct nk_user_font nk_minios_font(void)"}, {"kind": "function", "line": 599, "name": "feed_key", "signature": "static void feed_key(struct nk_context *ctx, enum nk_keys key, int down)"}, {"kind": "function", "line": 606, "name": "nk_set_scancode_hook", "signature": "void nk_set_scancode_hook(nk_scancode_cb cb, void *ud)"}, {"kind": "function", "line": 611, "name": "handle_scancode", "signature": "static void handle_scancode(struct nk_context *ctx, unsigned char sc)"}, {"kind": "function", "line": 654, "name": "nk_poll_input", "signature": "void nk_poll_input(struct nk_context *ctx)"}, {"kind": "function", "line": 691, "name": "nk_set_window_origin", "signature": "void nk_set_window_origin(int x, int y)"}, {"kind": "function", "line": 4, "name": "list", "signature": "* abstract draw command list (nk__begin/nk__next);"}, {"kind": "function", "line": 29, "name": "volatile", "signature": "__asm__ volatile(\"syscall\" : \"=a\"(ret) : \"a\"(MINIOS_SYS_TIME), \"D\"(0) : \"rcx\",\"r11\",\"memory\");"}, {"kind": "function", "line": 152, "name": "nk_build_palette", "signature": "nk_build_palette(pal768);"}, {"kind": "function", "line": 601, "name": "nk_input_key", "signature": "nk_input_key(ctx, key, down ? nk_true : nk_false);"}, {"kind": "function", "line": 650, "name": "nk_input_unicode", "signature": "nk_input_unicode(ctx, (nk_rune)ch);"}, {"kind": "function", "line": 671, "name": "nk_input_motion", "signature": "nk_input_motion(ctx, lx, ly);"}, {"kind": "function", "line": 687, "name": "nk_input_scroll", "signature": "nk_input_scroll(ctx, scroll);"}, {"kind": "macro", "line": 16, "name": "NK_IMPLEMENTATION", "signature": "#define NK_IMPLEMENTATION"}]}, {"doc": "ifndef NUKLEAR_MINIOS_H define NUKLEAR_MINIOS_H nuklear_minios.h — MiniOS platform layer for Nuklear.", "id": "progs/nuklear/nuklear_minios.h", "kind": "module", "label": "nuklear_minios.h", "language": "h", "sha256": "3f84a14822833b73", "symbol_count": 20, "symbols": [{"kind": "function", "line": 8, "name": "SYS_NK_FRAME", "signature": "* calls SYS_NK_FRAME (220) so the kernel composites it as a titled window on * the desktop, exactly like the DOOM window. The layer owns the hybrid * palette (indices 0-14 keep the desktop colors, 15-"}, {"kind": "function", "line": 24, "name": "nk_sys_kbd", "signature": "long nk_sys_kbd(void);"}, {"kind": "function", "line": 25, "name": "nk_sys_palette", "signature": "long nk_sys_palette(const unsigned char *pal768);"}, {"kind": "function", "line": 26, "name": "nk_sys_kbd_raw", "signature": "long nk_sys_kbd_raw(int on);"}, {"kind": "function", "line": 27, "name": "nk_sys_vga_mode", "signature": "long nk_sys_vga_mode(int on);"}, {"kind": "function", "line": 28, "name": "nk_sys_fb_info", "signature": "long nk_sys_fb_info(int *w, int *h, int *pitch);"}, {"kind": "function", "line": 29, "name": "nk_sys_mouse", "signature": "long nk_sys_mouse(int *xybw);"}, {"doc": "Call SYS_MOUSE with a pointer that is NOT in the user window; the kernel must reject it with -EFAULT. Used by --selftest to prove the pointer * validation, so a mutant that drops the bounds check is killed.", "kind": "function", "line": 33, "name": "nk_sys_mouse_badptr", "signature": "long nk_sys_mouse_badptr(void);"}, {"kind": "function", "line": 34, "name": "nk_sys_nk_frame", "signature": "long nk_sys_nk_frame(int *origin);"}, {"doc": "Call SYS_MOUSE with a pointer that is NOT in the user window; the kernel must reject it with -EFAULT. Used by --selftest to prove the pointer * validation, so a mutant that drops the bounds check is killed. long nk_sys_mouse_badptr(void); long nk_sys_nk_frame(int *origin); /* int[2]: window content origin", "kind": "function", "line": 35, "name": "nk_sys_gfx_set_title", "signature": "long nk_sys_gfx_set_title(const char *t);"}, {"doc": "Hybrid palette: indices 0-14 are the desktop colors (kept so the desktop * behind the window never recolors); 15-255 are the UI ramp.", "kind": "function", "line": 39, "name": "nk_build_palette", "signature": "void nk_build_palette(unsigned char *pal768);"}, {"doc": "Hybrid palette: indices 0-14 are the desktop colors (kept so the desktop * behind the window never recolors); 15-255 are the UI ramp. void nk_build_palette(unsigned char *pal768); /* 8x8 bitmap font (ASCII 32..127), shared with the rasterizer. extern const uint8_t nk_font8x8[96][8]; /* The nk_user_font for this backend: 8x8 monospace.", "kind": "function", "line": 45, "name": "nk_minios_font", "signature": "struct nk_user_font nk_minios_font(void);"}, {"doc": "Hybrid palette: indices 0-14 are the desktop colors (kept so the desktop * behind the window never recolors); 15-255 are the UI ramp. void nk_build_palette(unsigned char *pal768); /* 8x8 bitmap font (ASCII 32..127), shared with the rasterizer. extern const uint8_t nk_font8x8[96][8]; /* The nk_user_font for this backend: 8x8 monospace. struct nk_user_font nk_minios_font(void); /* Rasterize the Nuklear command list into the back-buffer.", "kind": "function", "line": 48, "name": "nk_rasterize", "signature": "void nk_rasterize(struct nk_context *ctx);"}, {"kind": "function", "line": 56, "name": "nk_poll_input", "signature": "void nk_poll_input(struct nk_context *ctx);"}, {"doc": "Raw scancode hook: piano-style apps need note on/off with break events, which the Nuklear key/unicode translation discards. When set, the hook fires for every PS/2 set-1 scancode drained by nk_poll_input, after E0 decoding: code is the 7-bit code, make is 1 on press and 0 on release, e0 is 1 for extended keys. The hook must never block; it runs in the * app's input poll.", "kind": "function", "line": 64, "name": "void", "signature": "typedef void (*nk_scancode_cb)(int code, int make, int e0, void *ud);"}, {"kind": "function", "line": 65, "name": "nk_set_scancode_hook", "signature": "void nk_set_scancode_hook(nk_scancode_cb cb, void *ud);"}, {"kind": "macro", "line": 2, "name": "NUKLEAR_MINIOS_H", "signature": "#define NUKLEAR_MINIOS_H"}, {"kind": "macro", "line": 17, "name": "NK_W", "signature": "#define NK_W"}, {"kind": "macro", "line": 19, "name": "NK_H", "signature": "#define NK_H"}, {"kind": "macro", "line": 20, "name": "NK_BACKBUF", "signature": "#define NK_BACKBUF"}]}, {"doc": "piano.c — a Nuklear piano that plays FM sound through the SB16 driver.", "id": "progs/piano/piano.c", "kind": "module", "label": "piano.c", "language": "c", "sha256": "523f594fc261ff7a", "symbol_count": 86, "symbols": [{"doc": "Per-frame render bite: after a stall the backlog is paced over several frames instead of one giant catch-up render, bounding the worst-case CPU spike (Nuked OPL3 is heavy) while the debt below is preserved, so not a single millisecond of audio is lost. Kept small (15 ms) on purpose: a 30 ms bite costs a full extra frame of OPL3 time and halves the mouse poll rate while the backlog drains; 15 ms still outruns the ~93 ms DMA * buffer so the ring never starves. define PIANO_FRAME_MS 15", "kind": "function", "line": 76, "name": "sys_pcm_open", "signature": "static long sys_pcm_open(long on)"}, {"kind": "function", "line": 80, "name": "sys_pcm_submit", "signature": "static long sys_pcm_submit(const void *buf, long len)"}, {"kind": "function", "line": 83, "name": "sys_pcm_pump", "signature": "static long sys_pcm_pump(void)"}, {"kind": "function", "line": 86, "name": "sys_yield", "signature": "static void sys_yield(void)"}, {"kind": "function", "line": 101, "name": "o3_op", "signature": "static int o3_op(int ch, int is_car)"}, {"kind": "function", "line": 105, "name": "o3_opreg", "signature": "static void o3_opreg(int ch, int is_car, int regbase, int val)"}, {"kind": "function", "line": 109, "name": "o3_chreg", "signature": "static void o3_chreg(int ch, int regbase, int val)"}, {"kind": "function", "line": 146, "name": "o3_note", "signature": "static void o3_note(int ch, int midi, int on)"}, {"doc": "define NKEYS ((int)(sizeof(keys) / sizeof(keys[0])))", "kind": "function", "line": 184, "name": "midi_to_key", "signature": "static int midi_to_key(int midi)"}, {"doc": "Per-scancode voice tracking so chords and fast melodies work: each * pressed scancode owns its channel until release. Indexed by 7-bit code. static int sc_chan[128]; static int sustain_pedal; static int octave; /* -2..+2, note shifted by 12*octave static int volume; /* 0..100 master, applied on the mix", "kind": "function", "line": 207, "name": "clamp_midi", "signature": "static int clamp_midi(int m)"}, {"doc": "pressed scancode owns its channel until release. Indexed by 7-bit code. static int sc_chan[128]; static int sustain_pedal; static int octave; /* -2..+2, note shifted by 12*octave static int volume; /* 0..100 master, applied on the mix static int clamp_midi(int m) { if (m < 0) m = 0; if (m > 127) m = 127; return m; } /* Release every voice the pedal is holding (pedal lifted).", "kind": "function", "line": 215, "name": "pedal_set", "signature": "static void pedal_set(int on)"}, {"kind": "function", "line": 228, "name": "voice_alloc", "signature": "static int voice_alloc(void)"}, {"kind": "function", "line": 241, "name": "note_off_key", "signature": "static void note_off_key(int key)"}, {"kind": "function", "line": 255, "name": "note_on_key", "signature": "static void note_on_key(int key, int midi, int vel)"}, {"doc": "── PC-keyboard MIDI map (Fruity Loops style) ───────────────────────── PS/2 set-1 scancodes (7-bit code, E0 clear) to semitone offsets from the UI base: A-row whites, Q-row blacks between them, Z-row bass whites, digits aliasing the upper blacks. Comma/period are octave down/up and * are handled in the hook, not here. Returns -100 for \"not a note\". define KBD_NO_NOTE (-100)", "kind": "function", "line": 272, "name": "kbd_semitone", "signature": "static int kbd_semitone(int code)"}, {"kind": "function", "line": 306, "name": "kbd_all_off", "signature": "static void kbd_all_off(void)"}, {"kind": "function", "line": 312, "name": "note_on_sc", "signature": "static void note_on_sc(int code, int vel)"}, {"kind": "function", "line": 326, "name": "note_off_sc", "signature": "static void note_off_sc(int code)"}, {"doc": "Raw scancode hook (registered with nk_set_scancode_hook): note on/off * plus comma/period octave shift. Extended (E0) keys are ignored.", "kind": "function", "line": 343, "name": "piano_scancode", "signature": "static void piano_scancode(int code, int make, int e0, void *ud)"}, {"doc": "#define FX_DELAY_CAP (RATE) /* 1 s of delay at 22050 Hz #define FX_DELAY_MAX_MS 800 #define FX_FEEDBACK 0.35f #define FX_WET 0.55f #define FX_TREM_FREQ 5.0f static float fx_delay_buf[FX_DELAY_CAP]; static int fx_delay_len; /* samples, 0 = echo off static int fx_delay_pos; static int fx_tremolo_pct; /* 0..100, 0 = tremolo off static float fx_trem_phase; static int fx_softclip; /* (Re)configure every FX stage; also used by the selftest.", "kind": "function", "line": 395, "name": "fx_configure", "signature": "static void fx_configure(int delay_ms, int tremolo_pct, int clip, int vol)"}, {"kind": "function", "line": 413, "name": "fx_process", "signature": "static float fx_process(float x)"}, {"doc": "Flush a fully-filled buffer to the kernel audio ring. When the ring is full the submit is refused; the buffer is kept in place (fill stays at PCM_BUF) so the next frame retries it, and a drop is counted only when a new submit is blocked by a still-pending buffer, never silently. After a successful submit we call sys_pcm_pump to eagerly drain the kernel ring * into DMA slots, reducing playback latency on the fast path.", "kind": "function", "line": 444, "name": "sb_flush", "signature": "static void sb_flush(void)"}, {"kind": "function", "line": 453, "name": "render_audio", "signature": "static void render_audio(long ms)"}, {"kind": "function", "line": 479, "name": "key_rect", "signature": "static void key_rect(int key, int *x, int *y, int *w, int *h)"}, {"kind": "function", "line": 486, "name": "hit_key", "signature": "static int hit_key(int mx, int my)"}, {"doc": "Velocity 1..100 from the click's vertical position inside a key: the very * top is soft, the bottom is loud.", "kind": "function", "line": 504, "name": "hit_velocity", "signature": "static int hit_velocity(int key, int my)"}, {"doc": "define NCTRLS ((int)(sizeof(ctrls) / sizeof(ctrls[0])))", "kind": "function", "line": 530, "name": "ctrl_hit", "signature": "static int ctrl_hit(int id, int mx, int my)"}, {"kind": "function", "line": 535, "name": "ctrl_active", "signature": "static int ctrl_active(int id)"}, {"kind": "function", "line": 544, "name": "ctrl_press", "signature": "static void ctrl_press(int id)"}, {"doc": "case 1: if (octave < 2) octave++; break; case 2: if (volume > 0) volume -= 5; break; case 3: if (volume < 100) volume += 5; break; case 4: pedal_set(sustain_pedal ? 0 : 1); break; case 5: fx_configure(fx_delay_len > 0 ? 0 : 220, fx_tremolo_pct, fx_softclip, volume); break; case 6: fx_configure(fx_delay_len > 0 ? fx_delay_len * 1000 / (int)RATE : 0, fx_tremolo_pct > 0 ? 0 : 70, fx_softclip, volume); break; case 7: fx_configure(fx_delay_len > 0 ? fx_delay_len * 1000 / (int)RATE : 0, fx_tremolo_pct, fx_softclip ? 0 : 1, volume); break; default: break; } } /* ── UI ───────────────────────────────────────────────────────────────", "kind": "function", "line": 562, "name": "ui_run", "signature": "static void ui_run(int bench_ms)"}, {"doc": "Yield instead of busy-spinning: the old 8 ms pause loop burned CPU every frame and delayed input polling; a yield hands the * machine back so the mouse/ISR state stays fresh. sys_yield(); } nk_set_scancode_hook(0, 0); nk_free(&ctx); nk_sys_kbd_raw(0); nk_sys_vga_mode(0); sys_pcm_open(0); } /* ── Headless selftest (BDD hook) ─────────────────────────────────────", "kind": "function", "line": 730, "name": "run_selftest", "signature": "static int run_selftest(void)"}, {"kind": "function", "line": 896, "name": "main", "signature": "int main(int argc, char **argv)"}, {"kind": "function", "line": 87, "name": "volatile", "signature": "__asm__ volatile(\"syscall\"::\"a\"(MINIOS_SYS_SCHED_YIELD):\"rcx\",\"r11\",\"memory\");"}, {"kind": "function", "line": 106, "name": "OPL3_WriteReg", "signature": "OPL3_WriteReg(&o3, (uint16_t)(o3_bank(ch) + regbase + o3_op(ch, is_car)), (uint8_t)val);"}, {"kind": "function", "line": 262, "name": "o3_instrument", "signature": "o3_instrument(ch, vel);"}, {"kind": "function", "line": 406, "name": "memset", "signature": "memset(fx_delay_buf, 0, sizeof(fx_delay_buf));"}, {"kind": "function", "line": 462, "name": "OPL3_GenerateStream", "signature": "OPL3_GenerateStream(&o3, st, (uint32_t)n);"}, {"kind": "function", "line": 565, "name": "nk_sys_vga_mode", "signature": "nk_sys_vga_mode(1);"}, {"kind": "function", "line": 567, "name": "nk_sys_gfx_set_title", "signature": "nk_sys_gfx_set_title(\"Piano\");"}, {"kind": "function", "line": 568, "name": "nk_sys_kbd_raw", "signature": "nk_sys_kbd_raw(1);"}, {"kind": "function", "line": 569, "name": "nk_build_palette", "signature": "nk_build_palette(pal768);"}, {"kind": "function", "line": 570, "name": "nk_sys_palette", "signature": "nk_sys_palette(pal768);"}, {"kind": "function", "line": 571, "name": "nk_sys_fb_info", "signature": "nk_sys_fb_info(&fw, &fh, &fp);"}, {"kind": "function", "line": 574, "name": "OPL3_Reset", "signature": "OPL3_Reset(&o3, RATE);"}, {"kind": "function", "line": 582, "name": "nk_set_scancode_hook", "signature": "nk_set_scancode_hook(piano_scancode, 0);"}, {"kind": "function", "line": 591, "name": "printf", "signature": "printf(\"piano: init failed\\n\");"}, {"kind": "function", "line": 612, "name": "nk_input_begin", "signature": "nk_input_begin(&ctx);"}, {"kind": "function", "line": 613, "name": "nk_poll_input", "signature": "nk_poll_input(&ctx);"}, {"kind": "function", "line": 614, "name": "nk_input_end", "signature": "nk_input_end(&ctx);"}, {"kind": "function", "line": 636, "name": "nk_rgb", "signature": ": nk_rgb(240, 240, 240);"}, {"kind": "function", "line": 637, "name": "nk_fill_rect", "signature": "nk_fill_rect(canvas, r, 0, col);"}, {"kind": "function", "line": 638, "name": "nk_stroke_rect", "signature": "nk_stroke_rect(canvas, r, 0, 1, nk_rgb(90, 90, 90));"}, {"kind": "function", "line": 650, "name": "nk_draw_text", "signature": "nk_draw_text(canvas, r, ctrls[c].label, (int)strlen(ctrls[c].label), &font, nk_rgb(255, 255, 255), nk_rgb(0, 0, 0));"}, {"kind": "function", "line": 656, "name": "snprintf", "signature": "snprintf(head, sizeof(head), \"OPL3 FM piano -> SB16 C4 base oct%+d vol%d\", octave, volume);"}, {"kind": "function", "line": 671, "name": "nk_end", "signature": "nk_end(&ctx);"}, {"kind": "function", "line": 693, "name": "nk_rasterize", "signature": "nk_rasterize(&ctx);"}, {"kind": "function", "line": 697, "name": "nk_clear", "signature": "nk_clear(&ctx);"}, {"kind": "function", "line": 723, "name": "nk_free", "signature": "nk_free(&ctx);"}, {"kind": "macro", "line": 53, "name": "UI_MEMORY", "signature": "#define UI_MEMORY"}, {"kind": "macro", "line": 56, "name": "SYS_SB16_OPEN", "signature": "#define SYS_SB16_OPEN"}, {"kind": "macro", "line": 58, "name": "SYS_SB16_SUBMIT", "signature": "#define SYS_SB16_SUBMIT"}, {"kind": "macro", "line": 59, "name": "SYS_SB16_PUMP", "signature": "#define SYS_SB16_PUMP"}, {"kind": "macro", "line": 60, "name": "RATE", "signature": "#define RATE"}, {"kind": "macro", "line": 62, "name": "PCM_BUF", "signature": "#define PCM_BUF"}, {"kind": "macro", "line": 67, "name": "MAX_AUDIO_MS", "signature": "#define MAX_AUDIO_MS"}, {"kind": "macro", "line": 75, "name": "PIANO_FRAME_MS", "signature": "#define PIANO_FRAME_MS"}, {"kind": "macro", "line": 164, "name": "KEY_W", "signature": "#define KEY_W"}, {"kind": "macro", "line": 165, "name": "KEY_H", "signature": "#define KEY_H"}, {"kind": "macro", "line": 166, "name": "BK_W", "signature": "#define BK_W"}, {"kind": "macro", "line": 167, "name": "BK_H", "signature": "#define BK_H"}, {"kind": "macro", "line": 168, "name": "KEY_Y", "signature": "#define KEY_Y"}, {"kind": "macro", "line": 169, "name": "PIANO_BASE_MIDI", "signature": "#define PIANO_BASE_MIDI"}, {"kind": "macro", "line": 170, "name": "PIANO_OCTAVES", "signature": "#define PIANO_OCTAVES"}, {"kind": "macro", "line": 183, "name": "NKEYS", "signature": "#define NKEYS"}, {"kind": "macro", "line": 195, "name": "MAX_VOICES", "signature": "#define MAX_VOICES"}, {"kind": "macro", "line": 271, "name": "KBD_NO_NOTE", "signature": "#define KBD_NO_NOTE"}, {"kind": "macro", "line": 380, "name": "FX_DELAY_CAP", "signature": "#define FX_DELAY_CAP"}, {"kind": "macro", "line": 382, "name": "FX_DELAY_MAX_MS", "signature": "#define FX_DELAY_MAX_MS"}, {"kind": "macro", "line": 383, "name": "FX_FEEDBACK", "signature": "#define FX_FEEDBACK"}, {"kind": "macro", "line": 384, "name": "FX_WET", "signature": "#define FX_WET"}, {"kind": "macro", "line": 385, "name": "FX_TREM_FREQ", "signature": "#define FX_TREM_FREQ"}, {"kind": "macro", "line": 514, "name": "CTRL_Y", "signature": "#define CTRL_Y"}, {"kind": "macro", "line": 515, "name": "CTRL_H", "signature": "#define CTRL_H"}, {"kind": "macro", "line": 516, "name": "BTN_W", "signature": "#define BTN_W"}, {"kind": "macro", "line": 517, "name": "BTN_GAP", "signature": "#define BTN_GAP"}, {"kind": "macro", "line": 529, "name": "NCTRLS", "signature": "#define NCTRLS"}]}, {"doc": "fetch.sh - clone the gb-recompiled tool into progs/pokemon/upstream. The upstream project ships the recompiler + runtime, but no ROMs and no pre-generated game code (see its README). You generate a project from a ROM you legally own, then point the MiniOS build at it. See README.md. Usage: ./fetch.sh (safe to re-run; never touches an existing checkout)", "id": "progs/pokemon/fetch.sh", "kind": "module", "label": "fetch.sh", "language": "sh", "sha256": "f799a72d603f6a93", "symbol_count": 0, "symbols": []}, {"doc": "SDL.h stub for MiniOS cross-compilation", "id": "progs/pokemon/minios_stubs/SDL.h", "kind": "module", "label": "SDL.h", "language": "h", "sha256": "5ca0b912b79fedaa", "symbol_count": 10, "symbols": [{"doc": "/* SDL.h stub for MiniOS cross-compilation ifndef SDL_H_STUB_MINIOS define SDL_H_STUB_MINIOS include ", "kind": "type_alias", "line": 5, "name": "Uint64", "signature": "typedef uint64_t Uint64;"}, {"kind": "type_alias", "line": 6, "name": "Uint32", "signature": "typedef uint32_t Uint32;"}, {"kind": "type_alias", "line": 7, "name": "Sint32", "signature": "typedef int32_t Sint32;"}, {"kind": "type_alias", "line": 8, "name": "Sint16", "signature": "typedef int16_t Sint16;"}, {"kind": "type_alias", "line": 9, "name": "Uint8", "signature": "typedef uint8_t Uint8;"}, {"kind": "function", "line": 10, "name": "SDL_GetPerformanceCounter", "signature": "static inline Uint64 SDL_GetPerformanceCounter(void)"}, {"kind": "function", "line": 12, "name": "SDL_GetPerformanceFrequency", "signature": "static inline Uint64 SDL_GetPerformanceFrequency(void)"}, {"kind": "function", "line": 13, "name": "SDL_GetTicks", "signature": "static inline Uint32 SDL_GetTicks(void)"}, {"kind": "function", "line": 14, "name": "SDL_Delay", "signature": "static inline void SDL_Delay(Uint32 ms)"}, {"kind": "macro", "line": 3, "name": "SDL_H_STUB_MINIOS", "signature": "#define SDL_H_STUB_MINIOS"}]}, {"id": "progs/pokemon/platform_minios.c", "kind": "module", "label": "platform_minios.c", "language": "c", "sha256": "7007fc0a14dffb71", "symbol_count": 110, "symbols": [{"kind": "struct", "line": 228, "name": "gb_voice_t"}, {"kind": "function", "line": 32, "name": "audible", "signature": "* audible (noise SFX, sweep zaps), the raw mix estimate is played.\n *\n * Debug: heartbeat to stde..."}, {"kind": "function", "line": 61, "name": "sys_kbd", "signature": "static long sys_kbd(void)"}, {"kind": "function", "line": 67, "name": "sys_nk_frame", "signature": "static long sys_nk_frame(int *origin)"}, {"kind": "function", "line": 73, "name": "sys_mouse", "signature": "static long sys_mouse(int *xybw)"}, {"kind": "function", "line": 79, "name": "sys_vga_mode", "signature": "static long sys_vga_mode(int on)"}, {"kind": "function", "line": 85, "name": "sys_kbd_raw", "signature": "static long sys_kbd_raw(int on)"}, {"kind": "function", "line": 91, "name": "sys_palette", "signature": "static long sys_palette(const unsigned char *pal)"}, {"kind": "function", "line": 97, "name": "sys_gfx_title", "signature": "static long sys_gfx_title(const char *t)"}, {"kind": "function", "line": 103, "name": "sys_tone", "signature": "static long sys_tone(unsigned f)"}, {"kind": "function", "line": 143, "name": "gb_platform_set_debug", "signature": "void gb_platform_set_debug(bool enabled)"}, {"kind": "function", "line": 151, "name": "_dl_argv", "signature": "* usable _dl_argv (it bound to unrelated storage and strcmp faulted).\n * DO NOT reintroduce argv ..."}, {"kind": "function", "line": 201, "name": "minios_audio_sample", "signature": "static void minios_audio_sample(GBContext *ctx, int16_t left, int16_t right)"}, {"kind": "function", "line": 232, "name": "gb_voice_in_range", "signature": "static bool gb_voice_in_range(unsigned f)"}, {"kind": "function", "line": 236, "name": "sample_apu_voices", "signature": "static void sample_apu_voices(gb_voice_t *v)"}, {"kind": "function", "line": 256, "name": "hold_tone", "signature": "static void hold_tone(unsigned freq, unsigned ms)"}, {"kind": "function", "line": 264, "name": "minios_audio_play", "signature": "static void minios_audio_play(const gb_voice_t *v, bool pcm_audible,\n ..."}, {"doc": "} if (m2) { mel[nmel++] = v[1].freq; } if (bass) { hold_tone(v[2].freq, MINIOS_ARP_BASS_MS); } if (nmel > 0) { hold_tone(mel[g_arp_index % (unsigned)nmel], MINIOS_ARP_MEL_MS); g_arp_index++; } } /* Called once per rendered frame: a handful of syscalls, max.", "kind": "function", "line": 300, "name": "minios_audio_frame", "signature": "static void minios_audio_frame(void)"}, {"kind": "function", "line": 327, "name": "rebuild_joypad", "signature": "static void rebuild_joypad(void)"}, {"kind": "function", "line": 341, "name": "poll_keyboard", "signature": "static void poll_keyboard(void)"}, {"doc": "3-3-2 RGB palette ramp, pushed ONCE at init (not per frame). * Pixel index = (R & 0xE0) | ((G & 0xE0) >> 3) | ((B & 0xC0) >> 6).", "kind": "function", "line": 381, "name": "push_332_palette", "signature": "static void push_332_palette(void)"}, {"kind": "function", "line": 536, "name": "menu_fill", "signature": "static void menu_fill(int x0, int y0, int w, int h, uint8_t idx)"}, {"kind": "function", "line": 549, "name": "menu_text", "signature": "static void menu_text(int x, int y, const char *s, uint8_t fg)"}, {"kind": "function", "line": 568, "name": "menu_osd", "signature": "static void menu_osd(const char *s)"}, {"kind": "function", "line": 574, "name": "menu_draw", "signature": "static void menu_draw(void)"}, {"kind": "function", "line": 604, "name": "menu_item_at", "signature": "static int menu_item_at(int lx, int ly)"}, {"kind": "function", "line": 611, "name": "menu_do_save", "signature": "static void menu_do_save(void)"}, {"kind": "function", "line": 627, "name": "menu_do_load", "signature": "static void menu_do_load(void)"}, {"kind": "function", "line": 646, "name": "menu_activate", "signature": "static void menu_activate(int it)"}, {"doc": "Esc toggles, Up/Down move, Enter activates; the mouse is a bonus. * PS/2 Set 1: Esc = 0x01, Up = 0x48, Down = 0x50, Enter = 0x1C.", "kind": "function", "line": 681, "name": "poll_menu", "signature": "static void poll_menu(void)"}, {"doc": "if (lbtn && !g_prev_lbtn) { if (lx >= MENU_FILE_X0 && lx < MENU_FILE_X1 && ly >= 0 && ly < MENU_BAR_H) { g_menu_open = !g_menu_open; if (g_menu_open && g_menu_hover < 0) g_menu_hover = 0; } else if (g_menu_open) { int it = menu_item_at(lx, ly); if (it >= 0) menu_activate(it); else g_menu_open = false; } } g_prev_lbtn = lbtn; } /* Scale and upload frame to backbuffer (nearest neighbor, exact 2x).", "kind": "function", "line": 738, "name": "upload_frame", "signature": "static void upload_frame(const uint32_t *framebuffer)"}, {"doc": "============================================================================ gb_platform_* interface implementation * ==========================================================================", "kind": "function", "line": 805, "name": "gb_platform_init", "signature": "bool gb_platform_init(int scale)"}, {"doc": "-- Battery + RTC persistence (direct write to MiniFS) --- Paths use saves/: kfopen tries the ramdisk FIRST and creates there when the parent directory exists on the ramdisk, so bin/ (which the ramdisk ships as bin/minigcc.elf, bin/cp) would land on volatile ramdisk and vanish on reboot. saves/ exists on neither the ramdisk nor a fresh MiniFS, so the write falls through to MiniFS (mkdir_p + create) and survives reboot/poweroff. Writes are direct (fopen w + fwrite + fclose); there is no rename() on MiniOS yet, so no atomic * temp+rename transaction like the SDL port does.", "kind": "function", "line": 834, "name": "minios_persist_path", "signature": "static void minios_persist_path(char *out, size_t n, const GBContext *ctx,\n ..."}, {"doc": "Legacy ramdisk path (pre-MiniFS fix wrote bin/.* onto volatile ramdisk). Loads still probe it as a fallback so a checkpoint saved * in the same session before an upgrade is not invisible.", "kind": "function", "line": 844, "name": "minios_legacy_path", "signature": "static void minios_legacy_path(char *out, size_t n, const GBContext *ctx,\n ..."}, {"kind": "function", "line": 849, "name": "minios_load_helper", "signature": "static bool minios_load_helper(const char *path, void *data, size_t size,\n ..."}, {"kind": "function", "line": 867, "name": "minios_save_helper", "signature": "static bool minios_save_helper(const char *path, const void *data, size_t size)"}, {"kind": "function", "line": 878, "name": "minios_load_battery_ram", "signature": "static bool minios_load_battery_ram(GBContext *ctx, const char *rom_name,\n ..."}, {"kind": "function", "line": 893, "name": "minios_save_battery_ram", "signature": "static bool minios_save_battery_ram(GBContext *ctx, const char *rom_name,\n ..."}, {"kind": "function", "line": 903, "name": "minios_load_rtc_data", "signature": "static bool minios_load_rtc_data(GBContext *ctx, const char *rom_name,\n ..."}, {"kind": "function", "line": 916, "name": "minios_save_rtc_data", "signature": "static bool minios_save_rtc_data(GBContext *ctx, const char *rom_name,\n ..."}, {"kind": "function", "line": 955, "name": "minios_fast_forward", "signature": "static inline bool minios_fast_forward(void)"}, {"kind": "function", "line": 958, "name": "minios_state_path", "signature": "static void minios_state_path(char *out, size_t n, const GBContext *ctx)"}, {"kind": "function", "line": 963, "name": "minios_legacy_state_path", "signature": "static void minios_legacy_state_path(char *out, size_t n, const GBContext *ctx)"}, {"kind": "function", "line": 968, "name": "minios_autosave", "signature": "static void minios_autosave(uint32_t now)"}, {"doc": "PS/2 Set 1: F5 = 0x3F, F8 = 0x42, Ctrl = 0x1D, S = 0x1F, L = 0x26, SPACE = 0x39, Shift = 0x2A/0x36. SPACE held is momentary turbo; * Ctrl+Space latches it (sticky), Ctrl+Shift+Space releases it.", "kind": "function", "line": 983, "name": "poll_hotkeys", "signature": "static void poll_hotkeys(void)"}, {"kind": "function", "line": 1034, "name": "gb_platform_register_context", "signature": "void gb_platform_register_context(GBContext *ctx)"}, {"kind": "function", "line": 1050, "name": "gb_platform_shutdown", "signature": "void gb_platform_shutdown(void)"}, {"kind": "function", "line": 1057, "name": "gb_platform_poll_events", "signature": "bool gb_platform_poll_events(GBContext *ctx)"}, {"kind": "function", "line": 1066, "name": "gb_platform_render_frame", "signature": "void gb_platform_render_frame(const uint32_t *framebuffer)"}, {"kind": "function", "line": 1124, "name": "gb_platform_present_framebuffer", "signature": "void gb_platform_present_framebuffer(const uint32_t *framebuffer)"}, {"kind": "function", "line": 1130, "name": "gb_platform_render_lcd_off_frame", "signature": "void gb_platform_render_lcd_off_frame(void)"}, {"kind": "function", "line": 1146, "name": "gb_platform_vsync", "signature": "void gb_platform_vsync(uint32_t frame_cycles)"}, {"kind": "function", "line": 1167, "name": "gb_platform_set_benchmark_mode", "signature": "void gb_platform_set_benchmark_mode(bool enabled)"}, {"kind": "function", "line": 1171, "name": "gb_platform_set_input_script", "signature": "bool gb_platform_set_input_script(const char *script)"}, {"kind": "function", "line": 1177, "name": "gb_platform_set_input_record_file", "signature": "void gb_platform_set_input_record_file(const char *path)"}, {"kind": "function", "line": 1182, "name": "gb_platform_set_persistence_dir", "signature": "bool gb_platform_set_persistence_dir(const char *path)"}, {"kind": "function", "line": 1191, "name": "gb_platform_set_dump_frames", "signature": "void gb_platform_set_dump_frames(const char *frames)"}, {"kind": "function", "line": 1213, "name": "gb_platform_set_dump_present_frames", "signature": "void gb_platform_set_dump_present_frames(const char *frames)"}, {"kind": "function", "line": 1234, "name": "gb_platform_set_screenshot_prefix", "signature": "void gb_platform_set_screenshot_prefix(const char *prefix)"}, {"kind": "function", "line": 1240, "name": "gb_platform_get_timing_info", "signature": "void gb_platform_get_timing_info(GBPlatformTimingInfo *out)"}, {"kind": "function", "line": 1247, "name": "gb_platform_get_joypad", "signature": "uint8_t gb_platform_get_joypad(void)"}, {"kind": "function", "line": 1251, "name": "gb_platform_set_title", "signature": "void gb_platform_set_title(const char *title)"}, {"kind": "function", "line": 1257, "name": "gb_platform_get_smooth_lcd_transitions", "signature": "bool gb_platform_get_smooth_lcd_transitions(void)"}, {"kind": "function", "line": 1261, "name": "gb_platform_set_smooth_lcd_transitions", "signature": "void gb_platform_set_smooth_lcd_transitions(bool enabled)"}, {"kind": "function", "line": 1265, "name": "gb_platform_set_launcher_return_enabled", "signature": "void gb_platform_set_launcher_return_enabled(bool enabled)"}, {"kind": "function", "line": 1269, "name": "gb_platform_get_exit_action", "signature": "GBPlatformExitAction gb_platform_get_exit_action(void)"}, {"kind": "function", "line": 1273, "name": "gb_platform_submit_port_frame", "signature": "void gb_platform_submit_port_frame(void *user, const GBPortFrame *frame)"}, {"doc": "void gb_platform_set_launcher_return_enabled(bool enabled) { (void)enabled; } GBPlatformExitAction gb_platform_get_exit_action(void) { return g_exit_action; } void gb_platform_submit_port_frame(void *user, const GBPortFrame *frame) { (void)user; (void)frame; } /* Test-hook stubs (no-ops on MiniOS)", "kind": "function", "line": 1280, "name": "gb_platform_test_audio_concurrency", "signature": "bool gb_platform_test_audio_concurrency(uint32_t frames,\n ..."}, {"kind": "function", "line": 1288, "name": "gb_platform_test_inject_persistence_fault", "signature": "void gb_platform_test_inject_persistence_fault(\n GBPersistenceTestTarget target,\n GBPersist..."}, {"kind": "function", "line": 58, "name": "volatile", "signature": "__asm__ volatile(\"syscall\" : \"=a\"(ret) : \"a\"(MINIOS_SYS_TIME), \"D\"(0) : \"rcx\",\"r11\",\"memory\");"}, {"kind": "function", "line": 162, "name": "fprintf", "signature": "fprintf(stderr, \"[MINIOS-DBG] render=%u present=%u lcd_off=%u poll=%u vsync=%u \" \"joypad dpad=%02x buttons=%02x\\n\", g_dbg_render, g_dbg_present, g_dbg_lcd_off, g_dbg_poll, g_dbg_vsync, g_joypad_dpad, "}, {"kind": "function", "line": 168, "name": "fflush", "signature": "fflush(stderr);"}, {"kind": "function", "line": 172, "name": "audio", "signature": "* PC speaker audio (DOOM-style: sparse syscalls from poll points) * * Per rendered frame, live voice frequencies come from gb_audio_voice() * (runtime accessor over internal channel state: enabled, DA"}, {"kind": "function", "line": 497, "name": "menu", "signature": "* FILE menu (no Nuklear on purpose) * * A 16 px menu bar lives in the top margin the 2x GB image never touches * (it starts at GB_DST_Y0 = 36). Clicking FILE (or pressing Esc) drops a * 5-item menu: S"}, {"kind": "function", "line": 570, "name": "strncpy", "signature": "strncpy(g_osd, s, sizeof(g_osd) - 1);"}, {"kind": "function", "line": 617, "name": "gb_context_save_ram", "signature": "gb_context_save_ram(g_ctx);"}, {"kind": "function", "line": 675, "name": "exit", "signature": "exit(0);"}, {"kind": "function", "line": 813, "name": "memset", "signature": "memset(g_last_guest_framebuffer, 0, sizeof(g_last_guest_framebuffer));"}, {"kind": "function", "line": 838, "name": "snprintf", "signature": "snprintf(out, n, \"saves/%.40s%s\", id, ext);"}, {"kind": "function", "line": 858, "name": "fclose", "signature": "fclose(f);"}, {"kind": "function", "line": 993, "name": "memcpy", "signature": "memcpy(prev, g_key_state, sizeof(prev));"}, {"kind": "function", "line": 1048, "name": "gb_set_platform_callbacks", "signature": "gb_set_platform_callbacks(ctx, &cbs);"}, {"kind": "function", "line": 1086, "name": "dbg_heartbeat", "signature": "dbg_heartbeat();"}, {"kind": "macro", "line": 113, "name": "FB_ADDR", "signature": "#define FB_ADDR"}, {"kind": "macro", "line": 115, "name": "FB_W", "signature": "#define FB_W"}, {"kind": "macro", "line": 116, "name": "FB_H", "signature": "#define FB_H"}, {"kind": "macro", "line": 117, "name": "GB_SCALE", "signature": "#define GB_SCALE"}, {"kind": "macro", "line": 119, "name": "GB_DST_W", "signature": "#define GB_DST_W"}, {"kind": "macro", "line": 120, "name": "GB_DST_H", "signature": "#define GB_DST_H"}, {"kind": "macro", "line": 121, "name": "GB_DST_X0", "signature": "#define GB_DST_X0"}, {"kind": "macro", "line": 122, "name": "GB_DST_Y0", "signature": "#define GB_DST_Y0"}, {"kind": "macro", "line": 186, "name": "MINIOS_AUDIO_RATE", "signature": "#define MINIOS_AUDIO_RATE"}, {"kind": "macro", "line": 188, "name": "MINIOS_AUDIO_SILENCE_E", "signature": "#define MINIOS_AUDIO_SILENCE_E"}, {"kind": "macro", "line": 189, "name": "MINIOS_AUDIO_MIN_HZ", "signature": "#define MINIOS_AUDIO_MIN_HZ"}, {"kind": "macro", "line": 190, "name": "MINIOS_AUDIO_MAX_HZ", "signature": "#define MINIOS_AUDIO_MAX_HZ"}, {"kind": "macro", "line": 191, "name": "MINIOS_ARP_BASS_MS", "signature": "#define MINIOS_ARP_BASS_MS"}, {"kind": "macro", "line": 192, "name": "MINIOS_ARP_MEL_MS", "signature": "#define MINIOS_ARP_MEL_MS"}, {"kind": "macro", "line": 511, "name": "MENU_BAR_H", "signature": "#define MENU_BAR_H"}, {"kind": "macro", "line": 513, "name": "MENU_FILE_X0", "signature": "#define MENU_FILE_X0"}, {"kind": "macro", "line": 514, "name": "MENU_FILE_X1", "signature": "#define MENU_FILE_X1"}, {"kind": "macro", "line": 515, "name": "MENU_DROP_X0", "signature": "#define MENU_DROP_X0"}, {"kind": "macro", "line": 516, "name": "MENU_DROP_W", "signature": "#define MENU_DROP_W"}, {"kind": "macro", "line": 517, "name": "MENU_ITEM_H", "signature": "#define MENU_ITEM_H"}, {"kind": "macro", "line": 518, "name": "MENU_NITEMS", "signature": "#define MENU_NITEMS"}, {"kind": "macro", "line": 521, "name": "MENU_BG", "signature": "#define MENU_BG"}, {"kind": "macro", "line": 522, "name": "MENU_FG", "signature": "#define MENU_FG"}, {"kind": "macro", "line": 523, "name": "MENU_HOVER", "signature": "#define MENU_HOVER"}, {"kind": "macro", "line": 524, "name": "MENU_OSD_BG", "signature": "#define MENU_OSD_BG"}, {"kind": "macro", "line": 940, "name": "MINIOS_AUTOSAVE_MS", "signature": "#define MINIOS_AUTOSAVE_MS"}, {"kind": "macro", "line": 952, "name": "MINIOS_FF_FRAMESKIP", "signature": "#define MINIOS_FF_FRAMESKIP"}]}, {"doc": "q2generic_minios.c - MiniOS platform layer for quake2generic.", "id": "progs/quake2generic/q2generic_minios.c", "kind": "module", "label": "q2generic_minios.c", "language": "c", "sha256": "fafff08836a3b339", "symbol_count": 36, "symbols": [{"kind": "function", "line": 5, "name": "MINIOS_GFX_BUF_GAME", "signature": "* MINIOS_SYS_GFX_PRESENT with MINIOS_GFX_BUF_GAME (211 stays as a kernel\n * compat alias) and the..."}, {"kind": "function", "line": 29, "name": "sys_kbd", "signature": "static long sys_kbd(void)"}, {"kind": "function", "line": 35, "name": "sys_palette", "signature": "static long sys_palette(const unsigned char *pal)"}, {"kind": "function", "line": 41, "name": "sys_kbd_raw", "signature": "static long sys_kbd_raw(int on)"}, {"kind": "function", "line": 47, "name": "sys_vga_mode", "signature": "static long sys_vga_mode(int on)"}, {"kind": "function", "line": 53, "name": "sys_doom_frame", "signature": "static long sys_doom_frame(void)"}, {"kind": "function", "line": 59, "name": "sys_mouse", "signature": "static long sys_mouse(int *buf)"}, {"kind": "function", "line": 65, "name": "sys_set_title", "signature": "static long sys_set_title(const char *t)"}, {"kind": "function", "line": 87, "name": "q2g_parse_autoframes", "signature": "static void q2g_parse_autoframes(int argc, char **argv)"}, {"kind": "function", "line": 102, "name": "QG_GetMouseDiff", "signature": "void QG_GetMouseDiff(int *dx, int *dy)"}, {"kind": "function", "line": 113, "name": "QG_CaptureMouse", "signature": "void QG_CaptureMouse(void)"}, {"kind": "function", "line": 117, "name": "QG_ReleaseMouse", "signature": "void QG_ReleaseMouse(void)"}, {"kind": "function", "line": 120, "name": "QG_Mkdir", "signature": "void QG_Mkdir(const char *path)"}, {"kind": "function", "line": 124, "name": "scancode_to_q2key", "signature": "static unsigned char scancode_to_q2key(unsigned char raw)"}, {"kind": "function", "line": 207, "name": "extended_to_q2key", "signature": "static unsigned char extended_to_q2key(unsigned char sc)"}, {"kind": "function", "line": 225, "name": "kbd_poll", "signature": "static void kbd_poll(void)"}, {"kind": "function", "line": 255, "name": "SWimp_SetPalette", "signature": "void SWimp_SetPalette(const unsigned char *palette)"}, {"kind": "function", "line": 265, "name": "SWimp_SetMode", "signature": "rserr_t SWimp_SetMode(int *pwidth, int *pheight, int mode, qboolean fullscreen)"}, {"kind": "function", "line": 282, "name": "SWimp_Init", "signature": "int SWimp_Init(void *hInstance, void *wndProc)"}, {"kind": "function", "line": 288, "name": "SWimp_Shutdown", "signature": "void SWimp_Shutdown(void)"}, {"kind": "function", "line": 291, "name": "SWimp_BeginFrame", "signature": "void SWimp_BeginFrame(float camera_separation)"}, {"kind": "function", "line": 294, "name": "SWimp_EndFrame", "signature": "void SWimp_EndFrame(void)"}, {"kind": "function", "line": 313, "name": "SWimp_AppActivate", "signature": "void SWimp_AppActivate(qboolean active)"}, {"kind": "function", "line": 317, "name": "QG_Milliseconds", "signature": "int QG_Milliseconds(void)"}, {"kind": "function", "line": 321, "name": "main", "signature": "int main(int argc, char **argv)"}, {"kind": "function", "line": 4, "name": "MINIOS_DOOM_BACKBUF_ADDR", "signature": "* MINIOS_DOOM_BACKBUF_ADDR (minios_abi.h);"}, {"kind": "function", "line": 26, "name": "volatile", "signature": "__asm__ volatile(\"syscall\" : \"=a\"(ret) : \"a\"(MINIOS_SYS_TIME), \"D\"(0) : \"rcx\",\"r11\",\"memory\");"}, {"doc": "Sys_Quit lives in the engine's system driver (other/q_system.c); not pulled * in through quake2.h, so declare it here for the autoquit hook below.", "kind": "function", "line": 76, "name": "Sys_Quit", "signature": "extern void Sys_Quit(void);"}, {"kind": "function", "line": 238, "name": "Quake2_SendKey", "signature": "Quake2_SendKey(qkey, !(raw2 & 0x80));"}, {"kind": "function", "line": 307, "name": "printf", "signature": "printf(\"minios: played %d frames, quitting\\n\", s_frames);"}, {"kind": "function", "line": 308, "name": "fflush", "signature": "fflush(stdout);"}, {"kind": "function", "line": 328, "name": "Quake2_Init", "signature": "Quake2_Init(argc, argv);"}, {"kind": "function", "line": 342, "name": "Quake2_Frame", "signature": "Quake2_Frame(time);"}, {"kind": "macro", "line": 20, "name": "Q2G_FB_W", "signature": "#define Q2G_FB_W"}, {"kind": "macro", "line": 22, "name": "Q2G_FB_H", "signature": "#define Q2G_FB_H"}, {"kind": "macro", "line": 71, "name": "Q2G_BACKBUF", "signature": "#define Q2G_BACKBUF"}]}, {"doc": "aes.c - command path AES-256-CTR encryption tools: aes and unaes.", "id": "progs/src/aes.c", "kind": "module", "label": "aes.c", "language": "c", "sha256": "631b63aa92e73f76", "symbol_count": 55, "symbols": [{"kind": "function", "line": 68, "name": "aes_read_all", "signature": "static char *aes_read_all(const char *name, int *len)"}, {"kind": "function", "line": 85, "name": "aes_write_all", "signature": "static int aes_write_all(const char *name, char *data, int len)"}, {"kind": "function", "line": 95, "name": "aes_has", "signature": "static int aes_has(const char *s, const char *needle)"}, {"kind": "function", "line": 109, "name": "hex_val", "signature": "static int hex_val(int c)"}, {"kind": "function", "line": 116, "name": "aes_parse_hex", "signature": "static int aes_parse_hex(const char *s, int want, int *out)"}, {"doc": "static int aes_parse_hex(const char *s, int want, int *out) { int i, hi, lo; if ((int)strlen(s) != want) return 0; for (i = 0; i < want; i += 2) { hi = hex_val(s[i]); lo = hex_val(s[i + 1]); if (hi < 0 || lo < 0) return 0; out[i / 2] = hi * 16 + lo; } return 1; } /* Multiply in GF(2^8) modulo the AES polynomial; both operands are 0..255.", "kind": "function", "line": 130, "name": "aes_gf_mul", "signature": "static int aes_gf_mul(int a, int b)"}, {"kind": "function", "line": 141, "name": "aes_xtime", "signature": "static int aes_xtime(int x)"}, {"kind": "function", "line": 147, "name": "aes_rotl8", "signature": "static int aes_rotl8(int x, int n)"}, {"doc": "Build the S-box from first principles: multiplicative inverse in GF(2^8) composed with the FIPS-197 affine transform. Zero maps straight to the * affine constant because 0 has no inverse.", "kind": "function", "line": 155, "name": "aes_init_tables", "signature": "static void aes_init_tables(void)"}, {"doc": "Expand the 32-byte key into AES_RK_LEN round-key bytes (FIPS-197 for Nk=8, Nr=14: RotWord plus SubWord every Nk words, an extra SubWord pass * every Nk/2 words).", "kind": "function", "line": 174, "name": "aes_key_expand", "signature": "static void aes_key_expand(const int *key)"}, {"kind": "function", "line": 208, "name": "aes_add_round_key", "signature": "static void aes_add_round_key(int round)"}, {"kind": "function", "line": 214, "name": "aes_sub_bytes", "signature": "static void aes_sub_bytes(void)"}, {"kind": "function", "line": 219, "name": "aes_shift_rows", "signature": "static void aes_shift_rows(void)"}, {"kind": "function", "line": 227, "name": "aes_mix_columns", "signature": "static void aes_mix_columns(void)"}, {"kind": "function", "line": 247, "name": "aes_cipher", "signature": "static void aes_cipher(void)"}, {"doc": "int r; aes_add_round_key(0); for (r = 1; r < AES_ROUNDS; r++) { aes_sub_bytes(); aes_shift_rows(); aes_mix_columns(); aes_add_round_key(r); } aes_sub_bytes(); aes_shift_rows(); aes_add_round_key(AES_ROUNDS); } /* Big-endian increment of the whole counter block (SP 800-38A CTR).", "kind": "function", "line": 263, "name": "aes_iv_increment", "signature": "static void aes_iv_increment(void)"}, {"doc": "aes_add_round_key(AES_ROUNDS); } /* Big-endian increment of the whole counter block (SP 800-38A CTR). static void aes_iv_increment(void) { int b; for (b = AES_BLOCK - 1; b >= 0; b--) { aes_iv[b] = aes_iv[b] + 1; if (aes_iv[b] <= 255) break; aes_iv[b] = 0; } } /* XOR data in place with the keystream Cipher(nonce), Cipher(nonce+1)...", "kind": "function", "line": 273, "name": "aes_ctr_crypt", "signature": "static void aes_ctr_crypt(char *data, int len)"}, {"kind": "function", "line": 287, "name": "aes_hdr_put", "signature": "static void aes_hdr_put(char *h, int size)"}, {"kind": "function", "line": 298, "name": "aes_hdr_get", "signature": "static int aes_hdr_get(char *h)"}, {"kind": "function", "line": 306, "name": "aes_tool_name", "signature": "static const char *aes_tool_name(int decode)"}, {"kind": "function", "line": 311, "name": "aes_run", "signature": "static int aes_run(int decode, const char *keyhex, const char *noncehex,\n const..."}, {"kind": "function", "line": 383, "name": "main", "signature": "int main(int argc, char **argv)"}, {"kind": "function", "line": 8, "name": "GF", "signature": "* generated procedurally from the GF(2^8) multiplicative inverse plus the * FIPS-197 affine transform, so the file carries no magic tables. The mode * is CTR (NIST SP 800-38A): no padding, encrypt and"}, {"kind": "function", "line": 25, "name": "putchar", "signature": "int putchar();"}, {"kind": "function", "line": 26, "name": "strcmp", "signature": "int strcmp();"}, {"kind": "function", "line": 27, "name": "strlen", "signature": "int strlen();"}, {"kind": "function", "line": 28, "name": "fopen", "signature": "void *fopen();"}, {"kind": "function", "line": 29, "name": "fclose", "signature": "int fclose();"}, {"kind": "function", "line": 30, "name": "fread", "signature": "int fread();"}, {"kind": "function", "line": 31, "name": "fwrite", "signature": "int fwrite();"}, {"kind": "function", "line": 32, "name": "fseek", "signature": "int fseek();"}, {"kind": "function", "line": 33, "name": "ftell", "signature": "int ftell();"}, {"kind": "function", "line": 34, "name": "rewind", "signature": "void rewind();"}, {"kind": "function", "line": 35, "name": "malloc", "signature": "void *malloc();"}, {"kind": "function", "line": 36, "name": "free", "signature": "void free();"}, {"kind": "function", "line": 320, "name": "printf", "signature": "printf(\"%s: %s: key must be %d hex digits\\n\", aes_tool_name(decode), keyhex, HEX_KEY_LEN);"}, {"kind": "macro", "line": 37, "name": "AES_MAGIC0", "signature": "#define AES_MAGIC0"}, {"kind": "macro", "line": 39, "name": "AES_MAGIC1", "signature": "#define AES_MAGIC1"}, {"kind": "macro", "line": 40, "name": "AES_MAGIC2", "signature": "#define AES_MAGIC2"}, {"kind": "macro", "line": 41, "name": "AES_MAGIC3", "signature": "#define AES_MAGIC3"}, {"kind": "macro", "line": 42, "name": "AES_HDR_SIZE", "signature": "#define AES_HDR_SIZE"}, {"kind": "macro", "line": 43, "name": "AES_BLOCK", "signature": "#define AES_BLOCK"}, {"kind": "macro", "line": 45, "name": "AES_KEY_BYTES", "signature": "#define AES_KEY_BYTES"}, {"kind": "macro", "line": 46, "name": "AES_NONCE_BYTES", "signature": "#define AES_NONCE_BYTES"}, {"kind": "macro", "line": 47, "name": "AES_ROUNDS", "signature": "#define AES_ROUNDS"}, {"kind": "macro", "line": 48, "name": "AES_RK_LEN", "signature": "#define AES_RK_LEN"}, {"kind": "macro", "line": 49, "name": "AES_SBOX_SIZE", "signature": "#define AES_SBOX_SIZE"}, {"kind": "macro", "line": 50, "name": "AES_RCON_SIZE", "signature": "#define AES_RCON_SIZE"}, {"kind": "macro", "line": 51, "name": "AES_POLY", "signature": "#define AES_POLY"}, {"kind": "macro", "line": 53, "name": "AES_AFFINE_C", "signature": "#define AES_AFFINE_C"}, {"kind": "macro", "line": 54, "name": "AES_RCON_PAD", "signature": "#define AES_RCON_PAD"}, {"kind": "macro", "line": 55, "name": "HEX_KEY_LEN", "signature": "#define HEX_KEY_LEN"}, {"kind": "macro", "line": 57, "name": "HEX_NONCE_LEN", "signature": "#define HEX_NONCE_LEN"}, {"kind": "macro", "line": 58, "name": "AES_SEEK_END", "signature": "#define AES_SEEK_END"}, {"kind": "macro", "line": 60, "name": "AES_EXIT_FAIL", "signature": "#define AES_EXIT_FAIL"}]}, {"doc": "include \"minios_abi.h\"", "id": "progs/src/audio.c", "kind": "module", "label": "audio.c", "language": "c", "sha256": "a18a0b72dda9a982", "symbol_count": 18, "symbols": [{"doc": "include \"minios_abi.h\"", "kind": "function", "line": 2, "name": "syscall1", "signature": "static long syscall1(long n, long a1)"}, {"kind": "function", "line": 8, "name": "syscall2", "signature": "static long syscall2(long n, long a1, long a2)"}, {"kind": "function", "line": 14, "name": "syscall3", "signature": "static long syscall3(long n, long a1, long a2, long a3)"}, {"kind": "function", "line": 20, "name": "syscall0", "signature": "static long syscall0(long n)"}, {"kind": "function", "line": 26, "name": "audio_init", "signature": "int audio_init(void)"}, {"kind": "function", "line": 30, "name": "audio_tone", "signature": "void audio_tone(unsigned freq)"}, {"kind": "function", "line": 34, "name": "audio_pcm_open", "signature": "int audio_pcm_open(unsigned rate, unsigned channels, unsigned format)"}, {"kind": "function", "line": 39, "name": "audio_pcm_submit", "signature": "int audio_pcm_submit(const void *buf, unsigned len)"}, {"kind": "function", "line": 43, "name": "audio_pcm_pump", "signature": "void audio_pcm_pump(void)"}, {"kind": "function", "line": 47, "name": "audio_pcm_close", "signature": "void audio_pcm_close(void)"}, {"kind": "function", "line": 51, "name": "audio_set_volume", "signature": "void audio_set_volume(unsigned volume)"}, {"kind": "function", "line": 55, "name": "audio_get_volume", "signature": "unsigned audio_get_volume(void)"}, {"kind": "function", "line": 59, "name": "audio_sb16_present", "signature": "int audio_sb16_present(void)"}, {"kind": "function", "line": 63, "name": "audio_stream_open", "signature": "int audio_stream_open(void)"}, {"kind": "function", "line": 67, "name": "audio_stream_close", "signature": "void audio_stream_close(int id)"}, {"kind": "function", "line": 71, "name": "audio_stream_submit", "signature": "int audio_stream_submit(int id, const void *buf, unsigned len)"}, {"kind": "function", "line": 75, "name": "audio_stream_volume", "signature": "void audio_stream_volume(int id, unsigned char vol)"}, {"kind": "function", "line": 5, "name": "volatile", "signature": "__asm__ volatile(\"syscall\" : \"=a\"(r) : \"a\"(n), \"D\"(a1) : \"rcx\",\"r11\",\"memory\");"}]}, {"id": "progs/src/cp.c", "kind": "module", "label": "cp.c", "language": "c", "sha256": "dddcfed6d7d110f8", "symbol_count": 8, "symbols": [{"doc": "define CP_BUF_SIZE 4096 define CP_EXIT_FAIL 1", "kind": "function", "line": 9, "name": "main", "signature": "int main(int argc, char **argv)"}, {"kind": "function", "line": 1, "name": "printf", "signature": "int printf();"}, {"kind": "function", "line": 2, "name": "fopen", "signature": "void *fopen();"}, {"kind": "function", "line": 3, "name": "fclose", "signature": "int fclose();"}, {"kind": "function", "line": 4, "name": "fread", "signature": "int fread();"}, {"kind": "function", "line": 5, "name": "fwrite", "signature": "int fwrite();"}, {"kind": "macro", "line": 6, "name": "CP_BUF_SIZE", "signature": "#define CP_BUF_SIZE"}, {"kind": "macro", "line": 8, "name": "CP_EXIT_FAIL", "signature": "#define CP_EXIT_FAIL"}]}, {"doc": "Ring-3 privilege probe. Reads the CS selector at runtime and exits with", "id": "progs/src/cpl.c", "kind": "module", "label": "cpl.c", "language": "c", "sha256": "a6062eb62e725e6a", "symbol_count": 4, "symbols": [{"doc": "Ring-3 privilege probe. Reads the CS selector at runtime and exits with the CPL it is executing at. Under the isolation contract a Linux ELF runs at ring 3, so CS is the user code selector (0x23) and the exit code is 3; a regression to ring-0 execution would report 0. Built as a * static Linux ELF like lxhello.elf and run through the syscall ABI.", "kind": "function", "line": 6, "name": "read_cpl", "signature": "static long read_cpl(void)"}, {"kind": "function", "line": 11, "name": "exit_now", "signature": "static void exit_now(long code)"}, {"kind": "function", "line": 15, "name": "_start", "signature": "void _start(void)"}, {"kind": "function", "line": 8, "name": "volatile", "signature": "__asm__ volatile(\"mov %%cs, %0\" : \"=r\"(cs));"}]}, {"id": "progs/src/fib.c", "kind": "module", "label": "fib.c", "language": "c", "sha256": "208268e3c5570576", "symbol_count": 2, "symbols": [{"kind": "function", "line": 1, "name": "fib", "signature": "int fib(int n)"}, {"kind": "function", "line": 5, "name": "main", "signature": "int main(void)"}]}, {"doc": "fptest.c -- FPU/SSE context-switch probe (Phase 0.1, ADR-0014).", "id": "progs/src/fptest.c", "kind": "module", "label": "fptest.c", "language": "c", "sha256": "a18a47533a0d6c16", "symbol_count": 14, "symbols": [{"kind": "struct", "line": 56, "name": "fp_slot_t"}, {"kind": "function", "line": 41, "name": "read_mxcsr", "signature": "static unsigned int read_mxcsr(void)"}, {"kind": "function", "line": 47, "name": "raw_gettid", "signature": "static long raw_gettid(void)"}, {"kind": "function", "line": 51, "name": "raw_getrandom", "signature": "static long raw_getrandom(void *buf, unsigned long n)"}, {"doc": "Stack-alignment canary: an aligned SSE store to a stack slot faults with #GP unless the thread entry stack satisfies SysV (rsp%16==8 at entry, 16-aligned after the call prologue). Compiler spills would only sometimes touch the misaligned area; this faults deterministically. A fault kills the worker with -14, which the join * reports instead of a silent wrong answer.", "kind": "function", "line": 78, "name": "stack_align_canary", "signature": "static void stack_align_canary(void)"}, {"kind": "function", "line": 83, "name": "worker", "signature": "static void *worker(void *p)"}, {"kind": "function", "line": 147, "name": "main", "signature": "int main(void)"}, {"kind": "function", "line": 20, "name": "gettid", "signature": "* * The same run smokes gettid (Phase 0.4: the two workers must observe * distinct tids, never the constant 1) and getrandom (Phase 0.5: it * must fill the buffer and report the count, never EFAULT). "}, {"kind": "function", "line": 44, "name": "volatile", "signature": "__asm__ volatile(\"stmxcsr %0\" : \"=m\"(v));"}, {"kind": "function", "line": 49, "name": "m_syscall6", "signature": "return m_syscall6(MINIOS_SYS_GETTID, 0, 0, 0);"}, {"kind": "function", "line": 118, "name": "myield", "signature": "myield();"}, {"kind": "function", "line": 143, "name": "__sync_fetch_and_add", "signature": "__sync_fetch_and_add(&worker_tails, 1);"}, {"kind": "function", "line": 165, "name": "printf", "signature": "printf(\"fptest: FAIL (getrandom=%ld)\\n\", rn);"}, {"kind": "macro", "line": 37, "name": "FP_ITERS", "signature": "#define FP_ITERS"}]}, {"doc": "freedom - a headless text browser for MiniOS.", "id": "progs/src/freedom.c", "kind": "module", "label": "freedom.c", "language": "c", "sha256": "e464101815df3016", "symbol_count": 62, "symbols": [{"doc": "Session-aware close (frees the TLS session for fd, no-op when none): every fetch path must use this, never raw close(), or the next fetch reuses the recycled fd number onto a live slot and its handshake fails with \"session already exists\" (redirects and linked stylesheets * hit this on their second fetch). void tls_close(int fd); #else int socket(int domain, int type, int proto); int connect(int fd, void *addr, int addrlen); int sendto(int fd, char *buf, int len, int flags, void *to, int tolen); int recvfrom(int fd, char *buf, int len, int flags, void *from, int *fromlen); int close(int fd); /* miniGCC twin: no TLS engine linked, so no session can exist.", "kind": "function", "line": 58, "name": "tls_close", "signature": "static int tls_close(int fd)"}, {"doc": "static char f_dom[FREEDOM_DOM_BUF]; static int f_domlen; static char f_css[FREEDOM_CSS_BUF]; static int f_csslen; static char f_linkhost[FREEDOM_CSS_MAX][64]; static char f_linkpath[FREEDOM_CSS_MAX][128]; static int f_linkn; static int f_cstage; static int f_csize; static int f_crem; static int f_bdone; /* Decimal string to int (the ld stub set has no atol).", "kind": "function", "line": 151, "name": "atoi", "signature": "static int atoi(char *s)"}, {"doc": "Append src to dst at pos; returns the new length or -1 when it does not fit. A negative pos (a previous append in the chain failed) stays -1 without touching dst, so chained callers like classify_tag cannot * walk to dst-1.", "kind": "function", "line": 166, "name": "append", "signature": "static int append(char *dst, int pos, char *src, int cap)"}, {"kind": "function", "line": 175, "name": "ci_lower", "signature": "static int ci_lower(int c)"}, {"doc": "if (pos < 0) return -1; n = strlen(src); if (pos + n >= cap) return -1; memcpy(dst + pos, src, n); dst[pos + n] = 0; return pos + n; } static int ci_lower(int c) { if (c >= 'A' && c <= 'Z') return c + ('a' - 'A'); return c; } /* Case-insensitive starts-with.", "kind": "function", "line": 182, "name": "ci_starts", "signature": "static int ci_starts(char *s, char *pre)"}, {"doc": "} /* Case-insensitive starts-with. static int ci_starts(char *s, char *pre) { while (*pre) { if (!*s) return 0; if (ci_lower(*s) != ci_lower(*pre)) return 0; s++; pre++; } return 1; } /* Case-insensitive equality.", "kind": "function", "line": 193, "name": "ci_eq", "signature": "static int ci_eq(char *a, char *b)"}, {"doc": "return 1; } /* Case-insensitive equality. static int ci_eq(char *a, char *b) { while (*a && *b) { if (ci_lower(*a) != ci_lower(*b)) return 0; a++; b++; } return *a == 0 && *b == 0; } /* Case-insensitive index of needle in haystack, or -1.", "kind": "function", "line": 203, "name": "ci_index", "signature": "static int ci_index(char *s, char *needle)"}, {"doc": "} return *a == 0 && *b == 0; } /* Case-insensitive index of needle in haystack, or -1. static int ci_index(char *s, char *needle) { int i; for (i = 0; s[i]; i++) { if (ci_starts(s + i, needle)) return i; } return -1; } /* Does the input look like an URL (no spaces, contains a dot)?", "kind": "function", "line": 212, "name": "looks_like_url", "signature": "static int looks_like_url(char *s)"}, {"doc": "Does s begin with \":\" per RFC 3986 (ALPHA *(ALPHA/DIGIT/+/-/.) \":\")? Any such prefix makes the string a scheme, * and the omnibox policy is: only http:// and https:// are executed.", "kind": "function", "line": 226, "name": "has_scheme", "signature": "static int has_scheme(char *s)"}, {"doc": "char c; c = s[0]; if (!((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z'))) return 0; for (i = 1; s[i]; i++) { c = s[i]; if (c == ':') return 1; if (!((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z') || (c >= '0' && c <= '9') || c == '+' || c == '-' || c == '.')) return 0; } return 0; } /* Encode a query for the DuckDuckGo HTML endpoint (no-JS).", "kind": "function", "line": 242, "name": "make_search", "signature": "static void make_search(char *out, char *query, int cap)"}, {"doc": "Split an http:// or https:// URL into f_host, f_path, f_port and f_secure. Returns 0 on failure. The input buffer is never modified: the parse is index-only, so it stays valid when the compiler widens * dereferenced stores.", "kind": "function", "line": 266, "name": "split_url", "signature": "static int split_url(char *url)"}, {"doc": "Recompute f_host/f_path/f_port/f_secure from the last Location value. Returns 1 when the chase may continue, 0 when it must stop * (diagnostic already printed).", "kind": "function", "line": 313, "name": "resolve_redirect", "signature": "static int resolve_redirect(void)"}, {"doc": "if (l + 1 >= 128) return 0; f_path[0] = '/'; memcpy(f_path + 1, loc, l); f_path[l + 1] = 0; } else { if (last + 1 + l >= 128) return 0; memcpy(f_path + last + 1, loc, l); f_path[last + 1 + l] = 0; } } return 1; } /* --- HTML filter --------------------------------------------------", "kind": "function", "line": 365, "name": "put_ws", "signature": "static void put_ws(void)"}, {"doc": "Print one text byte through the UTF-8 gate. Remote pages are hostile data: bytes outside a valid UTF-8 sequence (overlong, surrogate, out of range) are replaced with '?' (FreeDom policy). * Sequence state is kept in f_utbuf/f_utlen/f_utrem.", "kind": "function", "line": 377, "name": "put_utf", "signature": "static void put_utf(int c)"}, {"doc": "Print one text byte: whitespace collapses, everything else goes * through the UTF-8 gate. Dump modes suppress the page text.", "kind": "function", "line": 427, "name": "put_text", "signature": "static void put_text(int c)"}, {"doc": "} else if (v >= 2048 && v < 65536) { put_text(224 | (v >> 12)); put_text(128 | ((v >> 6) & 63)); put_text(128 | (v & 63)); } } else { int k; put_text('&'); for (k = 0; e[k]; k++) put_text(e[k]); put_text(';'); } } /* --- dump capture helpers ------------------------------------------", "kind": "function", "line": 482, "name": "css_append", "signature": "static void css_append(char *s, int n)"}, {"kind": "function", "line": 488, "name": "css_line", "signature": "static void css_line(char *s)"}, {"kind": "function", "line": 493, "name": "dom_append", "signature": "static void dom_append(char *s, int n)"}, {"kind": "function", "line": 499, "name": "dom_space", "signature": "static void dom_space(void)"}, {"kind": "function", "line": 503, "name": "dom_nl", "signature": "static void dom_nl(void)"}, {"doc": "int i; for (i = 0; i < n && f_domlen < FREEDOM_DOM_BUF - 1; i++) f_dom[f_domlen++] = s[i]; } static void dom_space(void) { if (f_domlen < FREEDOM_DOM_BUF - 1) f_dom[f_domlen++] = ' '; } static void dom_nl(void) { if (f_domlen < FREEDOM_DOM_BUF - 1) f_dom[f_domlen++] = '\\n'; } /* Record the finished attribute in its place.", "kind": "function", "line": 509, "name": "record_attr", "signature": "static void record_attr(void)"}, {"doc": "f_hreflen = f_vallen < 127 ? f_vallen : 127; memcpy(f_href, f_val, f_hreflen); f_href[f_hreflen] = 0; } else if (ci_eq(f_attr, \"style\")) { f_stylelen = f_vallen < (FREEDOM_ATTR_MAX - 1) ? f_vallen : (FREEDOM_ATTR_MAX - 1); memcpy(f_styleattr, f_val, f_stylelen); f_styleattr[f_stylelen] = 0; } else if (ci_eq(f_attr, \"rel\")) { f_rel_ss = ci_index(f_val, \"stylesheet\") >= 0; } } /* Is tagname a void element (no closing tag, no children)?", "kind": "function", "line": 534, "name": "is_void_tag", "signature": "static int is_void_tag(void)"}, {"doc": "A tag was fully collected into f_tagn (+ attributes). Decide what it * does to the stream and the dumps.", "kind": "function", "line": 546, "name": "classify_tag", "signature": "static void classify_tag(void)"}, {"doc": "} dom_nl(); if (!is_void_tag()) f_depth++; } if (ci_eq(f_tagn, \"br\") || ci_eq(f_tagn, \"p\") || ci_eq(f_tagn, \"div\") || ci_eq(f_tagn, \"h1\") || ci_eq(f_tagn, \"h2\") || ci_eq(f_tagn, \"h3\") || ci_eq(f_tagn, \"h4\") || ci_eq(f_tagn, \"h5\") || ci_eq(f_tagn, \"h6\") || ci_eq(f_tagn, \"li\") || ci_eq(f_tagn, \"tr\")) { if (f_mode == 0) putchar('\\n'); f_ws = 1; } } /* Feed one body byte into the filter.", "kind": "function", "line": 631, "name": "body_byte", "signature": "static void body_byte(int c)"}, {"doc": "f_rel_ss = 0; return; } if (c == '&') { f_entlen = 1; f_ent[0] = 0; return; } put_text(c); } /* --- HTTP ---------------------------------------------------------- /* Classify one header line (NUL-terminated).", "kind": "function", "line": 796, "name": "head_line", "signature": "static void head_line(char *line)"}, {"doc": "Parse the collected header block f_hdr[0..f_hlen-1] (the last four * bytes are the terminating CRLF CRLF).", "kind": "function", "line": 821, "name": "parse_head", "signature": "static void parse_head(void)"}, {"doc": "f_hdr[lend] = 0; if (i == 0) { char *sp; sp = strchr(f_hdr, ' '); if (sp) f_status = atoi(sp + 1); } else if (lend > i) { head_line(f_hdr + i); } f_hdr[lend] = '\\r'; i = lend + 2; } } /* Receive body bytes: TLS for f_secure, plain TCP otherwise.", "kind": "function", "line": 843, "name": "recv_body", "signature": "static int recv_body(int fd, char *buf, int len)"}, {"doc": "head_line(f_hdr + i); } f_hdr[lend] = '\\r'; i = lend + 2; } } /* Receive body bytes: TLS for f_secure, plain TCP otherwise. static int recv_body(int fd, char *buf, int len) { if (f_secure) return tls_recv(fd, buf, len); return recvfrom(fd, buf, len, 0, 0, 0); } /* Send the whole request: TLS for f_secure, plain TCP otherwise.", "kind": "function", "line": 849, "name": "send_all", "signature": "static int send_all(int fd, char *buf, int len)"}, {"doc": "Send one HTTP request and process the response body. Returns the status code, or 0 on transport failure. Sets f_redir when a * Location header was seen.", "kind": "function", "line": 860, "name": "fetch", "signature": "static int fetch(char *host, char *path, int port)"}, {"doc": "Fetch a linked stylesheet and print its raw body (through the UTF-8 * gate). No redirect chasing: the bound is one request.", "kind": "function", "line": 1031, "name": "fetch_css", "signature": "static void fetch_css(char *host, char *path)"}, {"doc": "} continue; } f_ws = 0; put_utf(c); got++; } } tls_close(fd); putchar('\\n'); printf(\"freedom: %s (%d bytes)\\n\", host, got); } /* Print the collected CSS dump.", "kind": "function", "line": 1113, "name": "print_css_dump", "signature": "static void print_css_dump(void)"}, {"doc": "putchar('\\n'); printf(\"freedom: %s (%d bytes)\\n\", host, got); } /* Print the collected CSS dump. static void print_css_dump(void) { int i; puts(\"=== freedom css ===\"); for (i = 0; i < f_csslen; i++) put_utf(f_css[i]); if (f_csslen == 0) puts(\"(no css)\"); if (f_linkn > 0) putchar('\\n'); } /* Print the collected DOM outline.", "kind": "function", "line": 1122, "name": "print_dom_dump", "signature": "static void print_dom_dump(void)"}, {"kind": "function", "line": 1128, "name": "main", "signature": "int main(int argc, char **argv)"}, {"kind": "function", "line": 4, "name": "curlfree", "signature": "* spirit of curlfree (http.c + htmlfilter.c): a bounded header phase, * Content-Length or EOF body reading, Transfer-Encoding: chunked * decoding, redirect chasing with a hop bound, and a filter that "}, {"doc": "Ring-3 TLS build (phase 2 of docs/TLS_MIGRATION.md): host libc for sockets/stdio/strings (identical ABI numbers inside the guest); net_dns_resolve and tls_* link from the shared ring-3 TLS objects (progs/tls_u) instead of trapping kernel syscalls 200-203. stdlib.h * is deliberately absent: this file defines its own static atoi. include include include include ", "kind": "function", "line": 41, "name": "net_dns_resolve", "signature": "int net_dns_resolve(const char *host);"}, {"kind": "function", "line": 42, "name": "tls_handshake", "signature": "int tls_handshake(int fd, char *host);"}, {"kind": "function", "line": 43, "name": "tls_send", "signature": "int tls_send(int fd, char *buf, int len);"}, {"kind": "function", "line": 44, "name": "tls_recv", "signature": "int tls_recv(int fd, char *buf, int len);"}, {"doc": "else", "kind": "function", "line": 52, "name": "socket", "signature": "int socket(int domain, int type, int proto);"}, {"kind": "function", "line": 53, "name": "connect", "signature": "int connect(int fd, void *addr, int addrlen);"}, {"kind": "function", "line": 54, "name": "sendto", "signature": "int sendto(int fd, char *buf, int len, int flags, void *to, int tolen);"}, {"kind": "function", "line": 55, "name": "recvfrom", "signature": "int recvfrom(int fd, char *buf, int len, int flags, void *from, int *fromlen);"}, {"kind": "function", "line": 56, "name": "close", "signature": "int close(int fd);"}, {"kind": "function", "line": 63, "name": "printf", "signature": "int printf(char *fmt, ...);"}, {"kind": "function", "line": 64, "name": "puts", "signature": "int puts(char *s);"}, {"kind": "function", "line": 65, "name": "strlen", "signature": "int strlen(char *s);"}, {"kind": "function", "line": 66, "name": "strchr", "signature": "char *strchr(char *s, int c);"}, {"kind": "function", "line": 67, "name": "strcmp", "signature": "int strcmp(char *a, char *b);"}, {"kind": "function", "line": 68, "name": "strncmp", "signature": "int strncmp(char *a, char *b, int n);"}, {"kind": "function", "line": 69, "name": "memcpy", "signature": "int memcpy(char *dst, char *src, int n);"}, {"kind": "function", "line": 70, "name": "memset", "signature": "int memset(char *dst, int c, int n);"}, {"kind": "function", "line": 71, "name": "putchar", "signature": "int putchar(int c);"}, {"kind": "function", "line": 757, "name": "put_entity", "signature": "put_entity(f_ent);"}, {"kind": "macro", "line": 73, "name": "FREEDOM_HOPS_MAX", "signature": "#define FREEDOM_HOPS_MAX"}, {"kind": "macro", "line": 75, "name": "FREEDOM_HDR_MAX", "signature": "#define FREEDOM_HDR_MAX"}, {"kind": "macro", "line": 76, "name": "FREEDOM_BUF", "signature": "#define FREEDOM_BUF"}, {"kind": "macro", "line": 77, "name": "FREEDOM_CHUNK_MAX", "signature": "#define FREEDOM_CHUNK_MAX"}, {"kind": "macro", "line": 78, "name": "FREEDOM_CSS_MAX", "signature": "#define FREEDOM_CSS_MAX"}, {"kind": "macro", "line": 79, "name": "FREEDOM_CSS_BUF", "signature": "#define FREEDOM_CSS_BUF"}, {"kind": "macro", "line": 80, "name": "FREEDOM_DOM_BUF", "signature": "#define FREEDOM_DOM_BUF"}, {"kind": "macro", "line": 81, "name": "FREEDOM_ATTR_MAX", "signature": "#define FREEDOM_ATTR_MAX"}, {"kind": "macro", "line": 82, "name": "FREEDOM_LINE_MAX", "signature": "#define FREEDOM_LINE_MAX"}]}, {"doc": "Exercises the kernel libc surface used by loaded .o programs: fprintf to stdout/stderr, snprintf into a buffer, and exit().", "id": "progs/src/ftest.c", "kind": "module", "label": "ftest.c", "language": "c", "sha256": "9ed55e54b002f180", "symbol_count": 7, "symbols": [{"kind": "function", "line": 9, "name": "main", "signature": "int main(int argc, char **argv)"}, {"doc": "Exercises the kernel libc surface used by loaded .o programs: * fprintf to stdout/stderr, snprintf into a buffer, and exit().", "kind": "function", "line": 3, "name": "fprintf", "signature": "extern int fprintf(void *stream, const char *fmt, ...);"}, {"kind": "function", "line": 4, "name": "snprintf", "signature": "extern int snprintf(char *buf, unsigned long size, const char *fmt, ...);"}, {"kind": "function", "line": 5, "name": "printf", "signature": "extern int printf(const char *fmt, ...);"}, {"kind": "function", "line": 6, "name": "exit", "signature": "extern void exit(int code);"}, {"kind": "variable", "line": 7, "name": "stdout", "signature": "extern void *stdout;"}, {"kind": "variable", "line": 8, "name": "stderr", "signature": "extern void *stderr;"}]}, {"doc": "MiniOS test program — compiled as relocatable .o, loaded by kernel ELF loader", "id": "progs/src/hello.c", "kind": "module", "label": "hello.c", "language": "c", "sha256": "105f4ee38606da7b", "symbol_count": 2, "symbols": [{"kind": "function", "line": 3, "name": "main", "signature": "int main(int argc, char **argv)"}, {"doc": "/* MiniOS test program — compiled as relocatable .o, loaded by kernel ELF loader", "kind": "function", "line": 2, "name": "printf", "signature": "extern int printf(const char *fmt, ...);"}]}, {"id": "progs/src/hello.py", "kind": "module", "label": "hello.py", "language": "py", "sha256": "72135c0623db3173", "symbol_count": 0, "symbols": []}, {"doc": "Minimal HTTP/1.0 GET through the Linux socket syscalls.", "id": "progs/src/http.c", "kind": "module", "label": "http.c", "language": "c", "sha256": "ce7535f5999ffd4e", "symbol_count": 13, "symbols": [{"doc": "int socket(int domain, int type, int proto); int connect(int fd, void *addr, int addrlen); int sendto(int fd, char *buf, int len, int flags, void *to, int tolen); int recvfrom(int fd, char *buf, int len, int flags, void *from, int *fromlen); int shutdown(int fd, int how); int close(int fd); int net_dns_resolve(const char *host); int puts(char *s); int printf(char *fmt, ...); int strlen(char *s); int putchar(int c); /* Decimal string to int (the ld stub set has no atol).", "kind": "function", "line": 18, "name": "atoi", "signature": "int atoi(char *s)"}, {"kind": "function", "line": 28, "name": "main", "signature": "int main(int argc, char **argv)"}, {"kind": "function", "line": 3, "name": "kernel", "signature": "* Hostnames are resolved by the kernel (net_dns_resolve syscall). */ int socket(int domain, int type, int proto);"}, {"kind": "function", "line": 6, "name": "connect", "signature": "int connect(int fd, void *addr, int addrlen);"}, {"kind": "function", "line": 7, "name": "sendto", "signature": "int sendto(int fd, char *buf, int len, int flags, void *to, int tolen);"}, {"kind": "function", "line": 8, "name": "recvfrom", "signature": "int recvfrom(int fd, char *buf, int len, int flags, void *from, int *fromlen);"}, {"kind": "function", "line": 9, "name": "shutdown", "signature": "int shutdown(int fd, int how);"}, {"kind": "function", "line": 10, "name": "close", "signature": "int close(int fd);"}, {"kind": "function", "line": 11, "name": "net_dns_resolve", "signature": "int net_dns_resolve(const char *host);"}, {"kind": "function", "line": 12, "name": "puts", "signature": "int puts(char *s);"}, {"kind": "function", "line": 13, "name": "printf", "signature": "int printf(char *fmt, ...);"}, {"kind": "function", "line": 14, "name": "strlen", "signature": "int strlen(char *s);"}, {"kind": "function", "line": 15, "name": "putchar", "signature": "int putchar(int c);"}]}, {"doc": "json.c - command path JSON tool: validate, pretty-print and query.", "id": "progs/src/json.c", "kind": "module", "label": "json.c", "language": "c", "sha256": "e9444179764731e8", "symbol_count": 41, "symbols": [{"kind": "function", "line": 57, "name": "js_read_all", "signature": "static char *js_read_all(const char *name, int *len)"}, {"kind": "function", "line": 75, "name": "js_new", "signature": "static int js_new(void)"}, {"kind": "function", "line": 80, "name": "js_skip_ws", "signature": "static void js_skip_ws(void)"}, {"kind": "function", "line": 88, "name": "js_peek", "signature": "static int js_peek(void)"}, {"kind": "function", "line": 96, "name": "js_parse_string", "signature": "static int js_parse_string(void)"}, {"kind": "function", "line": 132, "name": "js_parse_number", "signature": "static int js_parse_number(void)"}, {"kind": "function", "line": 142, "name": "js_key_match", "signature": "static int js_key_match(int child, const char *key)"}, {"kind": "function", "line": 146, "name": "js_parse_object", "signature": "static int js_parse_object(void)"}, {"kind": "function", "line": 181, "name": "js_parse_array", "signature": "static int js_parse_array(void)"}, {"kind": "function", "line": 210, "name": "js_parse_value", "signature": "static int js_parse_value(void)"}, {"doc": "neg = 0; if (c == '-') { neg = 1; js_pos++; } node = js_new(); if (node < 0) return -1; js_type[node] = JS_NUM; js_num[node] = js_parse_number(); if (neg) js_num[node] = 0 - js_num[node]; return node; } js_err = 1; return -1; } /* ---- Output ----", "kind": "function", "line": 280, "name": "js_indent", "signature": "static void js_indent(int n)"}, {"kind": "function", "line": 285, "name": "js_print_str", "signature": "static void js_print_str(const char *s)"}, {"kind": "function", "line": 302, "name": "js_print_value", "signature": "static void js_print_value(int node, int depth)"}, {"doc": "i = 0; while (c >= 0) { js_indent(depth + 1); js_print_value(c, depth + 1); if (i < js_count[node] - 1) putchar(','); putchar('\\n'); i++; c = js_next[c]; } js_indent(depth); putchar(']'); } /* ---- Query (dotted path) ----", "kind": "function", "line": 346, "name": "js_find_member", "signature": "static int js_find_member(int obj, const char *key)"}, {"kind": "function", "line": 356, "name": "js_array_at", "signature": "static int js_array_at(int arr, int idx)"}, {"kind": "function", "line": 368, "name": "js_query", "signature": "static int js_query(int root, const char *path)"}, {"kind": "function", "line": 400, "name": "main", "signature": "int main(int argc, char **argv)"}, {"kind": "function", "line": 5, "name": "js_str", "signature": "* members keep their key in js_str (the member value node) and their value * in the node itself, and object members / array elements are chained with * js_next. * * Usage: json validate and pre"}, {"kind": "function", "line": 14, "name": "free", "signature": "void free();"}, {"kind": "function", "line": 15, "name": "printf", "signature": "int printf();"}, {"kind": "function", "line": 16, "name": "putchar", "signature": "int putchar();"}, {"kind": "function", "line": 17, "name": "puts", "signature": "int puts();"}, {"kind": "function", "line": 18, "name": "strlen", "signature": "int strlen();"}, {"kind": "function", "line": 19, "name": "strcmp", "signature": "int strcmp();"}, {"kind": "function", "line": 20, "name": "fopen", "signature": "void *fopen();"}, {"kind": "function", "line": 21, "name": "fclose", "signature": "int fclose();"}, {"kind": "function", "line": 22, "name": "fread", "signature": "int fread();"}, {"kind": "function", "line": 23, "name": "fseek", "signature": "int fseek();"}, {"kind": "function", "line": 24, "name": "ftell", "signature": "int ftell();"}, {"kind": "function", "line": 25, "name": "rewind", "signature": "void rewind();"}, {"kind": "macro", "line": 26, "name": "JS_MAX_NODES", "signature": "#define JS_MAX_NODES"}, {"kind": "macro", "line": 28, "name": "JS_POOL", "signature": "#define JS_POOL"}, {"kind": "macro", "line": 29, "name": "JS_NULL", "signature": "#define JS_NULL"}, {"kind": "macro", "line": 31, "name": "JS_BOOL", "signature": "#define JS_BOOL"}, {"kind": "macro", "line": 32, "name": "JS_NUM", "signature": "#define JS_NUM"}, {"kind": "macro", "line": 33, "name": "JS_STR", "signature": "#define JS_STR"}, {"kind": "macro", "line": 34, "name": "JS_OBJ", "signature": "#define JS_OBJ"}, {"kind": "macro", "line": 35, "name": "JS_ARR", "signature": "#define JS_ARR"}, {"kind": "macro", "line": 36, "name": "JS_SEEK_END", "signature": "#define JS_SEEK_END"}, {"kind": "macro", "line": 38, "name": "JS_EXIT_OK", "signature": "#define JS_EXIT_OK"}, {"kind": "macro", "line": 39, "name": "JS_EXIT_FAIL", "signature": "#define JS_EXIT_FAIL"}]}, {"doc": "Kernel-pointer rejection probe. Passes a supervisor-only address", "id": "progs/src/kmem.c", "kind": "module", "label": "kmem.c", "language": "c", "sha256": "b87f46ae71774ce8", "symbol_count": 4, "symbols": [{"doc": "Kernel-pointer rejection probe. Passes a supervisor-only address (0x0C100000, inside the kernel heap at 0x0C000000) to write(2). The hardened syscall boundary must reject it with -EFAULT; the program exits 0 when the write was refused and 1 when the kernel wrongly dereferenced a kernel pointer on its behalf. Built as a static Linux * ELF like lxhello.elf.", "kind": "function", "line": 7, "name": "syscall3", "signature": "static long syscall3(long n, long a1, long a2, long a3)"}, {"kind": "function", "line": 13, "name": "exit_now", "signature": "static void exit_now(long code)"}, {"kind": "function", "line": 17, "name": "_start", "signature": "void _start(void)"}, {"kind": "function", "line": 9, "name": "volatile", "signature": "__asm__ volatile(\"syscall\" : \"=a\"(r) : \"a\"(n), \"D\"(a1), \"S\"(a2), \"d\"(a3) : \"rcx\", \"r11\", \"memory\");"}]}, {"id": "progs/src/ldhello.c", "kind": "module", "label": "ldhello.c", "language": "c", "sha256": "e91d56eec84e6fa5", "symbol_count": 1, "symbols": [{"kind": "function", "line": 1, "name": "main", "signature": "int main(void)"}]}, {"id": "progs/src/lxhello.c", "kind": "module", "label": "lxhello.c", "language": "c", "sha256": "864c186f99bc72fc", "symbol_count": 9, "symbols": [{"doc": "lxhello — a genuine Linux x86-64 ELF executable. Built with `gcc -static -no-pie -nostdlib` so it links as ET_EXEC at 0x400000 with a hand-written _start. It never uses libc: it reads argc/argv straight off the SysV initial stack and talks to the kernel exclusively through the `syscall` instruction. If MiniOS runs this and prints the message, its ELF loader + Linux syscall ABI are working.", "kind": "function", "line": 10, "name": "lx_syscall3", "signature": "static long lx_syscall3(long n, long a1, long a2, long a3)"}, {"doc": "define SYS_write 1 define SYS_exit 60", "kind": "function", "line": 22, "name": "lx_strlen", "signature": "static unsigned long lx_strlen(const char *s)"}, {"kind": "function", "line": 28, "name": "lx_write", "signature": "static void lx_write(const char *s)"}, {"kind": "function", "line": 32, "name": "lx_write_int", "signature": "static void lx_write_int(long v)"}, {"doc": "static void lx_write_int(long v) { char buf[24]; int i = (int)sizeof(buf); int neg = 0; buf[--i] = 0; if (v < 0) { neg = 1; v = -v; } if (v == 0) buf[--i] = '0'; while (v > 0 && i > 0) { buf[--i] = (char)('0' + v % 10); v /= 10; } if (neg && i > 0) buf[--i] = '-'; lx_write(&buf[i]); } /* Entry called by _start with the real argc/argv pulled off the stack.", "kind": "function", "line": 46, "name": "lmain", "signature": "int lmain(long argc, char **argv)"}, {"kind": "function", "line": 13, "name": "volatile", "signature": "__asm__ volatile(\"syscall\" : \"=a\"(ret) : \"a\"(n), \"D\"(a1), \"S\"(a2), \"d\"(a3) : \"rcx\", \"r11\", \"memory\");"}, {"kind": "function", "line": 61, "name": "__asm__", "signature": "__asm__( \".global _start\\n\" \"_start:\\n\" \" movq (%rsp), %rdi\\n\" /* argc */ \" leaq 8(%rsp), %rsi\\n\" /* argv */ \" call lmain\\n\" \" movl %eax, %edi\\n\" /* exit code = lmain() return */ \" movl $60, %eax\\n\" /"}, {"kind": "macro", "line": 19, "name": "SYS_write", "signature": "#define SYS_write"}, {"kind": "macro", "line": 21, "name": "SYS_exit", "signature": "#define SYS_exit"}]}, {"doc": "lz4.c - command path LZ4 (de)compression tools: lz4 and unlz4.", "id": "progs/src/lz4.c", "kind": "module", "label": "lz4.c", "language": "c", "sha256": "5c81b2cd3d69e8fc", "symbol_count": 26, "symbols": [{"doc": "define LZ4_EXIT_FAIL 1", "kind": "function", "line": 38, "name": "lz4_has", "signature": "static int lz4_has(const char *s, const char *needle)"}, {"kind": "function", "line": 52, "name": "lz4_read_all", "signature": "static char *lz4_read_all(const char *name, int *len)"}, {"kind": "function", "line": 69, "name": "lz4_write_all", "signature": "static int lz4_write_all(const char *name, char *data, int len)"}, {"kind": "function", "line": 79, "name": "lz4_compress_file", "signature": "static int lz4_compress_file(const char *src, const char *dst)"}, {"kind": "function", "line": 116, "name": "lz4_decompress_file", "signature": "static int lz4_decompress_file(const char *src, const char *dst)"}, {"kind": "function", "line": 163, "name": "main", "signature": "int main(int argc, char **argv)"}, {"kind": "function", "line": 5, "name": "kernel", "signature": "* * The codec lives in the kernel (lz4_kernel.c, the same one MiniFS uses), so * these tools are thin front-ends over the two MiniOS syscalls 216 * (lz4_compress) and 217 (lz4_decompress), which mirro"}, {"kind": "function", "line": 15, "name": "free", "signature": "void free();"}, {"kind": "function", "line": 16, "name": "printf", "signature": "int printf();"}, {"kind": "function", "line": 17, "name": "strcmp", "signature": "int strcmp();"}, {"kind": "function", "line": 18, "name": "strlen", "signature": "int strlen();"}, {"kind": "function", "line": 19, "name": "fopen", "signature": "void *fopen();"}, {"kind": "function", "line": 20, "name": "fclose", "signature": "int fclose();"}, {"kind": "function", "line": 21, "name": "fread", "signature": "int fread();"}, {"kind": "function", "line": 22, "name": "fwrite", "signature": "int fwrite();"}, {"kind": "function", "line": 23, "name": "fseek", "signature": "int fseek();"}, {"kind": "function", "line": 24, "name": "ftell", "signature": "int ftell();"}, {"kind": "function", "line": 25, "name": "rewind", "signature": "void rewind();"}, {"kind": "function", "line": 26, "name": "lz4_compress", "signature": "int lz4_compress(char *src, int srclen, char *dst, int dstcap);"}, {"kind": "function", "line": 28, "name": "lz4_decompress", "signature": "int lz4_decompress(char *src, int srclen, char *dst, int dstcap);"}, {"kind": "macro", "line": 29, "name": "LZ4_HDR_SIZE", "signature": "#define LZ4_HDR_SIZE"}, {"kind": "macro", "line": 31, "name": "LZ4_BOUND_DEN", "signature": "#define LZ4_BOUND_DEN"}, {"kind": "macro", "line": 32, "name": "LZ4_BOUND_SLACK", "signature": "#define LZ4_BOUND_SLACK"}, {"kind": "macro", "line": 33, "name": "LZ4_MAX_BLOCK", "signature": "#define LZ4_MAX_BLOCK"}, {"kind": "macro", "line": 34, "name": "LZ4_SEEK_END", "signature": "#define LZ4_SEEK_END"}, {"kind": "macro", "line": 36, "name": "LZ4_EXIT_FAIL", "signature": "#define LZ4_EXIT_FAIL"}]}, {"doc": "lzss.c - command path LZSS (de)compression tools: lzss and unlzss.", "id": "progs/src/lzss.c", "kind": "module", "label": "lzss.c", "language": "c", "sha256": "f7bc5142e5d3ce2a", "symbol_count": 48, "symbols": [{"kind": "function", "line": 63, "name": "lz_in_getc", "signature": "static int lz_in_getc(void)"}, {"kind": "function", "line": 68, "name": "lz_out_put", "signature": "static void lz_out_put(int c)"}, {"kind": "function", "line": 73, "name": "lz_putbit1", "signature": "static void lz_putbit1(void)"}, {"kind": "function", "line": 83, "name": "lz_putbit0", "signature": "static void lz_putbit0(void)"}, {"kind": "function", "line": 92, "name": "lz_flush_bits", "signature": "static void lz_flush_bits(void)"}, {"kind": "function", "line": 96, "name": "lz_out_literal", "signature": "static void lz_out_literal(int c)"}, {"kind": "function", "line": 104, "name": "lz_out_pair", "signature": "static void lz_out_pair(int x, int y)"}, {"kind": "function", "line": 115, "name": "lz_encode", "signature": "static int lz_encode(void)"}, {"kind": "function", "line": 160, "name": "lz_getbit", "signature": "static int lz_getbit(int n)"}, {"kind": "function", "line": 176, "name": "lz_decode", "signature": "static int lz_decode(void)"}, {"kind": "function", "line": 205, "name": "lz_hdr_put", "signature": "static void lz_hdr_put(char *h, int size)"}, {"kind": "function", "line": 216, "name": "lz_hdr_get", "signature": "static int lz_hdr_get(char *h)"}, {"kind": "function", "line": 224, "name": "lz_has", "signature": "static int lz_has(const char *s, const char *needle)"}, {"kind": "function", "line": 238, "name": "lz_read_all", "signature": "static char *lz_read_all(const char *name, int *len)"}, {"kind": "function", "line": 255, "name": "lz_write_all", "signature": "static int lz_write_all(const char *name, char *data, int len)"}, {"kind": "function", "line": 265, "name": "lz_compress", "signature": "static int lz_compress(const char *src, const char *dst)"}, {"kind": "function", "line": 312, "name": "lz_decompress", "signature": "static int lz_decompress(const char *src, const char *dst)"}, {"kind": "function", "line": 384, "name": "main", "signature": "int main(int argc, char **argv)"}, {"doc": "lzss.c - command path LZSS (de)compression tools: lzss and unlzss. One source builds both binaries; the linker emits the same program as bin/lzss and bin/unlzss and the program picks its mode from argv[0] (any invocation path containing \"unlzss\" decodes, and -d forces decode). The codec is Okumura LZSS over an in-memory whole-file buffer so the OS rebuild can operate without per-byte syscalls. The on-disk container is fail-closed: 4-byte magic \"LZS1\", the original size as a little-endian u32, then the MSB-first bit stream. Decoding rejects a bad magic, a declared size beyond the expansion bound derived from the input length, * and any stream that would write past the declared size.", "kind": "function", "line": 12, "name": "malloc", "signature": "void *malloc();"}, {"kind": "function", "line": 14, "name": "free", "signature": "void free();"}, {"kind": "function", "line": 15, "name": "printf", "signature": "int printf();"}, {"kind": "function", "line": 16, "name": "strcmp", "signature": "int strcmp();"}, {"kind": "function", "line": 17, "name": "strlen", "signature": "int strlen();"}, {"kind": "function", "line": 18, "name": "fopen", "signature": "void *fopen();"}, {"kind": "function", "line": 19, "name": "fclose", "signature": "int fclose();"}, {"kind": "function", "line": 20, "name": "fread", "signature": "int fread();"}, {"kind": "function", "line": 21, "name": "fwrite", "signature": "int fwrite();"}, {"kind": "function", "line": 22, "name": "fseek", "signature": "int fseek();"}, {"kind": "function", "line": 23, "name": "ftell", "signature": "int ftell();"}, {"kind": "function", "line": 24, "name": "rewind", "signature": "void rewind();"}, {"kind": "macro", "line": 25, "name": "LZSS_EI", "signature": "#define LZSS_EI"}, {"kind": "macro", "line": 27, "name": "LZSS_EJ", "signature": "#define LZSS_EJ"}, {"kind": "macro", "line": 28, "name": "LZSS_P", "signature": "#define LZSS_P"}, {"kind": "macro", "line": 29, "name": "LZSS_N", "signature": "#define LZSS_N"}, {"kind": "macro", "line": 30, "name": "LZSS_F", "signature": "#define LZSS_F"}, {"kind": "macro", "line": 31, "name": "LZSS_WIN", "signature": "#define LZSS_WIN"}, {"kind": "macro", "line": 32, "name": "LZSS_MAGIC0", "signature": "#define LZSS_MAGIC0"}, {"kind": "macro", "line": 34, "name": "LZSS_MAGIC1", "signature": "#define LZSS_MAGIC1"}, {"kind": "macro", "line": 35, "name": "LZSS_MAGIC2", "signature": "#define LZSS_MAGIC2"}, {"kind": "macro", "line": 36, "name": "LZSS_MAGIC3", "signature": "#define LZSS_MAGIC3"}, {"kind": "macro", "line": 37, "name": "LZSS_HDR_SIZE", "signature": "#define LZSS_HDR_SIZE"}, {"kind": "macro", "line": 38, "name": "LZSS_ENC_SLACK", "signature": "#define LZSS_ENC_SLACK"}, {"kind": "macro", "line": 40, "name": "LZSS_EXPAND_NUM", "signature": "#define LZSS_EXPAND_NUM"}, {"kind": "macro", "line": 41, "name": "LZSS_EXPAND_DEN", "signature": "#define LZSS_EXPAND_DEN"}, {"kind": "macro", "line": 42, "name": "LZSS_SEEK_END", "signature": "#define LZSS_SEEK_END"}, {"kind": "macro", "line": 44, "name": "LZSS_ERR_NONE", "signature": "#define LZSS_ERR_NONE"}, {"kind": "macro", "line": 46, "name": "LZSS_ERR_OVERFLOW", "signature": "#define LZSS_ERR_OVERFLOW"}, {"kind": "macro", "line": 47, "name": "LZSS_EXIT_FAIL", "signature": "#define LZSS_EXIT_FAIL"}]}, {"doc": "mmap/munmap reclaim stress test. Repeatedly maps and unmaps a large", "id": "progs/src/mmreuse.c", "kind": "module", "label": "mmreuse.c", "language": "c", "sha256": "7edd82b77cde95e8", "symbol_count": 6, "symbols": [{"doc": "mmap/munmap reclaim stress test. Repeatedly maps and unmaps a large region. On a kernel whose munmap never returns address space, the downward mmap cursor drains until a map fails with ENOMEM (-12); with reclaim the freed region is reused and no map ever fails. Exit code 0 = pass, 1 = a map failed (the leak it guards against). Built as a static * Linux ELF like cpl.elf and run through the raw syscall ABI.", "kind": "function", "line": 7, "name": "mmap_anon", "signature": "static long mmap_anon(long len)"}, {"kind": "function", "line": 20, "name": "munmap", "signature": "static long munmap(long addr, long len)"}, {"kind": "function", "line": 30, "name": "exit_now", "signature": "static void exit_now(long code)"}, {"kind": "function", "line": 34, "name": "_start", "signature": "void _start(void)"}, {"kind": "function", "line": 3, "name": "ENOMEM", "signature": "* downward mmap cursor drains until a map fails with ENOMEM (-12);"}, {"kind": "function", "line": 14, "name": "volatile", "signature": "__asm__ volatile(\"syscall\" : \"=a\"(r) : \"0\"(9), \"D\"(0), \"r\"(a2), \"r\"(a3), \"r\"(a4), \"r\"(a5), \"r\"(a6) : \"rcx\", \"r11\", \"memory\");"}]}, {"doc": "mthreads.h -- Minimal pthread-like threads for MiniOS ELFs (roadmap", "id": "progs/src/mthreads.h", "kind": "module", "label": "mthreads.h", "language": "h", "sha256": "080d38cb33837a81", "symbol_count": 23, "symbols": [{"kind": "struct", "line": 38, "name": "mmutex_t"}, {"kind": "struct", "line": 42, "name": "mthread_slot_t"}, {"doc": "define MMUTEX_FREE 0 define MMUTEX_HELD 1 define MMUTEX_CONTENDED 2 define MMUTEX_SPINS 100", "kind": "type_alias", "line": 35, "name": "mthread_t", "signature": "typedef int mthread_t;"}, {"kind": "function", "line": 49, "name": "m_syscall6", "signature": "static inline long m_syscall6(long n, long a, long b, long c)"}, {"kind": "function", "line": 58, "name": "myield", "signature": "static inline void myield(void)"}, {"kind": "function", "line": 62, "name": "mfutex_wait", "signature": "static inline long mfutex_wait(volatile int *addr, int val)"}, {"kind": "function", "line": 66, "name": "mfutex_wake", "signature": "static inline long mfutex_wake(volatile int *addr, int n)"}, {"kind": "function", "line": 70, "name": "mmutex_init", "signature": "static inline void mmutex_init(mmutex_t *m)"}, {"kind": "function", "line": 74, "name": "mmutex_lock", "signature": "static inline void mmutex_lock(mmutex_t *m)"}, {"kind": "function", "line": 89, "name": "mmutex_unlock", "signature": "static inline void mmutex_unlock(mmutex_t *m)"}, {"doc": "Thread entry trampoline: runs fn(arg), stores the return, exits 0. * The exit code is always 0; join reads retval from the shared slot.", "kind": "function", "line": 98, "name": "mthread_entry", "signature": "static void mthread_entry(void *p)"}, {"kind": "function", "line": 116, "name": "mthread_create", "signature": "static int mthread_create(mthread_t *t, void *(*fn)(void *), void *arg)"}, {"kind": "function", "line": 139, "name": "mthread_join", "signature": "static int mthread_join(mthread_t t, void **retval)"}, {"kind": "function", "line": 52, "name": "volatile", "signature": "__asm__ volatile(\"syscall\" : \"=a\"(r) : \"a\"(n), \"D\"(a), \"S\"(b), \"d\"(c) : \"rcx\", \"r11\", \"memory\");"}, {"kind": "function", "line": 115, "name": "__attribute__", "signature": "__attribute__((aligned(16)));"}, {"kind": "function", "line": 144, "name": "__sync_synchronize", "signature": "__sync_synchronize();"}, {"kind": "macro", "line": 24, "name": "MTHREADS_H", "signature": "#define MTHREADS_H"}, {"kind": "macro", "line": 27, "name": "MTHREAD_STACK_SZ", "signature": "#define MTHREAD_STACK_SZ"}, {"kind": "macro", "line": 29, "name": "MTHREAD_MAX", "signature": "#define MTHREAD_MAX"}, {"kind": "macro", "line": 30, "name": "MMUTEX_FREE", "signature": "#define MMUTEX_FREE"}, {"kind": "macro", "line": 32, "name": "MMUTEX_HELD", "signature": "#define MMUTEX_HELD"}, {"kind": "macro", "line": 33, "name": "MMUTEX_CONTENDED", "signature": "#define MMUTEX_CONTENDED"}, {"kind": "macro", "line": 34, "name": "MMUTEX_SPINS", "signature": "#define MMUTEX_SPINS"}]}, {"doc": "NX probe. Under the isolation contract every user page starts", "id": "progs/src/nx.c", "kind": "module", "label": "nx.c", "language": "c", "sha256": "76a1375a42778a5d", "symbol_count": 6, "symbols": [{"kind": "function", "line": 10, "name": "write_str", "signature": "static long write_str(const char *s, long n)"}, {"kind": "function", "line": 18, "name": "exit_now", "signature": "static void exit_now(long code)"}, {"kind": "function", "line": 22, "name": "_start", "signature": "void _start(void)"}, {"doc": "NX probe. Under the isolation contract every user page starts non-executable and load_exec_elf clears NX only on the pages a program's executable segments occupy. This program writes a `ret` instruction into a stack buffer and calls it through a function pointer: with NX enforced the instruction fetch faults and the machine resets (no IDT), so the shell never reports an exit code and `poweroff` is never reached; a regression that drops NX lets the shellcode return and the program exits 0 normally. * Built as a static Linux ELF like cpl.elf and run through the syscall ABI.", "kind": "function", "line": 9, "name": "void", "signature": "typedef void (*fn_t)(void);"}, {"kind": "function", "line": 13, "name": "volatile", "signature": "__asm__ volatile(\"syscall\" : \"=a\"(r) : \"a\"(1), \"D\"(1), \"S\"(s), \"d\"(n) : \"rcx\", \"r11\", \"memory\");"}, {"kind": "function", "line": 29, "name": "fn", "signature": "fn();"}]}, {"id": "progs/src/opl3.c", "kind": "module", "label": "opl3.c", "language": "c", "sha256": "53462a22f80e2046", "symbol_count": 22, "symbols": [{"kind": "struct", "line": 102, "name": "note_t"}, {"doc": "define F_NUM_FACTOR 65536.0 / 49716.0", "kind": "function", "line": 35, "name": "sys_time", "signature": "static long sys_time(void)"}, {"kind": "function", "line": 39, "name": "sys_open", "signature": "static long sys_open(long on)"}, {"kind": "function", "line": 42, "name": "sys_submit", "signature": "static long sys_submit(const void *buf, long len)"}, {"kind": "function", "line": 45, "name": "busy_ms", "signature": "static void busy_ms(long ms)"}, {"doc": "} static long sys_open(long on) { long r; __asm__ volatile(\"syscall\":\"=a\"(r):\"a\"(SYS_SB16_OPEN),\"D\"(on):\"rcx\",\"r11\",\"memory\"); return r; } static long sys_submit(const void *buf, long len) { long r; __asm__ volatile(\"syscall\":\"=a\"(r):\"a\"(SYS_SB16_SUBMIT),\"D\"((long)buf),\"S\"(len):\"rcx\",\"r11\",\"memory\"); return r; } static void busy_ms(long ms) { long t0 = sys_time(); while (sys_time() - t0 < ms) __asm__ volatile(\"pause\"); } /* 2-op FM instrument, channel 0 (modulator op0, carrier op1).", "kind": "function", "line": 52, "name": "opl3_set_instrument", "signature": "static void opl3_set_instrument(opl3_chip *chip)"}, {"kind": "function", "line": 68, "name": "opl3_note", "signature": "static void opl3_note(opl3_chip *chip, unsigned block, unsigned fnum, int on)"}, {"doc": "Render `ms` of the current note and stream it to the SB16. Each submit is one DMA buffer of MONO_BYTES; submissions are paced to real-time audio * (BUF_MS each) so the kernel ring stays full without overflowing.", "kind": "function", "line": 77, "name": "render", "signature": "static void render(opl3_chip *chip, long ms, long *fail)"}, {"kind": "function", "line": 106, "name": "main", "signature": "int main(void)"}, {"doc": "long r; __asm__ volatile(\"syscall\":\"=a\"(r):\"a\"(SYS_SB16_OPEN),\"D\"(on):\"rcx\",\"r11\",\"memory\"); return r; } static long sys_submit(const void *buf, long len) { long r; __asm__ volatile(\"syscall\":\"=a\"(r):\"a\"(SYS_SB16_SUBMIT),\"D\"((long)buf),\"S\"(len):\"rcx\",\"r11\",\"memory\"); return r; } static void busy_ms(long ms) { long t0 = sys_time(); while (sys_time() - t0 < ms) __asm__ volatile(\"pause\"); } /* 2-op FM instrument, channel 0 (modulator op0, carrier op1). static void opl3_set_instrument(opl3_chip *chip) { /* modulator op0", "kind": "function", "line": 54, "name": "OPL3_WriteReg", "signature": "OPL3_WriteReg(chip, 0x20, 0x01);"}, {"kind": "function", "line": 85, "name": "OPL3_GenerateStream", "signature": "OPL3_GenerateStream(chip, stereo, STEREO_FRAMES);"}, {"kind": "function", "line": 110, "name": "OPL3_Reset", "signature": "OPL3_Reset(&chip, SAMPLE_RATE);"}, {"kind": "function", "line": 137, "name": "volatile", "signature": "__asm__ volatile(\"syscall\"::\"a\"(SYS_WRITE),\"D\"(1),\"S\"(msg),\"d\"((long)n) :\"rcx\",\"r11\",\"memory\");"}, {"kind": "macro", "line": 20, "name": "SYS_TIME", "signature": "#define SYS_TIME"}, {"kind": "macro", "line": 22, "name": "SYS_SB16_OPEN", "signature": "#define SYS_SB16_OPEN"}, {"kind": "macro", "line": 23, "name": "SYS_SB16_SUBMIT", "signature": "#define SYS_SB16_SUBMIT"}, {"kind": "macro", "line": 24, "name": "SYS_WRITE", "signature": "#define SYS_WRITE"}, {"kind": "macro", "line": 27, "name": "SAMPLE_RATE", "signature": "#define SAMPLE_RATE"}, {"kind": "macro", "line": 29, "name": "STEREO_FRAMES", "signature": "#define STEREO_FRAMES"}, {"kind": "macro", "line": 30, "name": "MONO_BYTES", "signature": "#define MONO_BYTES"}, {"kind": "macro", "line": 31, "name": "BUF_MS", "signature": "#define BUF_MS"}, {"kind": "macro", "line": 33, "name": "F_NUM_FACTOR", "signature": "#define F_NUM_FACTOR"}]}, {"id": "progs/src/pollready.c", "kind": "module", "label": "pollready.c", "language": "c", "sha256": "fcfdeccbfc2f80b3", "symbol_count": 9, "symbols": [{"kind": "function", "line": 25, "name": "p_write", "signature": "static long p_write(long fd, const char *s, long n)"}, {"kind": "function", "line": 29, "name": "p_strlen", "signature": "static unsigned long p_strlen(const char *s)"}, {"kind": "function", "line": 35, "name": "p_puts", "signature": "static void p_puts(long fd, const char *s)"}, {"kind": "function", "line": 39, "name": "p_atoi", "signature": "static int p_atoi(const char *s)"}, {"kind": "function", "line": 45, "name": "p_parse_ip", "signature": "static int p_parse_ip(const char *s, unsigned char out[4])"}, {"doc": "int v = 0; int digits = 0; while (*s >= '0' && *s <= '9') { v = v * 10 + (*s - '0'); s++; digits++; } if (!digits || v > 255) return -1; out[i] = (unsigned char)v; if (i < 3) { if (*s != '.') return -1; s++; } } return *s ? -1 : 0; } /* Entry called by _start with argc/argv off the initial stack.", "kind": "function", "line": 63, "name": "lmain", "signature": "int lmain(long argc, char **argv)"}, {"kind": "function", "line": 19, "name": "volatile", "signature": "__asm__ volatile(\"syscall\" : \"=a\"(ret) : \"a\"(n), \"D\"(a1), \"S\"(a2), \"d\"(a3), \"r\"(r10), \"r\"(r8) : \"rcx\", \"r11\", \"memory\");"}, {"kind": "function", "line": 27, "name": "p_syscall6", "signature": "return p_syscall6(1, fd, (long)s, n, 0, 0);"}, {"kind": "function", "line": 119, "name": "__asm__", "signature": "__asm__( \".global _start\\n\" \"_start:\\n\" \" movq (%rsp), %rdi\\n\" \" leaq 8(%rsp), %rsi\\n\" \" call lmain\\n\" \" movl %eax, %edi\\n\" \" movl $60, %eax\\n\" \" syscall\\n\" \" hlt\\n\" );"}]}, {"doc": "sbtone.c — headless SB16 diagnostic (ring-3, no GUI).", "id": "progs/src/sbtone.c", "kind": "module", "label": "sbtone.c", "language": "c", "sha256": "1b666c81f4577b16", "symbol_count": 11, "symbols": [{"kind": "function", "line": 13, "name": "buffers", "signature": "*\n * Exit code is the number of submitted buffers (0 on failure to open).\n */\n\n#include ..."}, {"kind": "function", "line": 35, "name": "main", "signature": "int main(void)"}, {"kind": "function", "line": 31, "name": "volatile", "signature": "__asm__ volatile(\"syscall\":\"=a\"(r):\"a\"(n),\"D\"(a),\"S\"(b),\"d\"(d) :\"rcx\",\"r11\",\"memory\");"}, {"kind": "function", "line": 63, "name": "printf", "signature": "printf(\"sbtone: submitted %ld buffers (%ld ms audio) in %ld ms guest\\n\", ok, audio_ms, now - start);"}, {"kind": "function", "line": 65, "name": "call", "signature": "call(SYS_SB16_OPEN, 0, 0, 0);"}, {"kind": "macro", "line": 20, "name": "SYS_SB16_OPEN", "signature": "#define SYS_SB16_OPEN"}, {"kind": "macro", "line": 22, "name": "SYS_SB16_SUBMIT", "signature": "#define SYS_SB16_SUBMIT"}, {"kind": "macro", "line": 23, "name": "SYS_TIME", "signature": "#define SYS_TIME"}, {"kind": "macro", "line": 24, "name": "RATE", "signature": "#define RATE"}, {"kind": "macro", "line": 26, "name": "BUF", "signature": "#define BUF"}, {"kind": "macro", "line": 27, "name": "WINDOW_MS", "signature": "#define WINDOW_MS"}]}, {"doc": "shell.py -- pybash: a Python shell layer on top of MiniOS's C shell. The C shell is untouched. This is an additional capability layer that gives MiniOS pipelines, variables and control flow in Python, so new behaviour no longer requires recompiling kernel.c. The core primitive is minios.run(), which invokes any ramdisk program through SYS_SPAWN while preserving the interpreter, and minios.run(..., redirect=file) to capture a program's console output for composition. Usage (inside MiniOS): micropython src/shell.py", "id": "progs/src/shell.py", "kind": "module", "label": "shell.py", "language": "py", "sha256": "6efe8d3c7a270710", "symbol_count": 3, "symbols": [{"kind": "function", "line": 20, "name": "run_capture", "signature": "def run_capture(cmd, args)"}, {"kind": "function", "line": 30, "name": "expand", "signature": "def expand(line, env)"}, {"kind": "function", "line": 36, "name": "main", "signature": "def main()"}]}, {"id": "progs/src/test.c", "kind": "module", "label": "test.c", "language": "c", "sha256": "6884c669dd0f450d", "symbol_count": 2, "symbols": [{"kind": "function", "line": 1, "name": "add", "signature": "int add(int a, int b)"}, {"kind": "function", "line": 2, "name": "main", "signature": "int main(void)"}]}, {"id": "progs/src/test.lua", "kind": "module", "label": "test.lua", "language": "lua", "sha256": "8cbb472b6e359f60", "symbol_count": 20, "symbols": [{"kind": "function", "line": 12, "name": "check"}, {"kind": "function", "line": 22, "name": "write_file"}, {"kind": "function", "line": 30, "name": "read_file"}, {"kind": "function", "line": 40, "name": "test_module_bindings"}, {"kind": "function", "line": 53, "name": "test_filesystem"}, {"kind": "function", "line": 70, "name": "test_xxhash"}, {"kind": "function", "line": 75, "name": "test_stb"}, {"kind": "function", "line": 80, "name": "test_dlmalloc"}, {"kind": "function", "line": 85, "name": "test_hello"}, {"kind": "function", "line": 90, "name": "test_ftest"}, {"kind": "function", "line": 95, "name": "test_minigcc"}, {"kind": "function", "line": 100, "name": "test_ld"}, {"kind": "function", "line": 112, "name": "test_toolchain_roundtrip"}, {"kind": "function", "line": 122, "name": "test_spawn_preserves_interpreter"}, {"kind": "function", "line": 135, "name": "test_bin_cp"}, {"kind": "function", "line": 141, "name": "test_bin_lz4"}, {"kind": "function", "line": 158, "name": "test_bin_lzss"}, {"kind": "function", "line": 175, "name": "test_bin_aes"}, {"kind": "function", "line": 194, "name": "test_bin_json"}, {"kind": "function", "line": 205, "name": "test_bin_freedom"}]}, {"doc": "test.py -- in-OS test suite for MiniOS, driven by MicroPython. Tests every available binary sorted by size (smallest first). Graphical programs excluded: DOOM, Quake2, Nuklear, Piano, TopoGPT. Usage (inside MiniOS): micropython src/test.py", "id": "progs/src/test.py", "kind": "module", "label": "test.py", "language": "py", "sha256": "c742ae87c3744001", "symbol_count": 20, "symbols": [{"kind": "function", "line": 15, "name": "check", "signature": "def check(name, cond, detail)"}, {"kind": "function", "line": 25, "name": "safe_run", "signature": "def safe_run()"}, {"kind": "function", "line": 38, "name": "test_module_bindings", "signature": "def test_module_bindings()"}, {"kind": "function", "line": 56, "name": "test_filesystem", "signature": "def test_filesystem()"}, {"kind": "function", "line": 72, "name": "test_xxhash", "signature": "def test_xxhash()"}, {"kind": "function", "line": 77, "name": "test_stb", "signature": "def test_stb()"}, {"kind": "function", "line": 82, "name": "test_dlmalloc", "signature": "def test_dlmalloc()"}, {"kind": "function", "line": 87, "name": "test_hello", "signature": "def test_hello()"}, {"kind": "function", "line": 92, "name": "test_ftest", "signature": "def test_ftest()"}, {"kind": "function", "line": 97, "name": "test_minigcc", "signature": "def test_minigcc()"}, {"kind": "function", "line": 102, "name": "test_ld", "signature": "def test_ld()"}, {"kind": "function", "line": 119, "name": "test_toolchain_roundtrip", "signature": "def test_toolchain_roundtrip()"}, {"kind": "function", "line": 134, "name": "test_spawn_preserves_interpreter", "signature": "def test_spawn_preserves_interpreter()"}, {"kind": "function", "line": 148, "name": "test_bin_cp", "signature": "def test_bin_cp()"}, {"kind": "function", "line": 153, "name": "test_bin_lz4", "signature": "def test_bin_lz4()"}, {"kind": "function", "line": 181, "name": "test_bin_lzss", "signature": "def test_bin_lzss()"}, {"kind": "function", "line": 209, "name": "test_bin_aes", "signature": "def test_bin_aes()"}, {"kind": "function", "line": 239, "name": "test_bin_json", "signature": "def test_bin_json()"}, {"kind": "function", "line": 253, "name": "test_bin_freedom", "signature": "def test_bin_freedom()"}, {"kind": "function", "line": 261, "name": "main", "signature": "def main()"}]}, {"doc": "test_all.sh -- comprehensive non-interactive test suite for MiniOS. Run with: sh src/test_all.sh Every test prints a PASS: or FAIL: marker. The host-side runner greps the QEMU serial log for these markers. No interactive commands, no external server dependencies. === HELP & CLEAR ===", "id": "progs/src/test_all.sh", "kind": "module", "label": "test_all.sh", "language": "sh", "sha256": "2949ea79a98379d5", "symbol_count": 0, "symbols": []}, {"doc": "thdemo.c -- Producer-consumer over mthreads (roadmap Phase 1, M1).", "id": "progs/src/thdemo.c", "kind": "module", "label": "thdemo.c", "language": "c", "sha256": "a0aa26f595e70134", "symbol_count": 16, "symbols": [{"kind": "function", "line": 35, "name": "producer", "signature": "static void *producer(void *p)"}, {"kind": "function", "line": 56, "name": "consumer", "signature": "static void *consumer(void *p)"}, {"kind": "function", "line": 81, "name": "main", "signature": "int main(void)"}, {"kind": "function", "line": 2, "name": "threads", "signature": "* * Ten threads (1 main + 5 producers + 4 consumers) share one address * space through thread_spawn (MiniOS syscall 225): a bounded buffer, * a spin mutex and Mesa-style spin-waits. Workers never touc"}, {"kind": "function", "line": 41, "name": "mmutex_lock", "signature": "mmutex_lock(&m);"}, {"kind": "function", "line": 43, "name": "mmutex_unlock", "signature": "mmutex_unlock(&m);"}, {"kind": "function", "line": 44, "name": "myield", "signature": "myield();"}, {"kind": "function", "line": 85, "name": "mmutex_init", "signature": "mmutex_init(&m);"}, {"kind": "function", "line": 88, "name": "printf", "signature": "printf(\"thdemo: producer create failed\\n\");"}, {"kind": "function", "line": 101, "name": "mthread_join", "signature": "mthread_join(prod[i], 0);"}, {"kind": "macro", "line": 20, "name": "NPROD", "signature": "#define NPROD"}, {"kind": "macro", "line": 22, "name": "NCONS", "signature": "#define NCONS"}, {"kind": "macro", "line": 23, "name": "PER_PROD", "signature": "#define PER_PROD"}, {"kind": "macro", "line": 24, "name": "BUFSZ", "signature": "#define BUFSZ"}, {"kind": "macro", "line": 25, "name": "EXPECTED_N", "signature": "#define EXPECTED_N"}, {"kind": "macro", "line": 27, "name": "EXPECTED_SUM", "signature": "#define EXPECTED_SUM"}]}, {"id": "progs/src/w1.c", "kind": "module", "label": "w1.c", "language": "c", "sha256": "a24f0b487283b08a", "symbol_count": 2, "symbols": [{"kind": "function", "line": 2, "name": "main", "signature": "int main(void)"}, {"kind": "function", "line": 1, "name": "write", "signature": "int write(int fd, char *buf, int n);"}]}, {"doc": "tlsget - minimal HTTPS GET over the ring-3 TLS stack.", "id": "progs/tls_u/tls_u_main.c", "kind": "module", "label": "tls_u_main.c", "language": "c", "sha256": "d24c510ef43635fc", "symbol_count": 11, "symbols": [{"kind": "function", "line": 10, "name": "syscall", "signature": "* the MiniOS DNS syscall (200, sig 0: error-check only, sends nothing).\n * The kernel keeps servi..."}, {"doc": "Strict port parser (clang-tidy cert-err34-c: atoi reports no errors, so \"abc\" and overflow both become 0 and fail open into the * default 443). All digits, at least one, value 1..65535, else -1.", "kind": "function", "line": 47, "name": "parse_port", "signature": "static int parse_port(const char *s)"}, {"kind": "function", "line": 60, "name": "main", "signature": "int main(int argc, char **argv)"}, {"kind": "function", "line": 38, "name": "va_start", "signature": "va_start(ap, fmt);"}, {"kind": "function", "line": 40, "name": "va_end", "signature": "va_end(ap);"}, {"kind": "function", "line": 75, "name": "diag", "signature": "diag(\"usage: tlsget [path] [port]\\n\");"}, {"kind": "function", "line": 94, "name": "perror", "signature": "perror(\"tlsget: socket\");"}, {"kind": "function", "line": 97, "name": "memset", "signature": "memset(&sa, 0, sizeof(sa));"}, {"kind": "function", "line": 103, "name": "close", "signature": "close(fd);"}, {"kind": "macro", "line": 13, "name": "_POSIX_C_SOURCE", "signature": "#define _POSIX_C_SOURCE"}, {"kind": "macro", "line": 15, "name": "_DEFAULT_SOURCE", "signature": "#define _DEFAULT_SOURCE"}]}, {"doc": "tls_u_port.c - ring-3 transport for the shared TLS stack (TLS_RING3).", "id": "progs/tls_u/tls_u_port.c", "kind": "module", "label": "tls_u_port.c", "language": "c", "sha256": "a08a9fe895d1543d", "symbol_count": 20, "symbols": [{"kind": "function", "line": 5, "name": "sockets", "signature": "* sockets: on the host they are host sockets (used by the\n * openssl-s_server interop test), insi..."}, {"kind": "function", "line": 38, "name": "tls_u_recv", "signature": "int tls_u_recv(int fd, char *buf, int len)"}, {"kind": "function", "line": 43, "name": "tls_u_recv_timeout", "signature": "int tls_u_recv_timeout(int fd, char *buf, int len, unsigned long ms)"}, {"kind": "function", "line": 54, "name": "tls_u_close", "signature": "void tls_u_close(int fd)"}, {"doc": "Session-aware close for multi-fetch processes (freedom follows redirects and linked stylesheets, reusing the lowest free fd number every time). The engine keys sessions by raw fd and only clears the slot on handshake error; a successful session lives until someone frees it, so plain close() leaks the slot and the next handshake on the recycled fd number fails with \"session already exists\". Freeing * an fd with no session is a safe no-op. void tls_free_fd(int fd); /* session table owner: net/tls.c", "kind": "function", "line": 67, "name": "tls_close", "signature": "void tls_close(int fd)"}, {"kind": "function", "line": 71, "name": "tls_now_days", "signature": "long tls_now_days(void)"}, {"kind": "function", "line": 77, "name": "tls_random", "signature": "void tls_random(unsigned char *out, unsigned len)"}, {"kind": "function", "line": 98, "name": "u_raw_syscall3", "signature": "static long u_raw_syscall3(long n, long a1, long a2, long a3)"}, {"doc": "Strict dotted-quad parser (clang-tidy cert-err34-c: sscanf %u has undefined overflow and accepts whitespace/sign, so \"9999999999.1.1.1\" is UB before the <256 check ever runs). Digits and dots only, four * octets 0..255, full-string consumption, else -1.", "kind": "function", "line": 122, "name": "parse_quad", "signature": "static int parse_quad(const char *s, unsigned *ip_out)"}, {"kind": "function", "line": 146, "name": "tls_u_resolve", "signature": "int tls_u_resolve(const char *host, unsigned *ip_out)"}, {"doc": "freedom's resolver name: kernel DNS value semantics (u32 host order, * -1 on failure).", "kind": "function", "line": 183, "name": "net_dns_resolve", "signature": "int net_dns_resolve(const char *host)"}, {"kind": "function", "line": 56, "name": "close", "signature": "close(fd);"}, {"doc": "Session-aware close for multi-fetch processes (freedom follows redirects and linked stylesheets, reusing the lowest free fd number every time). The engine keys sessions by raw fd and only clears the slot on handshake error; a successful session lives until someone frees it, so plain close() leaks the slot and the next handshake on the recycled fd number fails with \"session already exists\". Freeing * an fd with no session is a safe no-op.", "kind": "function", "line": 66, "name": "tls_free_fd", "signature": "void tls_free_fd(int fd);"}, {"kind": "function", "line": 101, "name": "volatile", "signature": "__asm__ volatile(\"syscall\" : \"=a\"(ret) : \"a\"(n), \"D\"(a1), \"S\"(a2), \"d\"(a3) : \"rcx\", \"r11\", \"memory\");"}, {"kind": "function", "line": 152, "name": "memset", "signature": "memset(&hints, 0, sizeof(hints));"}, {"kind": "function", "line": 158, "name": "freeaddrinfo", "signature": "freeaddrinfo(res);"}, {"kind": "function", "line": 163, "name": "answer", "signature": "* answer (some resolvers go IPv6-only on the first query). */ memset(&hints, 0, sizeof(hints));"}, {"kind": "function", "line": 178, "name": "u_minios_dns", "signature": "return u_minios_dns(host, ip_out);"}, {"kind": "macro", "line": 11, "name": "_POSIX_C_SOURCE", "signature": "#define _POSIX_C_SOURCE"}, {"kind": "macro", "line": 13, "name": "_DEFAULT_SOURCE", "signature": "#define _DEFAULT_SOURCE"}]}, {"id": "progs/topogpt3/topogpt3.c", "kind": "module", "label": "topogpt3.c", "language": "c", "sha256": "eff214d25e670d30", "symbol_count": 132, "symbols": [{"doc": "topogpt3 -p \"prompt\" [-n N] [-t T] Headless mode topogpt3 -i Interactive mode topogpt3 -f file.txt Read prompt from file #pragma GCC diagnostic ignored \"-Wunused-function\" #ifdef __has_include #if __has_include() #include #include #include #else /* MiniOS standalone: declare stdio from ld stubs", "kind": "struct", "line": 24, "name": "FILE"}, {"kind": "struct", "line": 176, "name": "LayerWeights"}, {"kind": "struct", "line": 224, "name": "ModelWeights"}, {"kind": "function", "line": 113, "name": "tg_exp", "signature": "static float tg_exp(float x)"}, {"kind": "function", "line": 127, "name": "tg_tanh", "signature": "static float tg_tanh(float x)"}, {"kind": "function", "line": 134, "name": "tg_sin", "signature": "static float tg_sin(float x)"}, {"kind": "function", "line": 143, "name": "tg_cos", "signature": "static float tg_cos(float x)"}, {"kind": "function", "line": 147, "name": "tg_fabs", "signature": "static float tg_fabs(float x)"}, {"kind": "function", "line": 151, "name": "tg_log", "signature": "static float tg_log(float x)"}, {"kind": "function", "line": 163, "name": "tg_fmax", "signature": "static float tg_fmax(float a, float b)"}, {"kind": "function", "line": 167, "name": "tg_fmin", "signature": "static float tg_fmin(float a, float b)"}, {"kind": "function", "line": 254, "name": "load_vocab", "signature": "static void load_vocab(const char *path)"}, {"doc": "====================================================================== SECTION 4: TORUS GRAPH BUILDER * ======================================================================", "kind": "function", "line": 295, "name": "build_torus_graph", "signature": "static void build_torus_graph(void)"}, {"doc": "====================================================================== SECTION 5: ROPE PRECOMPUTATION * ======================================================================", "kind": "function", "line": 326, "name": "precompute_rope", "signature": "static void precompute_rope(void)"}, {"doc": "====================================================================== SECTION 6: MATRIX OPERATIONS * ======================================================================", "kind": "function", "line": 358, "name": "matvec", "signature": "static void matvec(const float *W, const float *x, float *y, int rows, int cols)"}, {"kind": "function", "line": 369, "name": "matvec_bias", "signature": "static void matvec_bias(const float *W, const float *b, const float *x, float *y,\n ..."}, {"kind": "function", "line": 381, "name": "rmsnorm", "signature": "static void rmsnorm(const float *x, const float *w, float *y, int d)"}, {"kind": "function", "line": 390, "name": "softmax", "signature": "static void softmax(float *x, int n)"}, {"kind": "function", "line": 399, "name": "gelu", "signature": "static void gelu(float *x, int n)"}, {"kind": "function", "line": 409, "name": "silu", "signature": "static void silu(float *x, int n)"}, {"kind": "function", "line": 417, "name": "swiglu", "signature": "static void swiglu(const float *gate_w, const float *up_w, const float *down_w,\n ..."}, {"doc": "====================================================================== SECTION 7: QUATERNION OPERATIONS * ======================================================================", "kind": "function", "line": 434, "name": "quat_normalize", "signature": "static void quat_normalize(float *q)"}, {"kind": "function", "line": 439, "name": "quat_hamilton", "signature": "static void quat_hamilton(const float *a, const float *b, float *c)"}, {"doc": "static void quat_normalize(float *q) { float n = tg_sqrt(q[0]*q[0] + q[1]*q[1] + q[2]*q[2] + q[3]*q[3]); if (n > 1e-8f) { q[0]/=n; q[1]/=n; q[2]/=n; q[3]/=n; } } static void quat_hamilton(const float *a, const float *b, float *c) { c[0] = a[0]*b[0] - a[1]*b[1] - a[2]*b[2] - a[3]*b[3]; c[1] = a[0]*b[1] + a[1]*b[0] + a[2]*b[3] - a[3]*b[2]; c[2] = a[0]*b[2] - a[1]*b[3] + a[2]*b[0] + a[3]*b[1]; c[3] = a[0]*b[3] + a[1]*b[2] - a[2]*b[1] + a[3]*b[0]; } /* QuaternionLinear: x[w,x,y,z] -> y[w,x,y,z]", "kind": "function", "line": 448, "name": "quat_linear", "signature": "static void quat_linear(const float *Ww, const float *Wx, const float *Wy, const float *Wz,\n ..."}, {"kind": "function", "line": 504, "name": "ifft_radix2", "signature": "static void ifft_radix2(float *real, float *imag, int n)"}, {"doc": "cur_r = nr; } } } } static void ifft_radix2(float *real, float *imag, int n) { int i; for (i = 0; i < n; i++) imag[i] = -imag[i]; fft_radix2(real, imag, n); for (i = 0; i < n; i++) { real[i] /= (float)n; imag[i] = -imag[i] / (float)n; } } /* Real FFT: x[n] -> X[n/2+1] complex", "kind": "function", "line": 513, "name": "rfft", "signature": "static void rfft(const float *x, float *Xr, float *Xi, int n)"}, {"doc": "fft_radix2(real, imag, n); for (i = 0; i < n; i++) { real[i] /= (float)n; imag[i] = -imag[i] / (float)n; } } /* Real FFT: x[n] -> X[n/2+1] complex static void rfft(const float *x, float *Xr, float *Xi, int n) { float re[n], im[n]; int i; for (i = 0; i < n; i++) { re[i] = x[i]; im[i] = 0.0f; } fft_radix2(re, im, n); for (i = 0; i <= n/2; i++) { Xr[i] = re[i]; Xi[i] = im[i]; } } /* Inverse real FFT: X[n/2+1] complex -> x[n]", "kind": "function", "line": 522, "name": "irfft", "signature": "static void irfft(const float *Xr, const float *Xi, float *x, int n)"}, {"doc": "====================================================================== SECTION 9: SPECTRAL 1D FILTER * ======================================================================", "kind": "function", "line": 536, "name": "filter1d", "signature": "static void filter1d(const float *x, const float *kr, const float *ki,\n floa..."}, {"kind": "function", "line": 579, "name": "ifft2d", "signature": "static void ifft2d(float *data_r, float *data_i, int h, int w)"}, {"doc": "ifft_radix2(row_re, row_im, w); for (c = 0; c < w; c++) { re[r*w+c] = row_re[c]; im[r*w+c] = row_im[c]; } } /* IFFT columns float col_re[h], col_im[h]; for (c = 0; c < w; c++) { for (r = 0; r < h; r++) { col_re[r] = re[r*w+c]; col_im[r] = im[r*w+c]; } ifft_radix2(col_re, col_im, h); for (r = 0; r < h; r++) { re[r*w+c] = col_re[r]; im[r*w+c] = col_im[r]; } } for (i = 0; i < h * w; i++) { data_r[i] = re[i]; data_i[i] = im[i]; } } /* RFFT2: 2D real FFT, output is [h][w/2+1] complex", "kind": "function", "line": 602, "name": "rfft2d_real", "signature": "static void rfft2d_real(const float *data, float *out_r, float *out_i,\n i..."}, {"doc": "for (r = 0; r < h; r++) { col_re[r] = re[r*w+c]; col_im[r] = im[r*w+c]; } fft_radix2(col_re, col_im, h); for (r = 0; r < h; r++) { re[r*w+c] = col_re[r]; im[r*w+c] = col_im[r]; } } int fw = w / 2 + 1; for (r = 0; r < h; r++) { for (c = 0; c < fw; c++) { out_r[r * fw + c] = re[r * w + c]; out_i[r * fw + c] = im[r * w + c]; } } } /* IRFFT2: inverse of rfft2d_real", "kind": "function", "line": 629, "name": "irfft2d", "signature": "static void irfft2d(const float *in_r, const float *in_i, float *out,\n int h,..."}, {"doc": "====================================================================== SECTION 11: QUATERNION SPECTRAL LAYER 2D * ====================================================================== /* Complex multiply: (ar+bi)(cr+di) = (ac-bd)+(ad+bc)i", "kind": "function", "line": 664, "name": "cmul", "signature": "static void cmul(float ar, float ai, float cr, float di, float *rr, float *ri)"}, {"doc": "====================================================================== SECTION 11: QUATERNION SPECTRAL LAYER 2D * ====================================================================== /* Complex multiply: (ar+bi)(cr+di) = (ac-bd)+(ad+bc)i static void cmul(float ar, float ai, float cr, float di, float *rr, float *ri) { rr = ar*cr - ai*di; ri = ar*di + ai*cr; } /* Contract: Y[o,h,w] = sum_i W[i,o,h,w] * X[b,i,h,w] (complex)", "kind": "function", "line": 670, "name": "spectral_contract", "signature": "static void spectral_contract(const float *Wr, const float *Wi,\n co..."}, {"kind": "function", "line": 694, "name": "quat_spectral_layer_2d", "signature": "static void quat_spectral_layer_2d(\n const float *x, float *y,\n const float *kr_w, const fl..."}, {"doc": "====================================================================== SECTION 12: SPECTRAL AUTOENCODER FORWARD * ======================================================================", "kind": "function", "line": 784, "name": "spectral_ae_encode", "signature": "static void spectral_ae_encode(const float *x, float *z, const LayerWeights *lw)"}, {"kind": "function", "line": 792, "name": "spectral_ae_decode", "signature": "static void spectral_ae_decode(const float *z, float *x, const LayerWeights *lw)"}, {"kind": "function", "line": 799, "name": "process_torus_grid", "signature": "static void process_torus_grid(const float *grid, float *out, const LayerWeights *lw)"}, {"doc": "====================================================================== SECTION 13: TORUS BRAIN FORWARD * ======================================================================", "kind": "function", "line": 820, "name": "torus_soft_assign", "signature": "static void torus_soft_assign(const float *phi1, const float *phi2,\n ..."}, {"kind": "function", "line": 842, "name": "message_passing", "signature": "static void message_passing(const float *node_feat, float *out,\n cons..."}, {"kind": "function", "line": 887, "name": "torus_brain_forward", "signature": "static void torus_brain_forward(const float *x, float *out, float *recon_loss,\n ..."}, {"doc": "====================================================================== SECTION 14: ATTENTION FORWARD * ======================================================================", "kind": "function", "line": 977, "name": "attention_forward", "signature": "static void attention_forward(const float *x, float *out, int layer_idx, int pos, int total_kv_co..."}, {"doc": "====================================================================== SECTION 15: MoE ROUTING * ======================================================================", "kind": "function", "line": 1077, "name": "moe_forward", "signature": "static void moe_forward(const float *x, float *out, const LayerWeights *lw)"}, {"doc": "====================================================================== SECTION 16: FULL MODEL FORWARD Processes tokens autoregressively through all layers. Each token position goes through ALL layers before the next position. This is the correct order: layer 0 must see all positions before layer 1 can process them. After processing, logits_out holds logits for the LAST position only. * ======================================================================", "kind": "function", "line": 1127, "name": "forward", "signature": "static void forward(const int *token_ids, int seq_len, float *logits_out)"}, {"kind": "function", "line": 1194, "name": "tokenize_string", "signature": "static int tokenize_string(const char *text, int *tokens, int max_tokens)"}, {"doc": "====================================================================== SECTION 18: SAMPLING * ======================================================================", "kind": "function", "line": 1209, "name": "apply_temperature", "signature": "static void apply_temperature(float *logits, int n, float temp)"}, {"kind": "function", "line": 1215, "name": "apply_repetition_penalty", "signature": "static void apply_repetition_penalty(float *logits, int n, const int *tokens,\n ..."}, {"kind": "function", "line": 1228, "name": "apply_top_k", "signature": "static void apply_top_k(float *logits, int n, int k)"}, {"kind": "function", "line": 1247, "name": "sample", "signature": "static int sample(const float *logits, int n)"}, {"doc": "====================================================================== SECTION 19: WEIGHT LOADER Reads the binary file produced by convert_weights.py. The converter writes tensors in a fixed order. We read them in the same order, matching each to its destination buffer by position. No string parsing needed. * ======================================================================", "kind": "function", "line": 1281, "name": "load_weights", "signature": "static int load_weights(const char *path)"}, {"kind": "function", "line": 1451, "name": "load_weights_fp16", "signature": "static int load_weights_fp16(const char *path)"}, {"doc": "printf(\" Layer %d loaded\\n\", i); } READ_TENSOR16(W.final_norm, D_MODEL); #undef SKIP_TENSOR16 #undef READ_TENSOR16 fclose(f); printf(\"Weights loaded successfully (fp16).\\n\"); return 0; } /* Auto-detect format and load weights", "kind": "function", "line": 1583, "name": "load_weights_auto", "signature": "static int load_weights_auto(const char *path)"}, {"doc": "====================================================================== SECTION 20: TIMING * ====================================================================== /* Portable wall-clock timer using rdtsc where available, else microseconds", "kind": "function", "line": 1600, "name": "time_now_ms", "signature": "static double time_now_ms(void)"}, {"doc": "====================================================================== SECTION 21: GENERATION * ======================================================================", "kind": "function", "line": 1613, "name": "decode_token", "signature": "static void decode_token(int tid)"}, {"doc": "if (tid < 256) { /* Map GPT-2 byte-level encoding back to original byte int n = tid; if (n < 94) n += 33; else if (n < 163) n += 161 - 94; else n += 173 - 163; putchar(n); } else { /* Multi-byte token: output placeholder or skip putchar('?'); } } /* Load pre-tokenized binary file (format: \"TKID\" + uint32 count + int32 ids[])", "kind": "function", "line": 1629, "name": "load_token_file", "signature": "static int load_token_file(const char *path, int *out_ids, int max_ids)"}, {"doc": "if (fread(&n, 4, 1, f) != 1) { fclose(f); return 0; } if (n > (unsigned)max_ids) n = max_ids; int count = (int)n; int i; for (i = 0; i < count; i++) { int id; if (fread(&id, 4, 1, f) != 1) break; out_ids[i] = id; } fclose(f); return count; } /* Decode token ID using loaded vocabulary", "kind": "function", "line": 1652, "name": "decode_token_tiktoken", "signature": "static void decode_token_tiktoken(int tid)"}, {"kind": "function", "line": 1660, "name": "generate_tokens", "signature": "static void generate_tokens(int *prompt_tokens, int n_prompt, int max_new_tokens,\n ..."}, {"kind": "function", "line": 1724, "name": "generate", "signature": "static void generate(const char *prompt, int max_new_tokens, float temperature,\n ..."}, {"doc": "====================================================================== SECTION 22: INTERACTIVE MODE * ======================================================================", "kind": "function", "line": 1735, "name": "interactive_mode", "signature": "static void interactive_mode(void)"}, {"doc": "====================================================================== SECTION 23: HELP AND MAIN * ======================================================================", "kind": "function", "line": 1849, "name": "print_help", "signature": "static void print_help(void)"}, {"kind": "function", "line": 1884, "name": "main", "signature": "int main(int argc, char **argv)"}, {"kind": "function", "line": 28, "name": "printf", "signature": "extern int printf(const char *, ...);"}, {"kind": "function", "line": 29, "name": "fprintf", "signature": "extern int fprintf(FILE *, const char *, ...);"}, {"kind": "function", "line": 30, "name": "sprintf", "signature": "extern int sprintf(char *, const char *, ...);"}, {"kind": "function", "line": 31, "name": "snprintf", "signature": "extern int snprintf(char *, unsigned long, const char *, ...);"}, {"kind": "function", "line": 32, "name": "puts", "signature": "extern int puts(const char *);"}, {"kind": "function", "line": 33, "name": "putchar", "signature": "extern int putchar(int);"}, {"kind": "function", "line": 34, "name": "fputc", "signature": "extern int fputc(int, FILE *);"}, {"kind": "function", "line": 35, "name": "fputs", "signature": "extern int fputs(const char *, FILE *);"}, {"kind": "function", "line": 36, "name": "fopen", "signature": "extern FILE *fopen(const char *, const char *);"}, {"kind": "function", "line": 37, "name": "fclose", "signature": "extern int fclose(FILE *);"}, {"kind": "function", "line": 38, "name": "fread", "signature": "extern unsigned long fread(void *, unsigned long, unsigned long, FILE *);"}, {"kind": "function", "line": 39, "name": "fwrite", "signature": "extern unsigned long fwrite(const void *, unsigned long, unsigned long, FILE *);"}, {"kind": "function", "line": 40, "name": "fseek", "signature": "extern int fseek(FILE *, long, int);"}, {"kind": "function", "line": 41, "name": "ftell", "signature": "extern long ftell(FILE *);"}, {"kind": "function", "line": 42, "name": "fflush", "signature": "extern int fflush(FILE *);"}, {"doc": "define NULL ((void*)0) define SEEK_SET 0 define SEEK_CUR 1 define SEEK_END 2", "kind": "function", "line": 47, "name": "malloc", "signature": "extern void *malloc(unsigned long);"}, {"kind": "function", "line": 48, "name": "free", "signature": "extern void free(void *);"}, {"kind": "function", "line": 49, "name": "memcpy", "signature": "extern void *memcpy(void *, const void *, unsigned long);"}, {"kind": "function", "line": 50, "name": "memset", "signature": "extern void *memset(void *, int, unsigned long);"}, {"kind": "function", "line": 51, "name": "strcmp", "signature": "extern int strcmp(const char *, const char *);"}, {"kind": "function", "line": 52, "name": "strncmp", "signature": "extern int strncmp(const char *, const char *, unsigned long);"}, {"kind": "function", "line": 53, "name": "strlen", "signature": "extern unsigned long strlen(const char *);"}, {"kind": "function", "line": 54, "name": "strstr", "signature": "extern char *strstr(const char *, const char *);"}, {"kind": "function", "line": 508, "name": "fft_radix2", "signature": "fft_radix2(real, imag, n);"}, {"doc": "if (fread(&nl, 4, 1, f) != 1) { fclose(f); return -1; } \\ if (fseek(f, nl, SEEK_CUR) != 0) { fclose(f); return -1; } \\ if (fread(&nd, 4, 1, f) != 1) { fclose(f); return -1; } \\ for (dd = 0; dd < nd; dd++) { unsigned int d; fread(&d, 4, 1, f); tot *= d; } \\ if (tot != (count)) { \\ printf(\"Shape mismatch for tensor: expected %u, got %u\\n\", (unsigned)(count), tot); \\ fclose(f); return -1; \\ } \\ if (fread((dest), 4, tot, f) != tot) { fclose(f); return -1; } \\ } while(0) int i, j; /* token_embed.weight: [50257, 256]", "kind": "function", "line": 1326, "name": "READ_TENSOR", "signature": "READ_TENSOR(W.token_embed, VOCAB_SIZE * D_MODEL);"}, {"kind": "function", "line": 1501, "name": "READ_TENSOR16", "signature": "READ_TENSOR16(W.token_embed, VOCAB_SIZE * D_MODEL);"}, {"kind": "function", "line": 1605, "name": "volatile", "signature": "__asm__ volatile (\"rdtsc\" : \"=a\"(lo), \"=d\"(hi));"}, {"kind": "variable", "line": 25, "name": "stdin", "signature": "extern FILE *stdin;"}, {"kind": "variable", "line": 26, "name": "stdout", "signature": "extern FILE *stdout;"}, {"kind": "variable", "line": 27, "name": "stderr", "signature": "extern FILE *stderr;"}, {"kind": "macro", "line": 43, "name": "NULL", "signature": "#define NULL"}, {"kind": "macro", "line": 44, "name": "SEEK_SET", "signature": "#define SEEK_SET"}, {"kind": "macro", "line": 45, "name": "SEEK_CUR", "signature": "#define SEEK_CUR"}, {"kind": "macro", "line": 46, "name": "SEEK_END", "signature": "#define SEEK_END"}, {"kind": "macro", "line": 64, "name": "VOCAB_SIZE", "signature": "#define VOCAB_SIZE"}, {"kind": "macro", "line": 66, "name": "D_MODEL", "signature": "#define D_MODEL"}, {"kind": "macro", "line": 67, "name": "N_HEADS", "signature": "#define N_HEADS"}, {"kind": "macro", "line": 68, "name": "N_KV_HEADS", "signature": "#define N_KV_HEADS"}, {"kind": "macro", "line": 69, "name": "GQA_GROUPS", "signature": "#define GQA_GROUPS"}, {"kind": "macro", "line": 70, "name": "D_HEAD", "signature": "#define D_HEAD"}, {"kind": "macro", "line": 71, "name": "D_QUAT", "signature": "#define D_QUAT"}, {"kind": "macro", "line": 72, "name": "N_LAYERS", "signature": "#define N_LAYERS"}, {"kind": "macro", "line": 73, "name": "MAX_SEQ_LEN", "signature": "#define MAX_SEQ_LEN"}, {"kind": "macro", "line": 74, "name": "N_EXPERTS", "signature": "#define N_EXPERTS"}, {"kind": "macro", "line": 75, "name": "MOE_TOP_K", "signature": "#define MOE_TOP_K"}, {"kind": "macro", "line": 76, "name": "N_NODES", "signature": "#define N_NODES"}, {"kind": "macro", "line": 77, "name": "N_RADIAL", "signature": "#define N_RADIAL"}, {"kind": "macro", "line": 78, "name": "N_ANGULAR", "signature": "#define N_ANGULAR"}, {"kind": "macro", "line": 79, "name": "N_EDGE_TYPES", "signature": "#define N_EDGE_TYPES"}, {"kind": "macro", "line": 80, "name": "N_EDGES", "signature": "#define N_EDGES"}, {"kind": "macro", "line": 81, "name": "SPECTRAL_LATENT_DIM", "signature": "#define SPECTRAL_LATENT_DIM"}, {"kind": "macro", "line": 82, "name": "D_LAT_Q", "signature": "#define D_LAT_Q"}, {"kind": "macro", "line": 83, "name": "TORUS_GRID_H", "signature": "#define TORUS_GRID_H"}, {"kind": "macro", "line": 84, "name": "TORUS_GRID_W", "signature": "#define TORUS_GRID_W"}, {"kind": "macro", "line": 85, "name": "FREQ_W", "signature": "#define FREQ_W"}, {"kind": "macro", "line": 86, "name": "N_SPECTRAL_LAYERS", "signature": "#define N_SPECTRAL_LAYERS"}, {"kind": "macro", "line": 87, "name": "EXPERT_INNER", "signature": "#define EXPERT_INNER"}, {"kind": "macro", "line": 88, "name": "READOUT_INNER", "signature": "#define READOUT_INNER"}, {"kind": "macro", "line": 89, "name": "EOS_TOKEN", "signature": "#define EOS_TOKEN"}, {"kind": "macro", "line": 90, "name": "EMBED_INNER", "signature": "#define EMBED_INNER"}, {"kind": "macro", "line": 91, "name": "PI", "signature": "#define PI"}, {"kind": "macro", "line": 92, "name": "EPS_RMS", "signature": "#define EPS_RMS"}, {"kind": "macro", "line": 93, "name": "TORUS_TEMP", "signature": "#define TORUS_TEMP"}, {"kind": "macro", "line": 94, "name": "MAX_TOKENS", "signature": "#define MAX_TOKENS"}, {"kind": "macro", "line": 95, "name": "MAX_PROMPT_LEN", "signature": "#define MAX_PROMPT_LEN"}, {"kind": "macro", "line": 96, "name": "MAX_LINE", "signature": "#define MAX_LINE"}, {"kind": "macro", "line": 97, "name": "TOK_TAB_SIZE", "signature": "#define TOK_TAB_SIZE"}, {"kind": "macro", "line": 98, "name": "TOK_VOCAB_SIZE", "signature": "#define TOK_VOCAB_SIZE"}, {"kind": "macro", "line": 1300, "name": "SKIP_TENSOR", "signature": "#define SKIP_TENSOR()"}, {"kind": "macro", "line": 1310, "name": "READ_TENSOR", "signature": "#define READ_TENSOR(dest, count)"}, {"kind": "macro", "line": 1470, "name": "SKIP_TENSOR16", "signature": "#define SKIP_TENSOR16()"}, {"kind": "macro", "line": 1480, "name": "READ_TENSOR16", "signature": "#define READ_TENSOR16(dest, count)"}]}, {"doc": "vedit.c - fullscreen mini IDE for MiniOS, hosted on Nuklear.", "id": "progs/vedit/vedit.c", "kind": "module", "label": "vedit.c", "language": "c", "sha256": "81fe8aee9e9655d2", "symbol_count": 115, "symbols": [{"doc": "as \"untitled\". The on-screen Save/Find/Name/Done buttons are clickable too. Bounds are the kernel editor's (512 lines, 127 chars); full lines, overflowing joins and full buffers refuse whole, and a truncated load refuses to save. #include #include #include #include #include \"nuklear.h\" #include \"nuklear_minios.h\" /* ---- MiniOS syscalls vedit needs beyond the platform layer ----", "kind": "function", "line": 37, "name": "vedit_getc_raw", "signature": "static long vedit_getc_raw(long blocking)"}, {"kind": "function", "line": 44, "name": "vedit_set_title", "signature": "static long vedit_set_title(const char *t)"}, {"doc": "/* ---- Decoded keys above any byte ---- #define VEDIT_KEY_UP 1000 #define VEDIT_KEY_DOWN 1001 #define VEDIT_KEY_LEFT 1002 #define VEDIT_KEY_RIGHT 1003 #define VEDIT_KEY_HOME 1004 #define VEDIT_KEY_END 1005 #define VEDIT_KEY_PGUP 1006 #define VEDIT_KEY_PGDN 1007 #define VEDIT_KEY_DEL 1008 #define VEDIT_KEY_ESC 1009 /* ---- Theme: every ink named once, used everywhere ----", "kind": "function", "line": 100, "name": "vedit_c_bg", "signature": "static struct nk_color vedit_c_bg(void)"}, {"kind": "function", "line": 101, "name": "vedit_c_gutter", "signature": "static struct nk_color vedit_c_gutter(void)"}, {"kind": "function", "line": 102, "name": "vedit_c_default", "signature": "static struct nk_color vedit_c_default(void)"}, {"kind": "function", "line": 103, "name": "vedit_c_keyword", "signature": "static struct nk_color vedit_c_keyword(void)"}, {"kind": "function", "line": 104, "name": "vedit_c_string", "signature": "static struct nk_color vedit_c_string(void)"}, {"kind": "function", "line": 105, "name": "vedit_c_comment", "signature": "static struct nk_color vedit_c_comment(void)"}, {"kind": "function", "line": 106, "name": "vedit_c_number", "signature": "static struct nk_color vedit_c_number(void)"}, {"kind": "function", "line": 107, "name": "vedit_c_preproc", "signature": "static struct nk_color vedit_c_preproc(void)"}, {"kind": "function", "line": 108, "name": "vedit_c_header", "signature": "static struct nk_color vedit_c_header(void)"}, {"kind": "function", "line": 109, "name": "vedit_c_headtxt", "signature": "static struct nk_color vedit_c_headtxt(void)"}, {"kind": "function", "line": 110, "name": "vedit_c_status", "signature": "static struct nk_color vedit_c_status(void)"}, {"kind": "function", "line": 111, "name": "vedit_c_cursor", "signature": "static struct nk_color vedit_c_cursor(void)"}, {"kind": "function", "line": 112, "name": "vedit_ink", "signature": "static struct nk_color vedit_ink(int col)"}, {"kind": "function", "line": 168, "name": "vedit_set_msg", "signature": "static void vedit_set_msg(const char *s)"}, {"kind": "function", "line": 175, "name": "vedit_is_alpha", "signature": "static int vedit_is_alpha(int c)"}, {"kind": "function", "line": 179, "name": "vedit_is_digit", "signature": "static int vedit_is_digit(int c)"}, {"kind": "function", "line": 183, "name": "vedit_is_wordc", "signature": "static int vedit_is_wordc(int c)"}, {"kind": "function", "line": 187, "name": "vedit_is_kw", "signature": "static int vedit_is_kw(const char *table, const char *word, int wlen)"}, {"kind": "function", "line": 204, "name": "vedit_lang_of", "signature": "static int vedit_lang_of(const char *fname)"}, {"kind": "function", "line": 220, "name": "vedit_lang_name", "signature": "static const char *vedit_lang_name(int lang)"}, {"doc": "if (n >= 4 && fname[n - 4] == '.' && fname[n - 3] == 'l' && fname[n - 2] == 'u' && fname[n - 1] == 'a') return VEDIT_LANG_LUA; return VEDIT_LANG_TEXT; } static const char *vedit_lang_name(int lang) { if (lang == VEDIT_LANG_C) return \"C\"; if (lang == VEDIT_LANG_PY) return \"Python\"; if (lang == VEDIT_LANG_LUA) return \"Lua\"; return \"text\"; } /* Paint one line into vedit_cell; returns the state for the next line.", "kind": "function", "line": 229, "name": "vedit_scan_line", "signature": "static int vedit_scan_line(const char *t, int len, int st)"}, {"doc": "j++; } if (vedit_is_kw(vedit_kw_lua, w, wl)) { for (k = i; k < j; k++) vedit_cell[k] = VEDIT_COL_KEYWORD; } i = j; } else { i++; } } return 0; } /* Multi-line state at the start of a row: replay earlier lines.", "kind": "function", "line": 515, "name": "vedit_state_at", "signature": "static int vedit_state_at(int row)"}, {"kind": "function", "line": 523, "name": "vedit_row_ptr", "signature": "static char *vedit_row_ptr(int idx)"}, {"kind": "function", "line": 527, "name": "vedit_clamp", "signature": "static void vedit_clamp(void)"}, {"kind": "function", "line": 539, "name": "vedit_follow", "signature": "static void vedit_follow(void)"}, {"doc": "} static void vedit_follow(void) { int textw = vedit_cols - vedit_gutter_w; if (vedit_cy < vedit_top) vedit_top = vedit_cy; if (vedit_cy >= vedit_top + vedit_code_rows) vedit_top = vedit_cy - vedit_code_rows + 1; if (vedit_top < 0) vedit_top = 0; if (vedit_cx < vedit_hoff) vedit_hoff = vedit_cx; if (vedit_cx >= vedit_hoff + textw) vedit_hoff = vedit_cx - textw + 1; if (vedit_hoff < 0) vedit_hoff = 0; } /* ---- Editing ops (fail closed: refuse whole, never truncate) ----", "kind": "function", "line": 552, "name": "vedit_insert_char", "signature": "static void vedit_insert_char(int c)"}, {"kind": "function", "line": 578, "name": "vedit_delete_line_at", "signature": "static void vedit_delete_line_at(int idx)"}, {"kind": "function", "line": 589, "name": "vedit_backspace", "signature": "static void vedit_backspace(void)"}, {"kind": "function", "line": 620, "name": "vedit_delete_char", "signature": "static void vedit_delete_char(void)"}, {"kind": "function", "line": 648, "name": "vedit_split", "signature": "static void vedit_split(void)"}, {"kind": "function", "line": 696, "name": "vedit_tab", "signature": "static void vedit_tab(void)"}, {"kind": "function", "line": 723, "name": "vedit_find", "signature": "static void vedit_find(const char *needle)"}, {"doc": "if (m == nlen) { char nb[32]; vedit_cy = r; vedit_cx = k; snprintf(nb, sizeof(nb), \"found line %d (wrapped)\", r + 1); vedit_set_msg(nb); return; } } } vedit_set_msg(\"not found\"); } /* ---- Load/save (byte-parity with the kernel editor: NL between lines) --", "kind": "function", "line": 773, "name": "vedit_save", "signature": "static int vedit_save(void)"}, {"kind": "function", "line": 816, "name": "vedit_load", "signature": "static int vedit_load(void)"}, {"doc": "vedit_trunc = 1; } } } if (used > 0 && idx < VEDIT_MAX_LINES) { vedit_used[idx] = used; idx++; } vedit_count = idx; fclose(f); return 1; } /* ---- Keyboard: GETC_RAW bytes decoded into extended key codes ----", "kind": "function", "line": 874, "name": "vedit_getc_blocking", "signature": "static long vedit_getc_blocking(void)"}, {"kind": "function", "line": 878, "name": "vedit_poll", "signature": "static int vedit_poll(void)"}, {"kind": "function", "line": 888, "name": "vedit_read_key", "signature": "static int vedit_read_key(void)"}, {"doc": "if (p1 == 'F') return VEDIT_KEY_END; if (p1 == '3' || p1 == '5' || p1 == '6') { p2 = vedit_poll(); if (p2 == '~') { if (p1 == '3') return VEDIT_KEY_DEL; if (p1 == '5') return VEDIT_KEY_PGUP; return VEDIT_KEY_PGDN; } return VEDIT_KEY_ESC; } return VEDIT_KEY_ESC; } /* ---- Serial ANSI mirror (^L dump + save lines; the UI itself is pixels) --", "kind": "function", "line": 918, "name": "vedit_ansi_for", "signature": "static void vedit_ansi_for(int col)"}, {"kind": "function", "line": 926, "name": "vedit_console_dump", "signature": "static void vedit_console_dump(void)"}, {"kind": "function", "line": 965, "name": "vedit_prompt_open", "signature": "static void vedit_prompt_open(const char *label, int mode)"}, {"kind": "function", "line": 976, "name": "vedit_prompt_find", "signature": "static void vedit_prompt_find(void)"}, {"kind": "function", "line": 980, "name": "vedit_prompt_saveas", "signature": "static void vedit_prompt_saveas(void)"}, {"kind": "function", "line": 990, "name": "vedit_draw_row", "signature": "static void vedit_draw_row(struct nk_command_buffer *canvas,\n struct nk..."}, {"kind": "function", "line": 1068, "name": "vedit_draw_ui", "signature": "static void vedit_draw_ui(struct nk_context *ctx, struct nk_user_font *font,\n ..."}, {"doc": "vedit_cw), (float)(vedit_status_y + 2), (float)vedit_cw, (float)vedit_ch), 0, vedit_c_cursor()); } nk_draw_text(canvas, nk_rect((float)vedit_cw, (float)vedit_help_y, (float)(NK_W - 2 * vedit_cw), (float)vedit_ch), help, (int)strlen(help), font, vedit_c_bg(), vedit_c_gutter()); nk_end(ctx); } /* Route one decoded key: prompt captures everything while open.", "kind": "function", "line": 1191, "name": "vedit_prompt_key", "signature": "static void vedit_prompt_key(int key)"}, {"doc": "if (key == '\\b' || key == 127) { if (vedit_prompt_pos > 0) { vedit_prompt_pos--; vedit_prompt_buf[vedit_prompt_pos] = 0; } return; } if (key >= 32 && key < 127 && vedit_prompt_pos < VEDIT_LINE_MAX - 1) { vedit_prompt_buf[vedit_prompt_pos++] = (char)key; vedit_prompt_buf[vedit_prompt_pos] = 0; } } /* Route one decoded key: prompt captures everything while open.", "kind": "function", "line": 1248, "name": "vedit_key", "signature": "static void vedit_key(int key, int *quit, int *save_and_quit)"}, {"kind": "function", "line": 1323, "name": "vedit_sync_title", "signature": "static void vedit_sync_title(void)"}, {"kind": "function", "line": 1333, "name": "vedit_gui_run", "signature": "static void vedit_gui_run(void)"}, {"doc": "} } if (save_and_quit) { if (vedit_save() == 0) printf(\"vedit: wrote %d line(s) to %s\\n\", vedit_count, vedit_fname); } nk_free(&ctx); nk_sys_vga_mode(0); } /* ---- Headless selftest: one frame through the whole pipeline ----", "kind": "function", "line": 1404, "name": "vedit_selftest", "signature": "static int vedit_selftest(void)"}, {"kind": "function", "line": 1471, "name": "main", "signature": "int main(int argc, char **argv)"}, {"kind": "function", "line": 6, "name": "desktop", "signature": "* window on the desktop (the DOOM/Nuklear/piano pattern), so the shell * stays visible and the desktop keeps working around it. * * Every platform fact comes from minios_abi.h or a syscall, never from"}, {"kind": "function", "line": 15, "name": "text", "signature": "* text (serial only while the gfx mode owns the display). * * Interaction: arrows move, typing inserts, Enter splits with * auto-indent, Tab indents, Backspace/Delete erase and join lines, * Home/End/"}, {"kind": "function", "line": 39, "name": "volatile", "signature": "__asm__ volatile(\"syscall\" : \"=a\"(ret) : \"a\"(MINIOS_SYS_GETC_RAW), \"D\"(blocking) : \"rcx\", \"r11\", \"memory\");"}, {"kind": "function", "line": 172, "name": "memcpy", "signature": "memcpy(vedit_msg, s, n);"}, {"kind": "function", "line": 584, "name": "memmove", "signature": "memmove(vedit_row_ptr(k), vedit_row_ptr(k + 1), VEDIT_LINE_MAX);"}, {"kind": "function", "line": 746, "name": "snprintf", "signature": "snprintf(nb, sizeof(nb), \"found line %d\", r + 1);"}, {"kind": "function", "line": 790, "name": "fclose", "signature": "fclose(f);"}, {"kind": "function", "line": 932, "name": "printf", "signature": "printf(\"--- %s [%s] %d lines ---\\n\", vedit_fname, vedit_lang_name(vedit_lang), vedit_count);"}, {"kind": "function", "line": 946, "name": "putchar", "signature": "putchar(l[c]);"}, {"kind": "function", "line": 951, "name": "fflush", "signature": "fflush(stdout);"}, {"kind": "function", "line": 1013, "name": "nk_draw_text", "signature": "nk_draw_text(canvas, nk_rect((float)(x - vedit_gutter_w * vedit_cw), (float)y, (float)(vedit_gutter_w * vedit_cw), (float)vedit_ch), num, (int)strlen(num), font, bg, vedit_c_gutter());"}, {"kind": "function", "line": 1019, "name": "nk_fill_rect", "signature": "nk_fill_rect(canvas, nk_rect((float)x, (float)y, (float)((vedit_cols - vedit_gutter_w) * vedit_cw), (float)vedit_ch), 0, bg);"}, {"kind": "function", "line": 1095, "name": "nk_end", "signature": "nk_end(ctx);"}, {"kind": "function", "line": 1344, "name": "nk_sys_vga_mode", "signature": "nk_sys_vga_mode(1);"}, {"kind": "function", "line": 1346, "name": "nk_build_palette", "signature": "nk_build_palette(pal768);"}, {"kind": "function", "line": 1347, "name": "nk_sys_palette", "signature": "nk_sys_palette(pal768);"}, {"kind": "function", "line": 1348, "name": "nk_sys_fb_info", "signature": "nk_sys_fb_info(&fw, &fh, &fp);"}, {"kind": "function", "line": 1379, "name": "nk_input_begin", "signature": "nk_input_begin(&ctx);"}, {"kind": "function", "line": 1380, "name": "nk_input_end", "signature": "nk_input_end(&ctx);"}, {"kind": "function", "line": 1382, "name": "nk_rasterize", "signature": "nk_rasterize(&ctx);"}, {"kind": "function", "line": 1385, "name": "nk_clear", "signature": "nk_clear(&ctx);"}, {"kind": "function", "line": 1398, "name": "nk_free", "signature": "nk_free(&ctx);"}, {"kind": "function", "line": 1503, "name": "memset", "signature": "memset(vedit_used, 0, VEDIT_MAX_LINES * sizeof(int));"}, {"kind": "function", "line": 1520, "name": "free", "signature": "free(vedit_pool);"}, {"kind": "macro", "line": 54, "name": "VEDIT_MAX_LINES", "signature": "#define VEDIT_MAX_LINES"}, {"kind": "macro", "line": 55, "name": "VEDIT_LINE_MAX", "signature": "#define VEDIT_LINE_MAX"}, {"kind": "macro", "line": 56, "name": "VEDIT_LINE_USED", "signature": "#define VEDIT_LINE_USED"}, {"kind": "macro", "line": 57, "name": "VEDIT_FILE_MAX", "signature": "#define VEDIT_FILE_MAX"}, {"kind": "macro", "line": 58, "name": "VEDIT_FNAME_MAX", "signature": "#define VEDIT_FNAME_MAX"}, {"kind": "macro", "line": 59, "name": "VEDIT_DEFAULT_FILE", "signature": "#define VEDIT_DEFAULT_FILE"}, {"kind": "macro", "line": 60, "name": "VEDIT_MSG_MAX", "signature": "#define VEDIT_MSG_MAX"}, {"kind": "macro", "line": 61, "name": "VEDIT_WORD_MAX", "signature": "#define VEDIT_WORD_MAX"}, {"kind": "macro", "line": 62, "name": "VEDIT_TAB_W", "signature": "#define VEDIT_TAB_W"}, {"kind": "macro", "line": 63, "name": "VEDIT_SEQ_SPINS", "signature": "#define VEDIT_SEQ_SPINS"}, {"kind": "macro", "line": 64, "name": "VEDIT_UI_MEMORY", "signature": "#define VEDIT_UI_MEMORY"}, {"kind": "macro", "line": 67, "name": "VEDIT_LANG_TEXT", "signature": "#define VEDIT_LANG_TEXT"}, {"kind": "macro", "line": 68, "name": "VEDIT_LANG_C", "signature": "#define VEDIT_LANG_C"}, {"kind": "macro", "line": 69, "name": "VEDIT_LANG_PY", "signature": "#define VEDIT_LANG_PY"}, {"kind": "macro", "line": 70, "name": "VEDIT_LANG_LUA", "signature": "#define VEDIT_LANG_LUA"}, {"kind": "macro", "line": 73, "name": "VEDIT_COL_DEFAULT", "signature": "#define VEDIT_COL_DEFAULT"}, {"kind": "macro", "line": 74, "name": "VEDIT_COL_KEYWORD", "signature": "#define VEDIT_COL_KEYWORD"}, {"kind": "macro", "line": 75, "name": "VEDIT_COL_STRING", "signature": "#define VEDIT_COL_STRING"}, {"kind": "macro", "line": 76, "name": "VEDIT_COL_COMMENT", "signature": "#define VEDIT_COL_COMMENT"}, {"kind": "macro", "line": 77, "name": "VEDIT_COL_NUMBER", "signature": "#define VEDIT_COL_NUMBER"}, {"kind": "macro", "line": 78, "name": "VEDIT_COL_PREPROC", "signature": "#define VEDIT_COL_PREPROC"}, {"kind": "macro", "line": 81, "name": "VEDIT_ST_BLOCK", "signature": "#define VEDIT_ST_BLOCK"}, {"kind": "macro", "line": 82, "name": "VEDIT_ST_PY3S", "signature": "#define VEDIT_ST_PY3S"}, {"kind": "macro", "line": 83, "name": "VEDIT_ST_PY3D", "signature": "#define VEDIT_ST_PY3D"}, {"kind": "macro", "line": 84, "name": "VEDIT_ST_LUABLK", "signature": "#define VEDIT_ST_LUABLK"}, {"kind": "macro", "line": 85, "name": "VEDIT_ST_LUASTR", "signature": "#define VEDIT_ST_LUASTR"}, {"kind": "macro", "line": 88, "name": "VEDIT_KEY_UP", "signature": "#define VEDIT_KEY_UP"}, {"kind": "macro", "line": 89, "name": "VEDIT_KEY_DOWN", "signature": "#define VEDIT_KEY_DOWN"}, {"kind": "macro", "line": 90, "name": "VEDIT_KEY_LEFT", "signature": "#define VEDIT_KEY_LEFT"}, {"kind": "macro", "line": 91, "name": "VEDIT_KEY_RIGHT", "signature": "#define VEDIT_KEY_RIGHT"}, {"kind": "macro", "line": 92, "name": "VEDIT_KEY_HOME", "signature": "#define VEDIT_KEY_HOME"}, {"kind": "macro", "line": 93, "name": "VEDIT_KEY_END", "signature": "#define VEDIT_KEY_END"}, {"kind": "macro", "line": 94, "name": "VEDIT_KEY_PGUP", "signature": "#define VEDIT_KEY_PGUP"}, {"kind": "macro", "line": 95, "name": "VEDIT_KEY_PGDN", "signature": "#define VEDIT_KEY_PGDN"}, {"kind": "macro", "line": 96, "name": "VEDIT_KEY_DEL", "signature": "#define VEDIT_KEY_DEL"}, {"kind": "macro", "line": 97, "name": "VEDIT_KEY_ESC", "signature": "#define VEDIT_KEY_ESC"}, {"kind": "macro", "line": 961, "name": "VEDIT_PROMPT_FIND", "signature": "#define VEDIT_PROMPT_FIND"}, {"kind": "macro", "line": 962, "name": "VEDIT_PROMPT_GOTO", "signature": "#define VEDIT_PROMPT_GOTO"}, {"kind": "macro", "line": 963, "name": "VEDIT_PROMPT_NAME", "signature": "#define VEDIT_PROMPT_NAME"}]}, {"doc": "MiniOS QEMU guest agent (QGA).", "id": "qga.c", "kind": "module", "label": "qga.c", "language": "c", "sha256": "df505ed2f5f7cda7", "symbol_count": 31, "symbols": [{"kind": "struct", "line": 49, "name": "qga_pair"}, {"doc": "================================================================ COM2 UART * ================================================================", "kind": "function", "line": 26, "name": "qga_tx_ready", "signature": "static int qga_tx_ready(void)"}, {"kind": "function", "line": 28, "name": "qga_rx_ready", "signature": "static int qga_rx_ready(void)"}, {"kind": "function", "line": 29, "name": "qga_putc", "signature": "static void qga_putc(char c)"}, {"kind": "function", "line": 34, "name": "qga_init", "signature": "void qga_init(void)"}, {"kind": "function", "line": 55, "name": "qga_ws", "signature": "static int qga_ws(char c)"}, {"doc": "Parse a JSON object whose members are stored flat into out[*count..]: a nested object's members keep the parent key as a prefix (`arguments.id`). Only string/int/null/bool values are accepted; arrays and deeper nesting are rejected fail-closed. Returns 1 on success, 0 on malformed or * overflowing input.", "kind": "function", "line": 65, "name": "qga_parse_object", "signature": "static int qga_parse_object(const char **pp, struct qga_pair *out, int max,\n ..."}, {"doc": "Parse a request line into the flat pair table. Returns the number of pairs, * or -1 on malformed/overflowing input.", "kind": "function", "line": 147, "name": "qga_parse_flat", "signature": "static int qga_parse_flat(const char *s, struct qga_pair *out, int max)"}, {"kind": "function", "line": 157, "name": "qga_get_str", "signature": "static const char *qga_get_str(const struct qga_pair *pairs, int n, const char *key)"}, {"kind": "function", "line": 165, "name": "qga_get_int", "signature": "static int qga_get_int(const struct qga_pair *pairs, int n, const char *key, long *out)"}, {"doc": "================================================================ Response writer * ================================================================ static char qga_resp[QGA_RESP_MAX]; static int qga_resp_len; static int qga_sync_pending; /* guest-sync-delimited: 0xFF first", "kind": "function", "line": 183, "name": "qga_resp_reset", "signature": "static void qga_resp_reset(void)"}, {"kind": "function", "line": 185, "name": "qga_resp_puts", "signature": "static void qga_resp_puts(const char *s)"}, {"kind": "function", "line": 193, "name": "qga_resp_putc_enc", "signature": "static void qga_resp_putc_enc(char c)"}, {"doc": "Append the decimal form of v (a separate helper so no varargs forwarding is * needed; the kernel formatter is not re-entrant with a stored va_list).", "kind": "function", "line": 201, "name": "qga_resp_put_long", "signature": "static void qga_resp_put_long(long v)"}, {"kind": "function", "line": 209, "name": "qga_err", "signature": "static void qga_err(const char *klass, const char *desc)"}, {"kind": "function", "line": 217, "name": "qga_puts_resp", "signature": "static void qga_puts_resp(void)"}, {"kind": "function", "line": 230, "name": "qga_b64_encode", "signature": "static void qga_b64_encode(const unsigned char *in, int n)"}, {"kind": "function", "line": 280, "name": "qga_cmd_get_time", "signature": "static void qga_cmd_get_time(void)"}, {"doc": "guest-exec runs a shell command line; output goes to the console (the `>` redirect still captures it). Queued so the shell executes it at its next * loop top, which raw_blocking_getc forces by returning a newline.", "kind": "function", "line": 306, "name": "qga_cmd_exec", "signature": "static void qga_cmd_exec(const struct qga_pair *pairs, int n)"}, {"kind": "function", "line": 315, "name": "qga_cmd_shutdown", "signature": "static void qga_cmd_shutdown(const struct qga_pair *pairs, int n)"}, {"kind": "function", "line": 328, "name": "qga_file_size", "signature": "static int qga_file_size(const KFILE *f)"}, {"kind": "function", "line": 333, "name": "qga_cmd_file_open", "signature": "static void qga_cmd_file_open(const struct qga_pair *pairs, int n)"}, {"kind": "function", "line": 359, "name": "qga_cmd_file_read", "signature": "static void qga_cmd_file_read(const struct qga_pair *pairs, int n)"}, {"kind": "function", "line": 383, "name": "qga_cmd_file_close", "signature": "static void qga_cmd_file_close(const struct qga_pair *pairs, int n)"}, {"doc": "================================================================ Dispatch + poll * ================================================================", "kind": "function", "line": 400, "name": "qga_dispatch", "signature": "static void qga_dispatch(struct qga_pair *pairs, int n)"}, {"doc": "Accumulate bytes until a complete line, then parse and answer it. Callers * call it once per idle spin of the shell's raw input loop.", "kind": "function", "line": 446, "name": "qga_poll", "signature": "void qga_poll(void)"}, {"kind": "function", "line": 9, "name": "channel", "signature": "* * Polled channel (no interrupt controller): qga_init sets up COM2 and * qga_poll, called from raw_blocking_getc, services one complete line per * call. Every input path is bounded and fail-closed: a"}, {"kind": "function", "line": 32, "name": "outb", "signature": "outb(QGA_COM2_BASE + QGA_UART_THR, (unsigned char)c);"}, {"kind": "function", "line": 90, "name": "kstrcpy", "signature": "else kstrcpy(np, key);"}, {"kind": "function", "line": 312, "name": "shell_queue_launch", "signature": "shell_queue_launch(path);"}, {"kind": "function", "line": 391, "name": "kfclose", "signature": "kfclose(qga_files[handle]);"}]}, {"doc": "ifndef QGA_H define QGA_H ========== QEMU guest agent channel (COM2, ISA 16550) ==========", "id": "qga.h", "kind": "module", "label": "qga.h", "language": "h", "sha256": "05289b555a7a5906", "symbol_count": 29, "symbols": [{"doc": "guest-file handles: a small table of open ramdisk files indexed by the * integer handle QEMU's protocol expects. define QGA_FILE_MAX 8", "kind": "function", "line": 47, "name": "qga_init", "signature": "void qga_init(void);"}, {"kind": "function", "line": 49, "name": "qga_poll", "signature": "void qga_poll(void);"}, {"kind": "macro", "line": 2, "name": "QGA_H", "signature": "#define QGA_H"}, {"kind": "macro", "line": 5, "name": "QGA_COM2_BASE", "signature": "#define QGA_COM2_BASE"}, {"kind": "macro", "line": 6, "name": "QGA_COM2_IRQ", "signature": "#define QGA_COM2_IRQ"}, {"kind": "macro", "line": 9, "name": "QGA_UART_THR", "signature": "#define QGA_UART_THR"}, {"kind": "macro", "line": 10, "name": "QGA_UART_RBR", "signature": "#define QGA_UART_RBR"}, {"kind": "macro", "line": 11, "name": "QGA_UART_DLL", "signature": "#define QGA_UART_DLL"}, {"kind": "macro", "line": 12, "name": "QGA_UART_DLM", "signature": "#define QGA_UART_DLM"}, {"kind": "macro", "line": 13, "name": "QGA_UART_IER", "signature": "#define QGA_UART_IER"}, {"kind": "macro", "line": 14, "name": "QGA_UART_FCR", "signature": "#define QGA_UART_FCR"}, {"kind": "macro", "line": 15, "name": "QGA_UART_LCR", "signature": "#define QGA_UART_LCR"}, {"kind": "macro", "line": 16, "name": "QGA_UART_LSR", "signature": "#define QGA_UART_LSR"}, {"kind": "macro", "line": 17, "name": "QGA_UART_MCR", "signature": "#define QGA_UART_MCR"}, {"kind": "macro", "line": 18, "name": "QGA_UART_LSR_TX_RDY", "signature": "#define QGA_UART_LSR_TX_RDY"}, {"kind": "macro", "line": 19, "name": "QGA_UART_LSR_RX_RDY", "signature": "#define QGA_UART_LSR_RX_RDY"}, {"kind": "macro", "line": 20, "name": "QGA_UART_LCR_DLAB", "signature": "#define QGA_UART_LCR_DLAB"}, {"kind": "macro", "line": 21, "name": "QGA_UART_LCR_8N1", "signature": "#define QGA_UART_LCR_8N1"}, {"kind": "macro", "line": 22, "name": "QGA_UART_FCR_CFG", "signature": "#define QGA_UART_FCR_CFG"}, {"kind": "macro", "line": 23, "name": "QGA_UART_MCR_CFG", "signature": "#define QGA_UART_MCR_CFG"}, {"kind": "macro", "line": 24, "name": "QGA_BAUD_DIVISOR", "signature": "#define QGA_BAUD_DIVISOR"}, {"kind": "macro", "line": 30, "name": "QGA_LINE_MAX", "signature": "#define QGA_LINE_MAX"}, {"kind": "macro", "line": 31, "name": "QGA_RESP_MAX", "signature": "#define QGA_RESP_MAX"}, {"kind": "macro", "line": 34, "name": "QGA_FILE_READ_MAX", "signature": "#define QGA_FILE_READ_MAX"}, {"kind": "macro", "line": 37, "name": "QGA_MAX_PAIRS", "signature": "#define QGA_MAX_PAIRS"}, {"kind": "macro", "line": 38, "name": "QGA_KEY_MAX", "signature": "#define QGA_KEY_MAX"}, {"kind": "macro", "line": 39, "name": "QGA_STR_MAX", "signature": "#define QGA_STR_MAX"}, {"kind": "macro", "line": 42, "name": "QGA_MAX_DEPTH", "signature": "#define QGA_MAX_DEPTH"}, {"kind": "macro", "line": 46, "name": "QGA_FILE_MAX", "signature": "#define QGA_FILE_MAX"}]}, {"doc": "ifndef RANDMIX_H define RANDMIX_H randmix.h -- entropy mixer for getrandom (318).", "id": "randmix.h", "kind": "module", "label": "randmix.h", "language": "h", "sha256": "222e2c37c7745c34", "symbol_count": 2, "symbols": [{"kind": "function", "line": 11, "name": "source", "signature": "* source (all-zero seed) still walks, because the increment is inside\n * the mixer, not in the ca..."}, {"kind": "macro", "line": 2, "name": "RANDMIX_H", "signature": "#define RANDMIX_H"}]}, {"doc": "ifndef RCU_H define RCU_H Docstring: rcu.h -- Read-copy-update, lite epoch edition.", "id": "rcu.h", "kind": "module", "label": "rcu.h", "language": "h", "sha256": "cf824b9e12480c1a", "symbol_count": 18, "symbols": [{"kind": "function", "line": 30, "name": "retirement", "signature": "* retirement (the writer keeps ownership) instead of dropping the free. * Callbacks run in tick context with interrupts disabled, so they must * be short and non-blocking. rcu_synchronize spins on qui"}, {"doc": "define RCU_OK 0 define RCU_ERR_FULL (-1) define RCU_ERR_TIMEOUT (-2)", "kind": "function", "line": 48, "name": "void", "signature": "typedef void (*rcu_cb_t)(void *arg);"}, {"kind": "function", "line": 50, "name": "rcu_init", "signature": "void rcu_init(void);"}, {"kind": "function", "line": 52, "name": "rcu_read_lock", "signature": "void rcu_read_lock(void);"}, {"kind": "function", "line": 53, "name": "rcu_read_unlock", "signature": "void rcu_read_unlock(void);"}, {"kind": "function", "line": 54, "name": "rcu_deref", "signature": "void *rcu_deref(void *volatile *pp);"}, {"kind": "function", "line": 55, "name": "rcu_publish", "signature": "void rcu_publish(void *volatile *pp, void *v);"}, {"kind": "function", "line": 56, "name": "rcu_call", "signature": "long rcu_call(rcu_cb_t fn, void *arg);"}, {"kind": "function", "line": 57, "name": "rcu_note_tick", "signature": "void rcu_note_tick(int cpu);"}, {"kind": "function", "line": 58, "name": "rcu_note_idle", "signature": "void rcu_note_idle(int cpu);"}, {"kind": "function", "line": 59, "name": "rcu_poll", "signature": "void rcu_poll(void);"}, {"kind": "function", "line": 60, "name": "rcu_synchronize", "signature": "long rcu_synchronize(void);"}, {"kind": "macro", "line": 2, "name": "RCU_H", "signature": "#define RCU_H"}, {"kind": "macro", "line": 41, "name": "RCU_CB_MAX", "signature": "#define RCU_CB_MAX"}, {"kind": "macro", "line": 43, "name": "RCU_SYNC_SPINS", "signature": "#define RCU_SYNC_SPINS"}, {"kind": "macro", "line": 44, "name": "RCU_OK", "signature": "#define RCU_OK"}, {"kind": "macro", "line": 46, "name": "RCU_ERR_FULL", "signature": "#define RCU_ERR_FULL"}, {"kind": "macro", "line": 47, "name": "RCU_ERR_TIMEOUT", "signature": "#define RCU_ERR_TIMEOUT"}]}, {"doc": "ifndef RTC_H define RTC_H", "id": "rtc.h", "kind": "module", "label": "rtc.h", "language": "h", "sha256": "30630dc5da0d8fe6", "symbol_count": 6, "symbols": [{"doc": "Days since 1970-01-01 for a civil date (Howard Hinnant's algorithm, pure integer arithmetic, no tables). Powers rtc_wall_seconds and the host suite (tests/test_rtc.c); valid for the full 2000..2099 CMOS window and far beyond. Lives here (not in rtc.c) so the host test can * compile it without the port-I/O half of the driver.", "kind": "function", "line": 18, "name": "rtc_days_from_civil", "signature": "static inline long rtc_days_from_civil(long y, long m, long d)"}, {"doc": "ifndef RTC_H define RTC_H", "kind": "function", "line": 3, "name": "rtc_read_tod", "signature": "int rtc_read_tod(int *hour, int *min, int *sec);"}, {"doc": "Calendar date from the CMOS RTC (registers 0x07-0x09). Full year (CMOS carries two digits; 0..99 maps to 2000..2099). Fail-closed like the time reader: impossible month/day (including Feb 29 on a non-leap year) or a clock that never stops updating returns 0 and * writes nothing.", "kind": "function", "line": 11, "name": "rtc_read_date", "signature": "int rtc_read_date(int *year, int *mon, int *day);"}, {"kind": "function", "line": 15, "name": "suite", "signature": "* host suite (tests/test_rtc.c);"}, {"doc": "Wall-clock seconds since the Unix epoch from one RTC snapshot. Returns 1 and stores the value, or 0 on any RTC failure (caller decides the fallback; TLS treats 0 as \"no clock\" and fails the * chain check closed downstream).", "kind": "function", "line": 33, "name": "rtc_wall_seconds", "signature": "int rtc_wall_seconds(unsigned long *out);"}, {"kind": "macro", "line": 2, "name": "RTC_H", "signature": "#define RTC_H"}]}, {"doc": "ifndef SANITIZE_H define SANITIZE_H Docstring: sanitize.h -- Single choke point for syscall argument checks.", "id": "sanitize.h", "kind": "module", "label": "sanitize.h", "language": "h", "sha256": "2fcd2abccc8fb13a", "symbol_count": 5, "symbols": [{"kind": "macro", "line": 2, "name": "SANITIZE_H", "signature": "#define SANITIZE_H"}, {"kind": "macro", "line": 31, "name": "SANITIZE_LEN_NEG", "signature": "#define SANITIZE_LEN_NEG(var)"}, {"kind": "macro", "line": 36, "name": "SANITIZE_RANGE", "signature": "#define SANITIZE_RANGE(ptr, len)"}, {"kind": "macro", "line": 42, "name": "SANITIZE_STR", "signature": "#define SANITIZE_STR(ptr, maxlen)"}, {"kind": "macro", "line": 48, "name": "SANITIZE_COPY_IN", "signature": "#define SANITIZE_COPY_IN(kbuf, uptr, count, elemsz)"}]}, {"doc": "ifndef SB16_H define SB16_H Sound Blaster 16 DMA audio driver contract.", "id": "sb16.h", "kind": "module", "label": "sb16.h", "language": "h", "sha256": "3d68c01bf6b1b8bb", "symbol_count": 27, "symbols": [{"doc": "Per-stream ring buffer. Each stream gets SB16_STREAM_BUF bytes of kernel-side buffering so multiple producers never interfere. At 22050 Hz * 8-bit mono that is ~366 ms per stream. #define SB16_STREAMS 4u /* max concurrent mixer streams #define SB16_STREAM_BUF (SB16_PCM_BUF * 4u) /* 8192 bytes per stream /* Mixer stream state.", "kind": "struct", "line": 46, "name": "sb16_stream_t"}, {"kind": "struct", "line": 55, "name": "sb16_counters_t"}, {"kind": "function", "line": 64, "name": "sb16_init", "signature": "int sb16_init(void);"}, {"kind": "function", "line": 66, "name": "sb16_present", "signature": "int sb16_present(void);"}, {"kind": "function", "line": 67, "name": "sb16_tone", "signature": "void sb16_tone(unsigned freq);"}, {"kind": "function", "line": 68, "name": "sb16_irq", "signature": "void sb16_irq(void);"}, {"kind": "function", "line": 69, "name": "sb16_poll", "signature": "void sb16_poll(void);"}, {"doc": "Legacy single-stream API (maps to mixer stream 0: pcm_open allocates it, * pcm_submit forwards into it, pcm_close releases it).", "kind": "function", "line": 73, "name": "sb16_pcm_open", "signature": "void sb16_pcm_open(void);"}, {"kind": "function", "line": 74, "name": "sb16_pcm_submit", "signature": "int sb16_pcm_submit(const unsigned char *pcm, unsigned len);"}, {"kind": "function", "line": 75, "name": "sb16_pcm_close", "signature": "void sb16_pcm_close(void);"}, {"kind": "function", "line": 76, "name": "sb16_pump", "signature": "void sb16_pump(void);"}, {"doc": "Legacy single-stream API (maps to mixer stream 0: pcm_open allocates it, * pcm_submit forwards into it, pcm_close releases it). void sb16_pcm_open(void); int sb16_pcm_submit(const unsigned char *pcm, unsigned len); void sb16_pcm_close(void); void sb16_pump(void); /* Mixer stream API.", "kind": "function", "line": 79, "name": "sb16_stream_open", "signature": "int sb16_stream_open(void);"}, {"kind": "function", "line": 80, "name": "sb16_stream_close", "signature": "void sb16_stream_close(int id);"}, {"kind": "function", "line": 81, "name": "sb16_stream_submit", "signature": "int sb16_stream_submit(int id, const unsigned char *pcm, unsigned len);"}, {"kind": "function", "line": 82, "name": "sb16_stream_volume", "signature": "void sb16_stream_volume(int id, unsigned char vol);"}, {"kind": "function", "line": 83, "name": "sb16_stream_count", "signature": "int sb16_stream_count(void);"}, {"kind": "function", "line": 84, "name": "sb16_ring_free", "signature": "unsigned sb16_ring_free(void);"}, {"kind": "function", "line": 86, "name": "sb16_mode_active", "signature": "int sb16_mode_active(void);"}, {"kind": "function", "line": 87, "name": "sb16_counters", "signature": "void sb16_counters(sb16_counters_t *out);"}, {"kind": "macro", "line": 2, "name": "SB16_H", "signature": "#define SB16_H"}, {"kind": "macro", "line": 31, "name": "SB16_PCM_BUF", "signature": "#define SB16_PCM_BUF"}, {"kind": "macro", "line": 33, "name": "SB16_PCM_RATE", "signature": "#define SB16_PCM_RATE"}, {"kind": "macro", "line": 34, "name": "SB16_SLOTS", "signature": "#define SB16_SLOTS"}, {"kind": "macro", "line": 35, "name": "SB16_RING_CAP", "signature": "#define SB16_RING_CAP"}, {"kind": "macro", "line": 36, "name": "SB16_ARM_PERIOD_MS", "signature": "#define SB16_ARM_PERIOD_MS"}, {"kind": "macro", "line": 42, "name": "SB16_STREAMS", "signature": "#define SB16_STREAMS"}, {"kind": "macro", "line": 43, "name": "SB16_STREAM_BUF", "signature": "#define SB16_STREAM_BUF"}]}, {"doc": "ifndef SCHED_H define SCHED_H include include \"spinlock.h\" include \"vma.h\" ---- Process states ----", "id": "sched.h", "kind": "module", "label": "sched.h", "language": "h", "sha256": "36b0f56230b25bab", "symbol_count": 86, "symbols": [{"doc": "Fields: cpu_id: index into cpus[], 0 for BSP cur_pid: PID of the running process on this CPU syscall_kstack: kernel stack top exchanged on syscall entry kstack_top: per-CPU interrupt stack top last_sched_tick: sys_ticks value of last context switch (Phase 2) lapic_id: APIC ID from hardware is_bsp: 1 for the boot processor, 0 for APs idle: 1 when CPU is in idle loop (Phase 2: idle thread) irq_depth: interrupt nesting count for irqsave (Phase 3) idle_proc: pointer to idle process (Phase 2) run_queue: opaque pointer to per-CPU run queue (Phase 2)", "kind": "struct", "line": 144, "name": "cpu"}, {"doc": "Transient: the owner CPU is between \"decided to switch away\" and \"context fully saved\". Never claimable: a steal here would resume a * stale context. schedule() turns it into READY only after the save. #define PROC_SWITCHING 5 /* ---- Limits ---- #define MAX_PROCS 64 #define PROC_KSTACK_SZ (16UL * 1024) /* ---- SMP limits ---- #define MAX_CPUS 8 #define BOOT_CPU 0 /* ---- Per-process saved registers (offsets must match ctx_sw.S) ----", "kind": "struct", "line": 28, "name": "ctx_regs_t"}, {"doc": "#define MAX_CPUS 8 #define BOOT_CPU 0 /* ---- Per-process saved registers (offsets must match ctx_sw.S) ---- typedef struct { uint64_t rax, rbx, rcx, rdx; uint64_t rsi, rdi, rbp; uint64_t r8, r9, r10, r11; uint64_t r12, r13, r14, r15; uint64_t rip, rsp, rflags; uint64_t cr3; } ctx_regs_t; /* ---- Process Control Block ----", "kind": "struct", "line": 38, "name": "proc_t"}, {"doc": "Per-CPU TSS selectors: slot 5 + 2*cpu in the runtime GDT (each TSS descriptor occupies two 8-byte slots). CPU 0 keeps selector 0x28, * exactly as before. #define TSS_SEL(cpu) ((uint16_t)((5 + 2 * (cpu)) * 8)) /* Exported IDTR for APs to load during SMP bring-up.", "kind": "type_alias", "line": 245, "name": "limit", "signature": "typedef struct __attribute__((packed)) { uint16_t limit;"}, {"doc": "Per-CPU TSS selectors: slot 5 + 2*cpu in the runtime GDT (each TSS descriptor occupies two 8-byte slots). CPU 0 keeps selector 0x28, * exactly as before. #define TSS_SEL(cpu) ((uint16_t)((5 + 2 * (cpu)) * 8)) /* Exported IDTR for APs to load during SMP bring-up.", "kind": "function", "line": 245, "name": "__attribute__", "signature": "typedef struct __attribute__((packed))"}, {"kind": "function", "line": 79, "name": "STR", "signature": "* Both immediates derive from these macros via STR();"}, {"kind": "function", "line": 179, "name": "volatile", "signature": "__asm__ volatile(\"mov %%gs:0, %0\" : \"=r\"(val));"}, {"doc": "Per-CPU TSS selectors: slot 5 + 2*cpu in the runtime GDT (each TSS descriptor occupies two 8-byte slots). CPU 0 keeps selector 0x28, * exactly as before. #define TSS_SEL(cpu) ((uint16_t)((5 + 2 * (cpu)) * 8)) /* Exported IDTR for APs to load during SMP bring-up. typedef struct __attribute__((packed)) { uint16_t limit; uint64_t base; } idtr_t; extern idtr_t bsp_idtr; /* ---- Functions ----", "kind": "function", "line": 249, "name": "sched_init", "signature": "void sched_init(void);"}, {"kind": "function", "line": 250, "name": "kstack_report", "signature": "void kstack_report(void);"}, {"kind": "function", "line": 251, "name": "tss_init_ap", "signature": "void tss_init_ap(int cpu);"}, {"kind": "function", "line": 252, "name": "smp_ap_idle_loop", "signature": "void smp_ap_idle_loop(void);"}, {"kind": "function", "line": 253, "name": "proc_create", "signature": "int proc_create(const char *name, int parent_pid);"}, {"kind": "function", "line": 254, "name": "proc_get", "signature": "proc_t *proc_get(int pid);"}, {"kind": "function", "line": 255, "name": "schedule", "signature": "void schedule(void);"}, {"kind": "function", "line": 256, "name": "sched_set_nice", "signature": "int sched_set_nice(int pid, int nice);"}, {"kind": "function", "line": 257, "name": "seccomp_deny_one", "signature": "int seccomp_deny_one(int pid, int n);"}, {"kind": "function", "line": 258, "name": "seccomp_allow_one", "signature": "int seccomp_allow_one(int pid, int n);"}, {"kind": "function", "line": 259, "name": "seccomp_denied", "signature": "int seccomp_denied(int pid, int n);"}, {"kind": "function", "line": 260, "name": "rlimit_cpu_exceeded", "signature": "int rlimit_cpu_exceeded(int pid);"}, {"kind": "function", "line": 261, "name": "rlimit_cpu_tick", "signature": "void rlimit_cpu_tick(int pid);"}, {"kind": "function", "line": 262, "name": "switch_to", "signature": "void switch_to(proc_t *prev, proc_t *next);"}, {"kind": "function", "line": 263, "name": "switch_to_notrap", "signature": "void switch_to_notrap(proc_t *prev, proc_t *next);"}, {"kind": "function", "line": 264, "name": "switch_save_only", "signature": "void switch_save_only(proc_t *prev);"}, {"kind": "function", "line": 265, "name": "resume_iretq", "signature": "void resume_iretq(void);"}, {"kind": "function", "line": 266, "name": "yield", "signature": "void yield(void);"}, {"kind": "function", "line": 267, "name": "do_exit", "signature": "void do_exit(int code);"}, {"kind": "function", "line": 268, "name": "do_clone", "signature": "long do_clone(long flags, long newsp);"}, {"kind": "function", "line": 269, "name": "do_thread_spawn", "signature": "long do_thread_spawn(unsigned long fn, unsigned long stack, unsigned long arg);"}, {"kind": "function", "line": 271, "name": "do_waitpid", "signature": "int do_waitpid(int pid);"}, {"kind": "function", "line": 272, "name": "do_waitpid_nb", "signature": "int do_waitpid_nb(int pid);"}, {"kind": "function", "line": 273, "name": "shell_reap_nb", "signature": "int shell_reap_nb(int *pid_out, int *code_out);"}, {"kind": "function", "line": 274, "name": "shell_reap_one", "signature": "int shell_reap_one(int pid, int *code_out);"}, {"kind": "function", "line": 275, "name": "shell_nchildren", "signature": "int shell_nchildren(void);"}, {"doc": "define WAITPID_NONE (-0x7FFF)", "kind": "function", "line": 277, "name": "do_kill", "signature": "int do_kill(int pid);"}, {"kind": "function", "line": 278, "name": "timer_tick", "signature": "void timer_tick(void);"}, {"doc": "void do_exit(int code); long do_clone(long flags, long newsp); long do_thread_spawn(unsigned long fn, unsigned long stack, unsigned long arg); int do_waitpid(int pid); int do_waitpid_nb(int pid); int shell_reap_nb(int *pid_out, int *code_out); int shell_reap_one(int pid, int *code_out); int shell_nchildren(void); #define WAITPID_NONE (-0x7FFF) int do_kill(int pid); void timer_tick(void); /* ---- Per-process page tables ----", "kind": "function", "line": 281, "name": "pt_clone_user", "signature": "uint64_t pt_clone_user(uint64_t parent_cr3);"}, {"kind": "function", "line": 282, "name": "pt_free_user", "signature": "void pt_free_user(uint64_t cr3);"}, {"kind": "function", "line": 287, "name": "caller", "signature": "* caller (shell mrun) reaps it with do_waitpid. Returns pid or -1. * Programs using mmap/VMA or expecting a shared fd table beyond * O_RDONLY stdin-style use are best-effort in this revision. */ int p"}, {"kind": "variable", "line": 169, "name": "cpus", "signature": "extern cpu_t cpus[MAX_CPUS];"}, {"kind": "variable", "line": 171, "name": "cpu_count", "signature": "extern int cpu_count;"}, {"doc": "Invariant: these structures are accessed by the BSP (boot processor) and will be accessed by APs (application processors) when SMP scheduling is enabled. All modifications must hold sched_lock. Per-CPU data (no lock needed): - cpu_t cpus[]: each CPU reads only its own entry via this_cpu() - GS base: set to &cpus[cpu_id] for kernel execution Shared data (protected by sched_lock): - procs[]: the process table - proc_count: the high-water mark of PIDs - scheduler state in schedule(), do_exit(), do_waitpid()", "kind": "variable", "line": 209, "name": "procs", "signature": "extern proc_t procs[MAX_PROCS];"}, {"kind": "variable", "line": 210, "name": "proc_count", "signature": "extern int proc_count;"}, {"kind": "variable", "line": 211, "name": "sys_ticks", "signature": "extern volatile uint64_t sys_ticks;"}, {"kind": "variable", "line": 212, "name": "user_program_active", "signature": "extern volatile int user_program_active;"}, {"kind": "variable", "line": 213, "name": "sched_lock", "signature": "extern spinlock_t sched_lock;"}, {"kind": "variable", "line": 214, "name": "sched_ready", "signature": "extern volatile int sched_ready;"}, {"doc": "APs (application processors) run CLONE_VM threads: same CR3 as their parent, so no brk/mmap view switch and no TLB shootdown is needed. Non-CLONE_VM processes stay on the BSP, which owns the shared g_brk/user_mmap_cur globals (guarded by mm_lock against concurrent brk/mmap syscalls from AP threads). Per-CPU idle contexts: an AP with no READY thread parks in ap_idle_proc[cpu] (pid -1, never in procs[], never picked by scans) instead of borrowing procs[0], which the BSP owns. current_pid == -1 on a CPU means that CPU is idle. smp_dispatches[cpu] counts threads first dispatched on that CPU; the `smp` shell builtin reports it, so parallel execution is observable * over the serial console without a framebuffer.", "kind": "variable", "line": 232, "name": "ap_idle_proc", "signature": "extern proc_t ap_idle_proc[MAX_CPUS];"}, {"kind": "variable", "line": 233, "name": "smp_dispatches", "signature": "extern volatile unsigned long smp_dispatches[MAX_CPUS];"}, {"kind": "variable", "line": 234, "name": "smp_idle_polls", "signature": "extern volatile unsigned long smp_idle_polls[MAX_CPUS];"}, {"doc": "Timer ticks that arrived with a GS base outside cpus[] (fail-safe * EOI, no scheduling action). Zero in a healthy boot.", "kind": "variable", "line": 237, "name": "smp_dbg_bad_gs", "signature": "extern volatile unsigned smp_dbg_bad_gs;"}, {"kind": "variable", "line": 246, "name": "bsp_idtr", "signature": "extern idtr_t bsp_idtr;"}, {"kind": "macro", "line": 2, "name": "SCHED_H", "signature": "#define SCHED_H"}, {"kind": "macro", "line": 9, "name": "PROC_FREE", "signature": "#define PROC_FREE"}, {"kind": "macro", "line": 10, "name": "PROC_READY", "signature": "#define PROC_READY"}, {"kind": "macro", "line": 11, "name": "PROC_RUNNING", "signature": "#define PROC_RUNNING"}, {"kind": "macro", "line": 12, "name": "PROC_BLOCKED", "signature": "#define PROC_BLOCKED"}, {"kind": "macro", "line": 13, "name": "PROC_ZOMBIE", "signature": "#define PROC_ZOMBIE"}, {"kind": "macro", "line": 17, "name": "PROC_SWITCHING", "signature": "#define PROC_SWITCHING"}, {"kind": "macro", "line": 20, "name": "MAX_PROCS", "signature": "#define MAX_PROCS"}, {"kind": "macro", "line": 21, "name": "PROC_KSTACK_SZ", "signature": "#define PROC_KSTACK_SZ"}, {"kind": "macro", "line": 24, "name": "MAX_CPUS", "signature": "#define MAX_CPUS"}, {"kind": "macro", "line": 25, "name": "BOOT_CPU", "signature": "#define BOOT_CPU"}, {"kind": "macro", "line": 84, "name": "PROC_T_SIZE", "signature": "#define PROC_T_SIZE"}, {"kind": "macro", "line": 85, "name": "PROC_KSTACK_OFF", "signature": "#define PROC_KSTACK_OFF"}, {"kind": "macro", "line": 90, "name": "PROC_FPU_OFF", "signature": "#define PROC_FPU_OFF"}, {"kind": "macro", "line": 92, "name": "FPU_SAVE_SZ", "signature": "#define FPU_SAVE_SZ"}, {"kind": "macro", "line": 93, "name": "FPU_MXCSR_OFF", "signature": "#define FPU_MXCSR_OFF"}, {"kind": "macro", "line": 94, "name": "FPU_MXCSR_DEFAULT", "signature": "#define FPU_MXCSR_DEFAULT"}, {"kind": "macro", "line": 98, "name": "SECCOMP_MIN", "signature": "#define SECCOMP_MIN"}, {"kind": "macro", "line": 99, "name": "SECCOMP_MAX", "signature": "#define SECCOMP_MAX"}, {"kind": "macro", "line": 100, "name": "SECCOMP_BIT", "signature": "#define SECCOMP_BIT(n)"}, {"kind": "macro", "line": 103, "name": "SECCOMP_OP_DENY_ONE", "signature": "#define SECCOMP_OP_DENY_ONE"}, {"kind": "macro", "line": 104, "name": "SECCOMP_OP_ALLOW_ONE", "signature": "#define SECCOMP_OP_ALLOW_ONE"}, {"kind": "macro", "line": 105, "name": "SECCOMP_OP_DENY_ALL", "signature": "#define SECCOMP_OP_DENY_ALL"}, {"kind": "macro", "line": 112, "name": "RLIM_OP_SET", "signature": "#define RLIM_OP_SET"}, {"kind": "macro", "line": 113, "name": "RLIM_OP_GET", "signature": "#define RLIM_OP_GET"}, {"kind": "macro", "line": 114, "name": "RLIM_AS", "signature": "#define RLIM_AS"}, {"kind": "macro", "line": 115, "name": "RLIM_CPU", "signature": "#define RLIM_CPU"}, {"kind": "macro", "line": 116, "name": "RLIM_NOFILE", "signature": "#define RLIM_NOFILE"}, {"kind": "macro", "line": 117, "name": "RLIM_EXIT_CPU", "signature": "#define RLIM_EXIT_CPU"}, {"kind": "macro", "line": 120, "name": "CLONE_VM", "signature": "#define CLONE_VM"}, {"kind": "macro", "line": 121, "name": "CLONE_FILES", "signature": "#define CLONE_FILES"}, {"kind": "macro", "line": 188, "name": "current_pid", "signature": "#define current_pid"}, {"kind": "macro", "line": 192, "name": "DESKTOP_TICK_INTERVAL", "signature": "#define DESKTOP_TICK_INTERVAL"}, {"kind": "macro", "line": 242, "name": "TSS_SEL", "signature": "#define TSS_SEL(cpu)"}, {"kind": "macro", "line": 276, "name": "WAITPID_NONE", "signature": "#define WAITPID_NONE"}]}, {"doc": "ifndef SHELL_H define SHELL_H shell.h -- shared shell constants and the line reader/parser reused by", "id": "shell.h", "kind": "module", "label": "shell.h", "language": "h", "sha256": "34dac90c2cfbb0d1", "symbol_count": 8, "symbols": [{"doc": "Read one line into buf with arrow-key editing; used by the built-in * editor to edit file text.", "kind": "function", "line": 17, "name": "shell_readline_buf", "signature": "void shell_readline_buf(char *buf, int size);"}, {"doc": "Read one line into buf with arrow-key editing; used by the built-in * editor to edit file text. void shell_readline_buf(char *buf, int size); /* Tokenize `line` into up to `max_args` argv entries; returns argc.", "kind": "function", "line": 20, "name": "shell_parse", "signature": "int shell_parse(char *line, char **argv, int max_args);"}, {"doc": "Raw console multiplexer backing the GETC_RAW syscall: the same serial + PS/2 sources the console reads, without line buffering, echo or the * scrollback detour. try returns -1 when idle; get blocks until a byte.", "kind": "function", "line": 25, "name": "console_raw_try", "signature": "int console_raw_try(void);"}, {"kind": "function", "line": 26, "name": "console_raw_get", "signature": "int console_raw_get(void);"}, {"doc": "Execute a shell script: read `path` line by line, skip blanks and `#` comments, parse each line and dispatch it through the normal builtin/ * program path. Returns 0 on success, 1 on file error.", "kind": "function", "line": 31, "name": "shell_cmd_sh", "signature": "int shell_cmd_sh(int argc, char **argv);"}, {"kind": "macro", "line": 2, "name": "SHELL_H", "signature": "#define SHELL_H"}, {"kind": "macro", "line": 11, "name": "CMD_BUF_SZ", "signature": "#define CMD_BUF_SZ"}, {"kind": "macro", "line": 13, "name": "MAX_ARGS", "signature": "#define MAX_ARGS"}]}, {"doc": "include \"kernel.h\" include \"bootdefs.h\" include \"smp.h\" include \"sched.h\" include \"ap_stub.h\" include \"arch/x86/msr.h\" SMP application-processor bring-up.", "id": "smp.c", "kind": "module", "label": "smp.c", "language": "c", "sha256": "01a5b3ddaa276138", "symbol_count": 48, "symbols": [{"kind": "function", "line": 83, "name": "lapic_read", "signature": "static unsigned lapic_read(unsigned off)"}, {"kind": "function", "line": 87, "name": "lapic_write", "signature": "static void lapic_write(unsigned off, unsigned val)"}, {"doc": "Map the LAPIC so the BSP can program the ICR, and the APs can read their id registers. Extends stage 2's tables: PDPT slot 3 gains a new PD whose * entry covers the LAPIC's 2 MB window as uncached. Returns 1 on success.", "kind": "function", "line": 108, "name": "map_lapic", "signature": "static int map_lapic(void)"}, {"kind": "function", "line": 120, "name": "ap_delay", "signature": "static void ap_delay(void)"}, {"kind": "function", "line": 149, "name": "lapic_calibrate", "signature": "static void lapic_calibrate(void)"}, {"doc": "ifdef MINIOS_AP_TIMER", "kind": "function", "line": 184, "name": "ap_lapic_timer_start", "signature": "static void ap_lapic_timer_start(void)"}, {"doc": "endif", "kind": "function", "line": 190, "name": "ap_lapic_timer_init", "signature": "static void ap_lapic_timer_init(void)"}, {"kind": "function", "line": 304, "name": "smp_init", "signature": "void smp_init(void)"}, {"doc": "Per-AP kernel stack for the idle loop entry (the 2 KB stub stack is * too shallow for the loop's C frames plus nested IPI ISRs). static char ap_idle_kstack[MAX_CPUS][8192] __attribute__((aligned(16))); /* The syscall trampoline lives in kernel.c (declared global there).", "kind": "function", "line": 82, "name": "syscall_entry", "signature": "extern void syscall_entry(void);"}, {"kind": "function", "line": 117, "name": "volatile", "signature": "__asm__ volatile(\"invlpg (%0)\" : : \"r\"(LAPIC_BASE) : \"memory\");"}, {"doc": "ap_count and the \"SMP: Brought up N CPUs\" banner. unsigned id = lapic_read(LAPIC_ID_OFF) >> 24; int cpu = __sync_fetch_and_add(&ap_count, 1) + 1; /* Initialize per-CPU cpu_t cpus[cpu].self = &cpus[cpu]; cpus[cpu].cpu_id = cpu; cpus[cpu].cur_pid = -1; cpus[cpu].is_bsp = 0; cpus[cpu].lapic_id = id; cpus[cpu].idle = 1; cpus[cpu].syscall_kstack = SYS_KSTK_TOP; /* Set GS base so this_cpu() works on this AP", "kind": "function", "line": 229, "name": "wrmsr", "signature": "wrmsr(MSR_GSBASE, (unsigned long)&cpus[cpu]);"}, {"kind": "function", "line": 238, "name": "BSP", "signature": "* were programmed only on the BSP (syscall_init runs in kmain), so * an AP's first sysretq loaded SS from a zeroed STAR (selector 0x08, * kernel code, as SS) and died with #SS. The values mirror * sys"}, {"doc": "EFER is per-CPU: ap_entry.S only sets LME, so the AP runs with EFER.NXE clear. Every user-window PTE carries the NX bit, and with NXE clear a set NX bit is RESERVED - any access to an NX page on the AP faults with a reserved-bit #PF. Enable NXE * to match the BSP's stage-2 setup. wrmsr(0xC0000080u, (unsigned long)(rdmsr(0xC0000080u) | EFER_NXE)); /* Load the BSP's IDTR (same IDT, kernel memory, identity-mapped) __asm__ volatile(\"lidt %0\" :: \"m\"(bsp_idtr)); /* Private TSS so ring-3 preempts on this AP land on its own stack.", "kind": "function", "line": 258, "name": "tss_init_ap", "signature": "tss_init_ap(cpu);"}, {"kind": "function", "line": 280, "name": "spin_lock_irqsave", "signature": "spin_lock_irqsave(&smp_lock, &flags);"}, {"kind": "function", "line": 282, "name": "spin_unlock_irqrestore", "signature": "spin_unlock_irqrestore(&smp_lock, flags);"}, {"kind": "function", "line": 299, "name": "smp_ap_idle_loop", "signature": "smp_ap_idle_loop();"}, {"doc": "Virtual-wire mode via the local APIC: with the LAPIC enabled, the PIC's INTR line only reaches the CPU through LINT0, so LINT0 must be programmed as ExtINT delivery. Without this the PIT (IRQ0) stops being delivered the moment the LAPIC is enabled and the * whole timer-driven kernel goes dead. LINT1 stays masked. lapic_write(LAPIC_LVT_LINT0, LAPIC_LVT_EXTINT); lapic_write(LAPIC_LVT_LINT1, LAPIC_LVT_MASKED); /* Copy the flat stub and patch in the C entry point's address.", "kind": "function", "line": 318, "name": "kmemcpy", "signature": "kmemcpy((void *)(unsigned long)AP_STUB_ADDR, ap_stub_blob, ap_stub_len);"}, {"kind": "function", "line": 323, "name": "INIT", "signature": "* INIT (edge-triggered): resets APs to wait-for-SIPI state. * QEMU 11 drops level-triggered INIT (delivery status never clears), * so edge-triggered is used. Two SIPIs deliver the startup vector. */ l"}, {"kind": "function", "line": 348, "name": "kprintf", "signature": "else kprintf(\"SMP: 1 CPU (APs not woken)\\n\");"}, {"kind": "function", "line": 355, "name": "smp_ipi_broadcast", "signature": "smp_ipi_broadcast(32);"}, {"kind": "macro", "line": 27, "name": "LAPIC_BASE", "signature": "#define LAPIC_BASE"}, {"kind": "macro", "line": 29, "name": "LAPIC_ID_OFF", "signature": "#define LAPIC_ID_OFF"}, {"kind": "macro", "line": 30, "name": "LAPIC_SVR_OFF", "signature": "#define LAPIC_SVR_OFF"}, {"kind": "macro", "line": 31, "name": "LAPIC_ICR_HI", "signature": "#define LAPIC_ICR_HI"}, {"kind": "macro", "line": 32, "name": "LAPIC_ICR_LO", "signature": "#define LAPIC_ICR_LO"}, {"kind": "macro", "line": 33, "name": "LAPIC_LVT_TIMER", "signature": "#define LAPIC_LVT_TIMER"}, {"kind": "macro", "line": 34, "name": "LAPIC_LVT_LINT0", "signature": "#define LAPIC_LVT_LINT0"}, {"kind": "macro", "line": 35, "name": "LAPIC_LVT_LINT1", "signature": "#define LAPIC_LVT_LINT1"}, {"kind": "macro", "line": 36, "name": "LAPIC_LVT_MASKED", "signature": "#define LAPIC_LVT_MASKED"}, {"kind": "macro", "line": 37, "name": "LAPIC_LVT_EXTINT", "signature": "#define LAPIC_LVT_EXTINT"}, {"kind": "macro", "line": 38, "name": "LAPIC_EOI_OFF", "signature": "#define LAPIC_EOI_OFF"}, {"kind": "macro", "line": 39, "name": "LAPIC_TIMER_DIV", "signature": "#define LAPIC_TIMER_DIV"}, {"kind": "macro", "line": 40, "name": "LAPIC_TIMER_INIT", "signature": "#define LAPIC_TIMER_INIT"}, {"kind": "macro", "line": 41, "name": "LAPIC_TIMER_CUR", "signature": "#define LAPIC_TIMER_CUR"}, {"kind": "macro", "line": 42, "name": "LAPIC_SVR_ENABLE", "signature": "#define LAPIC_SVR_ENABLE"}, {"kind": "macro", "line": 44, "name": "LAPIC_ICR_BUSY", "signature": "#define LAPIC_ICR_BUSY"}, {"kind": "macro", "line": 45, "name": "LAPIC_ICR_INIT", "signature": "#define LAPIC_ICR_INIT"}, {"kind": "macro", "line": 46, "name": "LAPIC_ICR_SIPI", "signature": "#define LAPIC_ICR_SIPI"}, {"kind": "macro", "line": 47, "name": "LAPIC_ICR_ALL_EXC", "signature": "#define LAPIC_ICR_ALL_EXC"}, {"kind": "macro", "line": 48, "name": "LAPIC_ICR_LEVEL", "signature": "#define LAPIC_ICR_LEVEL"}, {"kind": "macro", "line": 49, "name": "LAPIC_ICR_TRIGGER", "signature": "#define LAPIC_ICR_TRIGGER"}, {"kind": "macro", "line": 50, "name": "SIPI_VECTOR", "signature": "#define SIPI_VECTOR"}, {"kind": "macro", "line": 54, "name": "PIT_HZ", "signature": "#define PIT_HZ"}, {"kind": "macro", "line": 57, "name": "LAPIC_TIMER_DIVIDE_16", "signature": "#define LAPIC_TIMER_DIVIDE_16"}, {"kind": "macro", "line": 58, "name": "LAPIC_TIMER_PERIODIC", "signature": "#define LAPIC_TIMER_PERIODIC"}, {"kind": "macro", "line": 66, "name": "LAPIC_PD_ADDR", "signature": "#define LAPIC_PD_ADDR"}, {"kind": "macro", "line": 67, "name": "LAPIC_PDPT_SLOT", "signature": "#define LAPIC_PDPT_SLOT"}, {"kind": "macro", "line": 68, "name": "LAPIC_PD_IDX", "signature": "#define LAPIC_PD_IDX"}]}, {"doc": "ifndef SMP_H define SMP_H include \"spinlock.h\" SMP bring-up: wake the application processors (APs) via the LAPIC INIT/SIPI", "id": "smp.h", "kind": "module", "label": "smp.h", "language": "h", "sha256": "4f3024d140971f71", "symbol_count": 11, "symbols": [{"kind": "function", "line": 40, "name": "smp_init", "signature": "void smp_init(void);"}, {"kind": "function", "line": 42, "name": "smp_ap_entry", "signature": "void smp_ap_entry(void);"}, {"doc": "PIT-anchored LAPIC calibration (ticks per 10 ms at divide-by-16). Measured once by the BSP in smp_init; the AP periodic timer uses it when MINIOS_AP_TIMER is set. lapic_cal_valid is 0 on the fixed * 625000-tick fallback. extern unsigned lapic_cal_10ms; extern int lapic_cal_valid; void smp_init(void); void smp_ap_entry(void); /* entry point each AP jumps to from ap_entry.S", "kind": "function", "line": 43, "name": "smp_ipi_broadcast", "signature": "void smp_ipi_broadcast(int vector);"}, {"doc": "or handle syscalls, so the existing single-core system is untouched and the boot never depends on the APs (smp_init is fail-safe and returns immediately when the LAPIC cannot be reached). Per-CPU vs shared structures: Per-CPU (no lock needed): - LAPIC ID register (read-only per AP) - AP stack (each AP has its own stack from ap_entry.S) - hlt loop (each AP idles independently) Shared (protected by smp_lock): - ap_count: atomic counter incremented by each AP on startup - LAPIC ICR: only the BSP sends IPIs, so no contention - LAPIC SVR: only the BSP enables the APIC, so no contention", "kind": "variable", "line": 24, "name": "smp_lock", "signature": "extern spinlock_t smp_lock;"}, {"doc": "Read-back diagnostics written by the AP after its LAPIC setup; the `smp` builtin prints them so a dead AP's APIC state is visible over * the serial console.", "kind": "variable", "line": 30, "name": "smp_dbg_svr", "signature": "extern volatile unsigned smp_dbg_svr;"}, {"kind": "variable", "line": 31, "name": "smp_dbg_lvt", "signature": "extern volatile unsigned smp_dbg_lvt;"}, {"kind": "variable", "line": 32, "name": "smp_dbg_ipis", "signature": "extern volatile unsigned smp_dbg_ipis;"}, {"doc": "Read-back diagnostics written by the AP after its LAPIC setup; the `smp` builtin prints them so a dead AP's APIC state is visible over * the serial console. extern volatile unsigned smp_dbg_svr; extern volatile unsigned smp_dbg_lvt; extern volatile unsigned smp_dbg_ipis; /* vector-32 ISRs run on APs", "kind": "variable", "line": 33, "name": "smp_dbg_sent", "signature": "extern volatile unsigned smp_dbg_sent;"}, {"doc": "PIT-anchored LAPIC calibration (ticks per 10 ms at divide-by-16). Measured once by the BSP in smp_init; the AP periodic timer uses it when MINIOS_AP_TIMER is set. lapic_cal_valid is 0 on the fixed * 625000-tick fallback.", "kind": "variable", "line": 38, "name": "lapic_cal_10ms", "signature": "extern unsigned lapic_cal_10ms;"}, {"kind": "variable", "line": 39, "name": "lapic_cal_valid", "signature": "extern int lapic_cal_valid;"}, {"kind": "macro", "line": 2, "name": "SMP_H", "signature": "#define SMP_H"}]}, {"doc": "ifndef SPINLOCK_H define SPINLOCK_H spinlock.h -- Lightweight spinlock for MiniOS kernel.", "id": "spinlock.h", "kind": "module", "label": "spinlock.h", "language": "h", "sha256": "edc607b5165f3f78", "symbol_count": 22, "symbols": [{"kind": "struct", "line": 37, "name": "spinlock_t"}, {"kind": "type_alias", "line": 40, "name": "irqflags_t", "signature": "typedef unsigned long irqflags_t;"}, {"doc": "define SPINLOCK_INIT { .locked = 0 }", "kind": "function", "line": 44, "name": "spin_init", "signature": "static inline void spin_init(spinlock_t *lock)"}, {"doc": "Host unit-test variants (tests/test_sync.c, `make test-sync`): cli/sti and pushf/popf are privileged and fault in userspace, so the host build spins on the GCC atomics only and treats interrupt state as a dummy value. Kernel builds never define SYNC_HOST_TEST and always take the * real path in the #else branch below.", "kind": "function", "line": 55, "name": "spin_save_irq", "signature": "static inline irqflags_t spin_save_irq(void)"}, {"kind": "function", "line": 56, "name": "spin_restore_irq", "signature": "static inline void spin_restore_irq(irqflags_t flags)"}, {"kind": "function", "line": 57, "name": "spin_lock", "signature": "static inline void spin_lock(spinlock_t *lock)"}, {"kind": "function", "line": 62, "name": "spin_unlock", "signature": "static inline void spin_unlock(spinlock_t *lock)"}, {"kind": "function", "line": 66, "name": "spin_lock_irqsave", "signature": "static inline void spin_lock_irqsave(spinlock_t *lock, irqflags_t *flags)"}, {"kind": "function", "line": 72, "name": "spin_unlock_irqrestore", "signature": "static inline void spin_unlock_irqrestore(spinlock_t *lock, irqflags_t flags)"}, {"kind": "function", "line": 77, "name": "spin_unlock_keep_irq", "signature": "static inline void spin_unlock_keep_irq(spinlock_t *lock)"}, {"kind": "function", "line": 81, "name": "spin_trylock", "signature": "static inline int spin_trylock(spinlock_t *lock)"}, {"doc": "__sync_lock_release(&lock->locked); } static inline void spin_unlock_keep_irq(spinlock_t *lock) { __sync_synchronize(); __sync_lock_release(&lock->locked); } static inline int spin_trylock(spinlock_t *lock) { int was = __sync_lock_test_and_set(&lock->locked, 1); if (!was) __sync_synchronize(); return !was; } #else /* Read RFLAGS and disable interrupts.", "kind": "function", "line": 89, "name": "spin_save_irq", "signature": "static inline irqflags_t spin_save_irq(void)"}, {"doc": "int was = __sync_lock_test_and_set(&lock->locked, 1); if (!was) __sync_synchronize(); return !was; } #else /* Read RFLAGS and disable interrupts. static inline irqflags_t spin_save_irq(void) { irqflags_t flags; __asm__ volatile(\"pushfq; pop %0; cli\" : \"=r\"(flags)); return flags; } /* Restore RFLAGS (including IF) from a saved value.", "kind": "function", "line": 96, "name": "spin_restore_irq", "signature": "static inline void spin_restore_irq(irqflags_t flags)"}, {"doc": "Acquire the lock and disable interrupts. Interrupts are disabled before the CAS loop to prevent ISR re-entry. The memory clobber ensures the compiler does not reorder across the lock. * Use this from ISR context or when a single-level lock is sufficient.", "kind": "function", "line": 104, "name": "spin_lock", "signature": "static inline void spin_lock(spinlock_t *lock)"}, {"doc": "Release the lock and re-enable interrupts. The release uses __sync_lock_release which is a store-release with * the correct memory ordering.", "kind": "function", "line": 114, "name": "spin_unlock", "signature": "static inline void spin_unlock(spinlock_t *lock)"}, {"doc": "Release the lock WITHOUT touching interrupts (IF stays as-is). For context-switch paths: the lock was acquired with interrupts off and they must stay off across the switch, because a timer tick landing between the release and switch_to would park the half-switched state over the incoming thread's ctx. The incoming * context's own rflags decide IF after the switch.", "kind": "function", "line": 126, "name": "spin_unlock_keep_irq", "signature": "static inline void spin_unlock_keep_irq(spinlock_t *lock)"}, {"doc": "Release the lock and restore the saved interrupt state. If the caller's interrupts were enabled before spin_lock_irqsave, * they are re-enabled here. If they were disabled, they stay disabled.", "kind": "function", "line": 145, "name": "spin_unlock_irqrestore", "signature": "static inline void spin_unlock_irqrestore(spinlock_t *lock, irqflags_t flags)"}, {"kind": "function", "line": 60, "name": "__sync_synchronize", "signature": "__sync_synchronize();"}, {"kind": "function", "line": 64, "name": "__sync_lock_release", "signature": "__sync_lock_release(&lock->locked);"}, {"kind": "function", "line": 105, "name": "volatile", "signature": "__asm__ volatile(\"cli\");"}, {"kind": "macro", "line": 2, "name": "SPINLOCK_H", "signature": "#define SPINLOCK_H"}, {"kind": "macro", "line": 42, "name": "SPINLOCK_INIT", "signature": "#define SPINLOCK_INIT"}]}, {"doc": "ifndef SYNC_H define SYNC_H sync.h -- Blocking synchronization primitives (roadmap Phase 3.1).", "id": "sync.h", "kind": "module", "label": "sync.h", "language": "h", "sha256": "056f39415a6ba864", "symbol_count": 36, "symbols": [{"doc": "wait-queue linkage: procs chain through proc_t.wq_next, WQ_NONE ends the chain and marks an empty queue. PIDs start at 1 (sched.c), so a * zeroed proc_t never aliases a queued entry. #define WQ_NONE (-1) /* ---- Wait queues ----", "kind": "struct", "line": 42, "name": "wait_queue_t"}, {"doc": "--- Mutex (blocking, non-recursive) ---- Priority inheritance (thesis correction 3): a low-priority holder that blocks a high-priority waiter is boosted to the waiter's effective priority, transitively along the blocked-on chain, until it releases. pi_set_base assigns a thread's base priority (default 0); pi_get_eff reports the boosted value the scheduler must honor. State lives in sync.c parallel arrays: proc_t is 248 bytes by asm contract (sched.c * asserts it, syscall_entry hardcodes it), so no field can be added.", "kind": "struct", "line": 63, "name": "mutex_t"}, {"doc": "wait_queue_t waiters; } mutex_t; #define MUTEX_INIT { SPINLOCK_INIT, 0, WQ_NONE, WAIT_QUEUE_INIT } void mutex_init(mutex_t *m); void mutex_lock(mutex_t *m); void mutex_unlock(mutex_t *m); int mutex_trylock(mutex_t *m); void mutex_note_waiter(mutex_t *m, int waiter); void pi_set_base(int pid, int prio); int pi_get_eff(int pid); /* ---- Counting semaphore ----", "kind": "struct", "line": 81, "name": "sem_t"}, {"doc": "--- Condition variable ---- Always paired with a mutex: cond_wait atomically releases the mutex, sleeps, and re-acquires it before returning (Mesa semantics: re-check * the predicate in a loop).", "kind": "struct", "line": 97, "name": "cond_t"}, {"doc": "sleeps, and re-acquires it before returning (Mesa semantics: re-check * the predicate in a loop). typedef struct { wait_queue_t waiters; } cond_t; #define COND_INIT { WAIT_QUEUE_INIT } void cond_init(cond_t *c); void cond_wait(cond_t *c, mutex_t *m); void cond_signal(cond_t *c); void cond_broadcast(cond_t *c); /* ---- Read-write lock (writer-preferring, no recursion) ----", "kind": "struct", "line": 109, "name": "rwlock_t"}, {"doc": "define WAIT_QUEUE_INIT { SPINLOCK_INIT, WQ_NONE, WQ_NONE }", "kind": "function", "line": 49, "name": "wq_init", "signature": "void wq_init(wait_queue_t *q);"}, {"kind": "function", "line": 51, "name": "sleep_on", "signature": "void sleep_on(wait_queue_t *q);"}, {"kind": "function", "line": 52, "name": "wake_up", "signature": "int wake_up(wait_queue_t *q);"}, {"kind": "function", "line": 53, "name": "wake_up_all", "signature": "int wake_up_all(wait_queue_t *q);"}, {"kind": "function", "line": 56, "name": "inheritance", "signature": "* Priority inheritance (thesis correction 3): a low-priority holder that * blocks a high-priority waiter is boosted to the waiter's effective * priority, transitively along the blocked-on chain, until"}, {"doc": "define MUTEX_INIT { SPINLOCK_INIT, 0, WQ_NONE, WAIT_QUEUE_INIT }", "kind": "function", "line": 71, "name": "mutex_init", "signature": "void mutex_init(mutex_t *m);"}, {"kind": "function", "line": 73, "name": "mutex_lock", "signature": "void mutex_lock(mutex_t *m);"}, {"kind": "function", "line": 74, "name": "mutex_unlock", "signature": "void mutex_unlock(mutex_t *m);"}, {"kind": "function", "line": 75, "name": "mutex_trylock", "signature": "int mutex_trylock(mutex_t *m);"}, {"kind": "function", "line": 76, "name": "mutex_note_waiter", "signature": "void mutex_note_waiter(mutex_t *m, int waiter);"}, {"kind": "function", "line": 77, "name": "pi_set_base", "signature": "void pi_set_base(int pid, int prio);"}, {"kind": "function", "line": 78, "name": "pi_get_eff", "signature": "int pi_get_eff(int pid);"}, {"doc": "define SEM_INIT(n) { SPINLOCK_INIT, (n), WAIT_QUEUE_INIT }", "kind": "function", "line": 88, "name": "sem_init", "signature": "void sem_init(sem_t *s, int value);"}, {"kind": "function", "line": 90, "name": "sem_wait", "signature": "void sem_wait(sem_t *s);"}, {"kind": "function", "line": 91, "name": "sem_post", "signature": "void sem_post(sem_t *s);"}, {"doc": "define COND_INIT { WAIT_QUEUE_INIT }", "kind": "function", "line": 102, "name": "cond_init", "signature": "void cond_init(cond_t *c);"}, {"kind": "function", "line": 104, "name": "cond_wait", "signature": "void cond_wait(cond_t *c, mutex_t *m);"}, {"kind": "function", "line": 105, "name": "cond_signal", "signature": "void cond_signal(cond_t *c);"}, {"kind": "function", "line": 106, "name": "cond_broadcast", "signature": "void cond_broadcast(cond_t *c);"}, {"doc": "define RWLOCK_INIT { SPINLOCK_INIT, 0, 0, WAIT_QUEUE_INIT }", "kind": "function", "line": 117, "name": "rwlock_init", "signature": "void rwlock_init(rwlock_t *rw);"}, {"kind": "function", "line": 119, "name": "rwlock_read_lock", "signature": "void rwlock_read_lock(rwlock_t *rw);"}, {"kind": "function", "line": 120, "name": "rwlock_read_unlock", "signature": "void rwlock_read_unlock(rwlock_t *rw);"}, {"kind": "function", "line": 121, "name": "rwlock_write_lock", "signature": "void rwlock_write_lock(rwlock_t *rw);"}, {"kind": "function", "line": 122, "name": "rwlock_write_unlock", "signature": "void rwlock_write_unlock(rwlock_t *rw);"}, {"kind": "macro", "line": 2, "name": "SYNC_H", "signature": "#define SYNC_H"}, {"kind": "macro", "line": 39, "name": "WQ_NONE", "signature": "#define WQ_NONE"}, {"kind": "macro", "line": 47, "name": "WAIT_QUEUE_INIT", "signature": "#define WAIT_QUEUE_INIT"}, {"kind": "macro", "line": 69, "name": "MUTEX_INIT", "signature": "#define MUTEX_INIT"}, {"kind": "macro", "line": 86, "name": "SEM_INIT", "signature": "#define SEM_INIT(n)"}, {"kind": "macro", "line": 100, "name": "COND_INIT", "signature": "#define COND_INIT"}, {"kind": "macro", "line": 115, "name": "RWLOCK_INIT", "signature": "#define RWLOCK_INIT"}]}, {"doc": "BDD suite for MiniOS: boots the disk image in QEMU and drives the shell over the serial console (COM1). Every scenario sends a script of shell commands, then asserts that the expected markers appear in the console log. The guest powers itself off through the ACPI port at the end of each scenario, which makes QEMU exit; the timeout is only a safety net for hangs. A stale-qemu guard prevents image-lock cascades between runs. Environment overrides: QEMU, TMO (per-scenario timeout), KEEP_LOG=1 to keep the console log of the last scenario for inspection.", "id": "test_bdd.sh", "kind": "module", "label": "test_bdd.sh", "language": "sh", "sha256": "94ede10465c4ff84", "symbol_count": 11, "symbols": [{"doc": "MATCH filter: skip scenarios whose name lacks the substring (and make the following expects no-ops so a skipped boot can't fail on a stale log).", "kind": "function", "line": 35, "name": "should_run"}, {"kind": "function", "line": 43, "name": "cleanup_stale_qemu"}, {"doc": "scenario